# HG changeset patch # User Pat Downey # Date 1283340900 -3600 # Node ID 012cc2ee64085442b0673a3dfd2a3a6c7127e562 # Parent f92a4f87e424e4b6e2e75082776c2dcaf530168a Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035 diff -r f92a4f87e424 -r 012cc2ee6408 layers.sysdef.xml --- a/layers.sysdef.xml Tue Aug 31 17:01:47 2010 +0300 +++ b/layers.sysdef.xml Wed Sep 01 12:35:00 2010 +0100 @@ -7,11 +7,11 @@ - + - - + + diff -r f92a4f87e424 -r 012cc2ee6408 package_definition.xml --- a/package_definition.xml Tue Aug 31 17:01:47 2010 +0300 +++ b/package_definition.xml Wed Sep 01 12:35:00 2010 +0100 @@ -1,29 +1,27 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + diff -r f92a4f87e424 -r 012cc2ee6408 package_map.xml --- a/package_map.xml Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ - diff -r f92a4f87e424 -r 012cc2ee6408 usb_plat/group/bld.inf --- a/usb_plat/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ b/usb_plat/group/bld.inf Wed Sep 01 12:35:00 2010 +0100 @@ -15,7 +15,6 @@ * */ -#include "../usb_shai_api/group/bld.inf" PRJ_PLATFORMS DEFAULT diff -r f92a4f87e424 -r 012cc2ee6408 usb_plat/group/usb_plat.mrp --- a/usb_plat/group/usb_plat.mrp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -# 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: -# -# -component usb_plat - -source \sf\os\usb\usb_plat\group - -binary \sf\os\usb\usb_plat\group all - -exports \sf\os\usb\usb_plat\group - -notes_source \component_defs\release.src - -ipr E diff -r f92a4f87e424 -r 012cc2ee6408 usb_plat/usb_shai_api/group/bld.inf --- a/usb_plat/usb_shai_api/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* -* Copyright (c) 2007 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: Build information file -* -*/ - -#include - -PRJ_PLATFORMS -ARMV5 - -PRJ_EXPORTS - - -../inc/usb_common_shai.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/) -../inc/usb_host_shai.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/) -../inc/usb_otg_shai.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/) -../inc/usb_peripheral_shai.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/) -../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/) diff -r f92a4f87e424 -r 012cc2ee6408 usb_plat/usb_shai_api/inc/usb_charger_detection_shai.h --- a/usb_plat/usb_shai_api/inc/usb_charger_detection_shai.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,403 +0,0 @@ -/* -* 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 header - @version 0.2.0 - - This header specifies the USB Charger Detection SHAI. - - @publishedDeviceAbstraction -*/ - - -#ifndef USB_CHARGER_DETECTION_SHAI_H -#define USB_CHARGER_DETECTION_SHAI_H - -// System includes -#include - -/** - * This macro specifies the version of the USB Charger Detection SHAI - * header in binary coded decimal format. This allows the PSL layer to - * confirm a certain definition is available, if needed. This can for - * example make it possible for a new PSL to support compilation in an - * older environment with old USB SHAI version that is missing some - * new definitions. - */ -#define USB_CHARGER_DETECTION_SHAI_VERSION 0x020 - -// 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 - - /** - * An interface class implemented by the PIL layer to allow the - * Charger Detector PSL to report charger detection events to the - * PIL layer. - */ - NONSHARABLE_CLASS( MChargerDetectorObserverIf ) - { - public: - /** - * Called by the Charger Detector PSL to report the detection - * of a specified type of a port. - * - * When the PIL layer has registered itself as the observer of - * the Charger Detector PSL, it is the responsibility of the - * Charger Detector PSL to run the charger detection algorithm - * when applicable. These situations include: - * - * 1. When VBUS has risen while our device is the B-device. A - * Charger Detector PSL that supports Data Contact Detect - * (see Battery Charging Specification 1.1, Section 3.3) - * should complete Data Contact Detect and the charger - * detection algorithm before notifying the VBUS rising - * event to the respective PIL layer. - * - * For a peripheral-only port, this requirement is - * documented in more detail in usb_peripheral_shai.h, - * function - * MUsbPeripheralPilCallbackIf::DeviceEventNotification(). For - * an OTG-capable port, the requirement is documented in - * usb_otg_shai.h, function - * MOtgObserverIf::NotifyVbusState(). - * - * 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 - * to Accessory Charger Adapter. This requirement is - * documented in more detail in usb_otg_shai.h, function - * MOtgObserverIf::NotifyIdPinState(). - * - * @param aPortType The type of the port detected - */ - virtual void NotifyPortType( TPortType aPortType ) = 0; - }; - - - /** - * An interface class that needs to be implemented by the Charger - * Detector PSL that registers to the PIL layer. - * - * A system that does not support USB Battery Charging does not - * need a Charger Detector PSL. In this case the PIL layer will - * always assume the device is connected to a Standard Downstream - * Port and will always connect to the bus when VBUS rises. - * - * Due to the dependencies between normal USB functionality - * (observing the state of the ID pin, the VBUS level, the line - * state, and controlling connecting to the bus) and USB Battery - * Charging (in terms of charger detection and requirements about - * connecting to the bus and driving VBUS), the Charger Detector - * PSL cannot be considered independent of the USB Controller - * PSLs. - * - * In practice, it is expected that the Charger Detector interface - * for a peripheral-only port is implemented by the Peripheral - * 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, - * MUsbPeripheralPilCallbackIf::DeviceEventNotification() for - * description of the requirements. - * - * 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. - * - * When the PIL layer is ready to receive charger detection - * notifications from the PSL, it will use this interface to - * register itself as the Charger Detector PSL observer. This is - * guaranteed to occur before any USB usage is attempted. - */ - NONSHARABLE_CLASS( MChargerDetectorIf ) - { - public: - /** - * Called by the PIL layer to set itself as the observer of - * charger detection events. - * - * If the port type has already been detected by the Charger - * Detector PSL when the observer is being set (typically - * because VBUS was already high at boot time), it is the - * responsibility of the Charger Detector PSL to immediately - * report the previously detected port type to the observer to - * get the PIL layer to the correct state. - * - * @param aObserver Reference to the observer interface that - * the charger detector is required to report events to - */ - virtual void SetChargerDetectorObserver( MChargerDetectorObserverIf& aObserver ) = 0; - }; - - - /** - * 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. - */ - NONSHARABLE_CLASS( UsbChargerDetectionPil ) - { - public: - /** - * Registration function to be used by the USB PSL layer to - * register a charger detector component to the PIL layer. The - * PIL layer will set itself as the observer of the charger - * detector component to receive notification of detected USB - * chargers. - * - * The intended usage is that the component that implements - * USB charger detection registers itself to the USB PIL layer - * by making this call from their own kernel extension entry - * point function (or an equivalent code that runs during - * bootup). - * - * @param aChargerDetector Reference to the Charger Detector - * interface implemented by the registering PSL. - * - * @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. - * - * @lib usbperipheralpil.lib - */ - IMPORT_C static void RegisterChargerDetector( MChargerDetectorIf& aChargerDetector, - TChargerDetectorProperties& aProperties ); - }; - }; - -#endif //USB_CHARGER_DETECTION_SHAI_H -// END of file - diff -r f92a4f87e424 -r 012cc2ee6408 usb_plat/usb_shai_api/inc/usb_common_shai.h --- a/usb_plat/usb_shai_api/inc/usb_common_shai.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -/* -* 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 SHAI header for common types and constants - @version 0.2.0 - - This header specifies common types and constants used by both the - peripheral and host/OTG USB SHAIs. It is automatically included by - the USB Host and Peripheral SHAI headers and is not intended to be - directly included by SHAI implementations. - - The file is versioned for the sake of the human reader, but a - compile-time constant to show the header version is not available, - as this header is not intended to be directly included by PSL - implementations. If a change in this header impacts the overall - USB SHAI interface (i.e. change other than documentation - improvements), the version of the impacted interfaces (USB Host - SHAI, USB OTG SHAI, and/or USB Peripheral SHAI) shall too be - changed to make the change visible to the PSL. - - @publishedDeviceAbstraction -*/ - - -#ifndef USB_COMMON_SHAI_H -#define USB_COMMON_SHAI_H - -// System includes -#include - -/** - * @brief USB SHAI types and interfaces - * - * This namespace holds all USB SHAI related types, constants, - * classes, and functions. - */ -namespace UsbShai - { - // Data types - - /** - * Enumeration specifying the available USB endpoint types. - */ - enum TEndpointType - { - /** Endpoint type is control */ - EEpTypeControl = 0, - - /** Endpoint type is bulk */ - EEpTypeBulk, - - /** Endpoint type is interrupt */ - EEpTypeInterrupt, - - /** Endpoint type is isochronous */ - EEpTypeIsochronous - }; - - /** - * Enumeration specifying the available USB speeds. - */ - enum TSpeed - { - /** The bus operates in low speed mode */ - ELowSpeed = 0, - - /** The bus operates in full speed mode */ - EFullSpeed, - - /** The bus operates in high speed mode */ - EHighSpeed - }; - }; - -#endif // USB_COMMON_SHAI_H - -/* End of File */ diff -r f92a4f87e424 -r 012cc2ee6408 usb_plat/usb_shai_api/inc/usb_host_shai.h --- a/usb_plat/usb_shai_api/inc/usb_host_shai.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1290 +0,0 @@ -/* -* 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 Host SHAI header - @version 0.2.0 - - This header specifies the USB host SHAI. - - @publishedDeviceAbstraction -*/ - - -#ifndef USB_HOST_SHAI_H -#define USB_HOST_SHAI_H - -// System includes -#include -#include // Common types shared between the USB SHAIs - -/** - * This macro specifies the version of the USB Host SHAI header in - * binary coded decimal format. This allows the PSL layer to confirm a - * certain definition is available, if needed. This can for example - * make it possible for a new PSL to support compilation in an older - * environment with old USB SHAI version that is missing some new - * definitions. - */ -#define USB_HOST_SHAI_VERSION 0x020 - -// The namespace is documented in file usb_common_shai.h, so it is not -// repeated here -namespace UsbShai - { - // Forward declarations - - class MHostControllerIf; - class MHostTransferCallbackIf; - class MRootHubCallbackIf; - class MRootHubIf; - - // 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). - * - * @see MHostControllerIf::EnterHostTestMode() - */ - enum THostTestMode - { - /** - * Drive SE0 until host controller is reset. The call returns - * immediately after enabling the test mode. - */ - ETestModeTestSE0NAK = 0, - - /** - * Drive high-speed J until host controller is reset. The call - * returns immediately after enabling the test mode. - */ - ETestModeTestJ, - - /** - * Drive high-speed K until host controller is reset. The call - * returns immediately after enabling the test mode. - */ - ETestModeTestK, - - /** - * Send test packets until 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 - }; - - - // Class declaration - - /** - * This class specifies a memory block that is used for USB - * transfers. The memory pointers and the buffer length are filled - * by the USB Host stack before issuing the transfer to the Host - * Controller PSL. - */ - NONSHARABLE_CLASS( TUsbMemoryBlock ) - { - public: - /** - * Linear (virtual) start address of the memory buffer. This - * address is always provided. - */ - TLinAddr iLinAddr; - - /** - * Physical start address of the memory buffer. This address - * is always provided, but it is the responsibility of the - * Host Controller PSL to guarantee that the memory is - * physically contiguous, if contiguous memory is needed. The - * PSL can guarantee this by implementing - * MHostControllerIf::ChunkCreate() to allocate physically - * contiguous memory. - * - * @see MHostControllerIf::ChunkCreate() - */ - TPhysAddr iPhysAddr; - - /** - * Pointer to an array of physical addresses each pointing to - * one physical page of the memory block. This address is - * always provided. - * - * The size of each page matches the size reported in - * THostControllerProperties::iControllerPageSize by the Host - * Controller PSL when it registered to the PIL. - */ - TPhysAddr* iPhysPages; - - /** The length of the memory buffer in bytes */ - TUint iLength; - }; - - - /** - * This class specifies the enumerated types for different endpoint - * configuration items and specifies the structure of the endpoint - * configuration. Instances of this class are used to specify the - * endpoint information when opening a pipe. - * - * @see MHostControllerIf::OpenPipe() - */ - NONSHARABLE_CLASS( THostPipe ) - { - public: - // 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 - - /** - * This flag specifies whether the targeted endpoint is behind - * a hub that is performing transaction translation. This - * occurs when the attached device is a low/full-speed device - * attached to a high-speed hub. - * - * When this flag is set, the iHubAddr and iHubPort members - * specify the hub address and the port to which the targeted - * device is connected, and the iEndpointFlags flag - * KHubHasMultipleTTs specifies whether the hub has been - * configured to use multiple transaction translators. - */ - static const TUint32 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; - - public: // Data - /** - * The type of the endpoint (control, bulk, interrupt, - * isochronous) - */ - TEndpointType iType; - - /** Maximum packet size to be used on this endpoint */ - TUint iMaxPacketSize; - - /** Flags specifying some boolean parameters of the endpoint */ - TUint32 iEndpointFlags; - - /** - * The speed (low, full, high) to use for this endpoint. This - * may differ from the current speed of the local port if the - * targeted device is a low-speed or full-speed device - * connected to a high-speed hub. - */ - TSpeed iSpeed; - - /** - * The polling interval specified as number of frames or - * microframes, depending on the speed. This is used for - * interrupt and isochronous endpoints only. - */ - TUint iPollingInterval; - - /** - * The USB address of the remote device that we are - * communicating with - */ - TUint8 iRemoteAddr; - - /** - * The remote endpoint number that we are communicating - * with. This is the physical endpoint number in the USB 2.0 - * descriptor format, i.e. the most significant bit indicates - * the direction (1 for IN, 0 for OUT), and the least - * significant bits indicate the endpoint number. - */ - TUint8 iRemoteEpNum; - - /** - * For cases where the attached device is a low/full-speed - * device attached to a high-speed hub that does the necessary - * transaction translation, this member records the address of - * the hub doing the translation. - */ - TUint8 iHubAddr; - - /** - * For cases where the attached device is a low/full-speed - * device attached to a high-speed hub that does the necessary - * transaction translation, this member records the number of - * the port where the device is connected on the hub that does - * the transaction translation. - */ - TUint8 iHubPort; - }; - - - /** - * This class specifies the structure of the endpoint transfer - * requests. The USB Host Stack passes the Host Controller PSL a - * reference to an object of this class when setting up a new transfer - * with MHostPipeIf::StartTransfer(). - */ - NONSHARABLE_CLASS( THostTransfer ) - { - public: - // 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 bit is set or cleared by the USB Host stack before - * issuing a new transfer. - */ - static const TUint32 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. - * - * 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; - - /** - * For IN endpoint transfers, indicates whether the transfer - * was terminated with a ZLP (Zero-Length Packet). - * - * 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. - */ - static const TUint32 KInZlpReceived = 0x00000004; - - /** - * Enumeration specifying the packet status values to be used - * for isochronous transfers. - */ - enum TIsocPacketStatus - { - /** No error has occurred, transfer succesful */ - ESuccess = 0, - - /** - * Data error has occurred in a data transfer, i.e. the - * CRC did not match - */ - EDataError, - - /** Overrun has occurred */ - EOverrun, - - /** Underrun has occurred */ - EUnderrun, - }; - - public: // Data - /** - * Pointer to the information of the pipe that this transfer - * is being made on. This is the same information that was - * used when opening the pipe that the transfer is being made - * on. - */ - THostPipe* iPipeInfo; - - /** - * A pointer to the callback interface to be used for - * indicating the completion of the transfer. This is set by - * the USB Host Stack before making a transfer request. - */ - MHostTransferCallbackIf* iTransferCbIf; - - /** - * Request flags specifying some boolean parameters for the - * transfer. - */ - TUint32 iRequestFlags; - - /** - * Memory block specifying the memory buffer used for the data - * transfer. This is filled by the USB Host Stack before - * making a transfer request. - * - * The memory block used here will be part of a chunk - * previously created by a call to - * MHostControllerIf::ChunkCreate() and the block will - * fullfill the alignment requirements reported by the call to - * MHostControllerIf::GetSizeAndAlignment(). - * - * For control transfers, this specifies the buffer for the - * data stage and has zero length and NULL pointers if the - * transaction does not include a data stage. - */ - TUsbMemoryBlock iDataBuffer; - - /** - * For control transfers, this memory block specifies the - * contents of the setup packet to be sent. For other than - * control transfers, it is not used, and it has zero length - * and NULL pointers. - */ - TUsbMemoryBlock iSetupBuffer; - - /** - * For isochronous transfers, this sets the number of - * isochronous packets to send/receive. This is set by the - * USB Host Stack before making a transfer request. - */ - TInt iNumIsocPackets; - - /** - * The number of bytes successfully transferred during the - * data transfer. This is set by the Host Controller PSL - * before completing the transfer. - */ - TUint iTransferLength; - - /** - * The status code of a completed transfer. This is set by the - * Host Controller PSL before completing the request to the - * transfer callback interface. - */ - TInt iStatus; - - /** - * For isochronous transfers, a pointer to an array of - * iNumIsoPackets entries that specify the length of each - * packet in the transfer. For OUT transfers, the array is - * filled by the USB Host Stack and is read by the Host - * Controller PSL to decide the length for each packet. For IN - * transfers, the array is filled by the Host Controller PSL - * to record to length of each received packet. - */ - TUint16* iIsocPacketLengths; - - /** - * For isochronous transfers, a pointer to an array of - * iNumIsoPackets entries that specify the status of each - * packet in the transfer. The array is filled by the Host - * Controller PSL to record to success or failure of each - * received packet. - */ - TIsocPacketStatus* iIsocPacketStatuses; - }; - - - /** - * This class specifies the structure and contents of root hub - * information that is filled by the adaptation to let the USB Host - * Stack hub driver learn the capabilities of the root hub. - * - * @see MHostControllerIf::OpenRootHub - */ - NONSHARABLE_CLASS( TRootHubInfo ) - { - public: // Types and constants - /** - * A bitmask type used to indicate the static capabilities of - * the root hub. - */ - typedef TUint32 TRootHubCaps; - - /** - * Capability bit to indicate whether the root hub supports - * user-visible port indications such as LEDs. - * - * If the root hub 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 TRootHubCaps KRootHubCapPortIndication = 0x00000001; - - public: // Data - /** - * A bitmask specifying the static capabilities of this root - * hub. The PSL fills this field by bitwise OR'ing the - * TRootHubCaps capability bits corresponding to supported - * features. - */ - TRootHubCaps iCapabilities; - - /** Number of ports in this root hub */ - TUint iNumberOfPorts; - - /** - * Maximum number of milliamps of current that this root hub - * can supply to VBUS. - */ - TUint iMaxSuppliedVbusCurrentMA; - - /** - * Time taken by this root hub between starting to power up a - * port and power being good on that port. This is expressed - * in units of one millisecond. - */ - TUint iTimePowerOnToPowerGoodMs; - - /** - * The maximum speed supported by the root hub. - */ - TSpeed iMaxSpeed; - - /** Pointer to the root hub interface */ - MRootHubIf* iRootHubIf; - }; - - - /** - * An interface class used by the USB Host Stack to perform data - * transfers on a USB pipe. The Host Controller PSL must implement - * this interface and provide a pointer to a pipe-specific - * instance when the USB Host Stack creates the pipe by calling - * MHostControllerIf::OpenPipe(). - * - * The USB Host Stack will call the functions of this interface - * from a DFC queued on the DFC queue supplied by the Host - * Controller in THostControllerProperties::iControllerDfcQueue when the - * Host Controller PSL registered. - * - * @see MHostControllerIf::OpenPipe() - */ - NONSHARABLE_CLASS( MHostPipeIf ) - { - public: - /** - * Close the USB pipe. This is called by the USB Host Stack - * when the pipe is no longer used and the Host Controller PSL - * may release any resources that were allocated for this - * instance, including deleting the object itself. - * - * @param aPipeInfo Information describing the target endpoint - * of the pipe. This is the same information passed to - * MHostControllerIf::OpenPipe() when creating the - * pipe. - * - * @post After calling the function, the USB Host stack will - * consider the invoked instance to have been deleted and will - * no longer call any of the functions. - */ - virtual void ClosePipeD( const THostPipe& aPipeInfo ) = 0; - - /** - * Clear the data toggle bit of this pipe. This is used for - * interrupt and bulk pipes when the host stack needs to - * guarantee that the host controller will start the next - * interrupt or bulk transfer with data toggle value zero. - * - * @param aPipeInfo Information describing the target endpoint - * of the pipe. This is the same information passed to - * MHostControllerIf::OpenPipe() when creating the - * pipe. - */ - virtual void ClearDataToggle( const THostPipe& aPipeInfo ) = 0; - - /** - * Start a transfer on this pipe. - * - * When the transfer is considered completed, the Host - * Controller PSL must update the transfer information object - * with the actual length and status of the transfer and then - * complete it to the callback interface by calling - * MHostTransferCallbackIf::CompleteTransfer(). The pointer to - * the callback interface is provided in the member - * THostTransfer::iTransferCbIf of the supplied aTransferInfo. - * - * The following rules shall be used by the Host Controller - * PSL to assess the completeness of a transfer: - * - * 1. A read or write transfer on a control pipe is completed - * when all the stages (two or three) of the control transfer - * have been completed successfully, or when an error - * occurs. It is the responsibility of the upper layers to - * guarantee that there is sufficient buffer space for a read - * request, so the buffer should not run out. - * - * 2. A read or write transfer on an isochronous pipe is - * completed when the number of isochronous packets specified - * in the member THostTransfer::iNumIsocPackets of the - * supplied aTransferInfo have been sent or received - * successfully, or if a fatal error occurs. It is the - * responsibility of the upper layers to guarantee that there - * is sufficient buffer space for a read request, so the - * buffer should not run out. - * - * 3. A read transfer on a bulk or interrupt pipe is completed - * when the buffer space is exhausted, a short packet (a - * packet smaller than the maximum packet size of the pipe) is - * received, or an error occurs. - * - * 4. A write transfer on a bulk or interrupt pipe is - * completed when the requested buffer has been fully sent, or - * an error occurs. - * - * @param aTransferInfo Information specifying the transfer to perform - * - * @return KErrNone if the transfer was started successfully, - * otherwise a system-wide error code - */ - virtual TInt StartTransfer( THostTransfer& aTransferInfo ) = 0; - - /** - * Cancel a transfer that was previously started with - * StartTransfer(). The Host Controller PSL must flush any - * pending data (either received or about to be sent) and - * discard the transfer. The PSL must not attempt to complete - * the canceled transfer by calling - * MHostTransferCallbackIf::CompleteTransfer(). - * - * @param aTransferInfo Information specifying the transfer to - * cancel. This is the same information passed to - * StartTransfer() when the transfer as started. - */ - virtual void CancelTransfer( THostTransfer& aTransferInfo ) = 0; - }; - - - /** - * An interface class used by the USB Host Stack hub driver to - * operate on the root hub ports. The Host Controller PSL must - * implement this interface and provide a pointer when the USB - * Host Stack opens the root hub by calling - * MHostControllerIf::OpenRootHub(). - * - * The USB Host Stack will call the functions of this interface - * from a DFC queued on the DFC queue supplied by the Host - * Controller in THostControllerProperties::iControllerDfcQueue - * when the Host Controller PSL registered. - * - * @see MHostControllerIf::OpenRootHub() - */ - NONSHARABLE_CLASS( MRootHubIf ) - { - public: - /** - * Close the connection to the root hub. This is called by the - * USB Host Stack when the Host Controller is about to be - * deleted and the root hub is no longer used. The Host - * Controller PSL may release any resources that were - * allocated for this instance, including deleting the object - * itself. - * - * @post After calling the function, the USB Host stack will - * consider the invoked instance to have been deleted and will - * no longer call any of the functions. - */ - virtual void CloseRootHubD() = 0; - - /** - * Enable the power supply, i.e. raise VBUS, on the specified - * root hub port. - * - * If there are problems raising VBUS, the Host Controller PSL - * must report a VBUS error by notifying the root hub callback - * interface MRootHubCallbackIf of an over-current condition - * on the port. - * - * @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]. - * - * @see MRootHubCallbackIf::OverCurrentDetected() - */ - virtual void PowerOnPort( TUint aPort ) = 0; - - /** - * Stop session (A-device only). - * - * @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]. - */ - virtual void PowerOffPort( TUint aPort ) = 0; - - /** - * Reset the specified root hub port. The total reset length - * has to be at least 50 milliseconds and the reset signalling - * must follow the requirements specified in USB 2.0 - * Specification Section 7.1.7.5 Reset Signaling. - * - * This function is synchronous and should return when the - * reset signalling on the port has 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 - * range [1..N]. - */ - virtual void ResetPort( TUint aPort ) = 0; - - /** - * Place the specified root hub port to the USB suspend state - * where it does not send SOF packets to the connected device. - * - * When all ports of the root hub have been suspended, the USB - * 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]. - */ - virtual void SuspendPort( TUint aPort ) = 0; - - /** - * Resume the specified root hub port from the USB suspend - * state by driving the resume signalling on the port. 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 port must allow SOFs to be sent to the - * connected device again. - * - * Before resuming the first port of a completely suspended - * controller, the USB Host Stack will first resume the entire - * 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. - * - * @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]. - */ - virtual void ResumePort( TUint aPort ) = 0; - - /** - * Query whether a device (a hub or a function) is currently - * connected to the specified root hub port, and what speed it - * is. - * - * @param aPort The number of the root hub port to check for a - * connected device on. For a root hub with N ports, the port - * numbers are in range [1..N]. - * - * @param aSpeed Variable to fill with the speed, if connected - * - * @return ETrue if a device is currently connected and aSpeed - * has been set to the speed of the connected device. EFalse - * otherwise. - */ - virtual TBool IsDeviceConnected( TUint aPort, - TSpeed& aSpeed ) = 0; - }; - - - /** - * An interface class that needs to be implemented by each Host - * Controller PSL that registers to the USB stack. - * - * This interface is used by the USB Host Stack to do controller level - * operations like suspending and resuming the host controller. It is - * also used to open the root hub interface upon creating the SHAI - * Host Controller, and to open USB pipes to connected devices. - * - * The USB Host Stack will call the functions of this interface - * from a DFC queued on the DFC queue supplied by the Host - * Controller in THostControllerProperties::iControllerDfcQueue when the - * Host Controller PSL registered. - */ - NONSHARABLE_CLASS( MHostControllerIf ) - { - public: - /** - * Open a pipe to an endpoint on a remote USB peripheral. - * - * This function is called by the USB host stack when it wants - * to communicate with a certain endpoint on a discovered USB - * peripheral. The opened pipe is then used to read or write - * from/to the peripheral until the pipe is later closed by - * MHostPipeIf::ClosePipeD(). - * - * @param aPipeInfo Information describing the target endpoint - * that the USB host stack wants to create a pipe to. The - * ownership of the info object remains with the USB host - * stack and the Host Controller PSL must not refer to data - * inside this after the function has returned. All - * MHostPipeIf functions that operate on the pipe will be - * passed the same pipe information so that the Host - * Controller PSL does not necessarily need to take a copy. - * - * @param aPipe Upon success, set by the Host Controller PSL - * to point to an instance that implements the SHAI pipe - * interface for the opened pipe. This interface will then be - * used by the USB Host Stack to perform transfers until the - * pipe is eventually closed by the USB Host Stack calling - * MHostPipeIf::ClosePipeD(). - * - * @return KErrNone if successful, otherwise a system error code - */ - virtual TInt OpenPipe( const THostPipe& aPipeInfo, - MHostPipeIf*& aPipe ) = 0; - - /** - * Open the root hub for the Host Controller. - * - * This is called by the USB Host Stack after creating the - * Host Controller PSL to learn the capabilities of the - * respective root hub and to establish the communication - * between the hub driver in the USB Host Stack and the root - * hub ports controlled by the Host Controller PSL. - * - * @param aRootHubInfo Reference to a root hub information - * object to be filled by the adaptation. - * - * @param aRootHubCbIf Reference to the callback interface of - * the root hub driver in the USB stack. The root hub - * implementation of the Host Controller PSL shall use this - * interface to report events of this root hub. - * - * @return KErrNone if successful, otherwise a system error code - */ - virtual TInt OpenRootHub( TRootHubInfo& aRootHubInfo, - MRootHubCallbackIf& aRootHubCbIf ) = 0; - - /** - * Start and enable the host controller. This is called prior - * to powering up any port of the root hub to allow to Host - * Controller PSL to perform any preparation that may be - * necessary to activate the controller. This may include - * actions such as enabling clocks or power to the host - * controller HW. - * - * This function is also used in an OTG environment when the - * host stack becomes enabled and the controller needs to be - * started and enabled for host use. If the HW platform shares - * resources such as clocks and power between the host and - * peripheral HW, it is probably easiest for the PSL to handle - * the role switch based on the - * MOtgControllerIf::SetControllerRole() call to the OTG - * Controller interface. - * - * @return KErrNone if the host controller was successfully started, - * otherwise a system-wide error code. - * - * @see usb_otg_shai.h, MOtgControllerIf::SetControllerRole() - */ - virtual TInt StartHostController() = 0; - - /** - * Disable and stop the host controller. This is called after - * powering down all ports of the root hub to allow to Host - * Controller PSL to release any HW resources needed by the - * controller. This may include actions such as disabling - * clocks or power to the host controller HW. - * - * This function is also used in an OTG environment when the - * host stack becomes disabled and the host HW resources can - * be released. If the HW platform shares resources such as - * clocks and power between the host and peripheral HW, it is - * probably easiest for the PSL to handle the role switch - * based on the MOtgControllerIf::SetControllerRole() call to - * the OTG Controller interface. - * - * @return KErrNone if the host controller was successfully started, - * otherwise a system-wide error code. - * - * @see usb_otg_shai.h, MOtgControllerIf::SetControllerRole() - */ - virtual TInt StopHostController() = 0; - - /** - * Place the host controller to the USB suspend state where it - * does not send SOF packets. - */ - 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. - */ - virtual void ResumeController() = 0; - - /** - * Force the controller into a specific high-speed host test - * mode. This function needs to be implemented only by Host - * Controller PSLs for high-speed capable controllers. The - * function will only be called when the controller is - * 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. - * - * @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; - - /** - * Get the size and alignment requirements for the Host - * Controller. The reference parameters are both input and - * output. Upon input, they describe the values requested by - * the client, but they may be increased by this function if - * the Host Controller requires additional memory or has some - * alignment requirements. - * - * @param aType The type of the endpoint that the memory will - * be used for. - * - * @param aAlignment Output for required alignment in bytes - * - * @param aSize Input/output for buffer size (may be increased - * in this function) - * - * @param aMaxPackets Input/output for maximum number of - * packets in the transfer (may be increased in this function) - * - * @return KErrNone if successful, otherwise a system-wide - * error code - */ - virtual TInt GetSizeAndAlignment( TEndpointType aType, - TUint& aAlignment, - TInt& aSize, - TInt& aMaxPackets ) = 0; - - /** - * Creates a shared chunk and commits memory to it. The memory - * allocated with this function will later be used when making - * data transfers with this Host Controller (see - * THostTransfer::iDataBuffer). - * - * The adaptation shall create a chunk by calling - * Kern::ChunkCreate(), and then commit memory to it with one - * of the Commit functions Kern::ChunkCommit(), - * Kern::ChunkCommitContiguous(), and Kern::ChunkCommitPhysical(). - * - * This task is delegated to the adaptation so that it can - * allocate the correct type of memory. For example, if the - * Host Controller requires the memory to be physically - * contiguous, the implementation of this function must commit - * contiguous memory to the chunk. - * - * @param aChunk Output handle to the chunk that was created. - * The adaptation must pass this value as the aChunk argument - * to the Kern::ChunkCreate() call. - * - * @param aOffset The offset (in bytes) from start of chunk, - * which indicates the start of the memory region to be - * committed. This will be a multiple of the MMU page - * size. The adaptation must pass this value as the aOffset - * argument to the used Commit call. - * - * @param aSize Number of bytes to commit. This will be a - * multiple of the MMU page size. The adaptation must pass - * this value as the aSize argument to the used Commit call. - * - * @param aInfo At input, specifies the chunk properties - * requested by the upper layers. The adaptation is allowed - * to change the attributes in aInfo.iMapAttr to match the - * requirements of the Host Controller. The adaptation must - * pass this value as the aInfo argument to the - * Kern::ChunkCreate() call. If the adaptation commits - * cached memory, it is the responsibility of the adaptation - * to deal with cache synchronization when making data - * transfers. If the adaptation needs special cleanup when - * the chunk is deleted, the adaptation can set a cleanup - * DFC pointer in aInfo.iDestroyedDfc. - * - * @param aPhysicalAddress On success, will be set to the - * physical address of the chunk as referenced by the HC - * - * @return KErrNone if successful, otherwise a system-wide - * error code - * - * @see System documentation for Kern::ChunkCreate(), - * Kern::ChunkCommit(), Kern::ChunkCommitContiguous(), and - * Kern::ChunkCommitPhysical() - */ - virtual TInt ChunkCreate( DChunk*& aChunk, - TUint aOffset, - TUint aSize, - TChunkCreateInfo& aInfo, - TPhysAddr& aPhysicalAddress ) = 0; - - /** - * Maps virtual to physical addresses. If the memory addresses - * used by the host controller are different to the ones of - * the main memory bus (e.g. due to memory mapping or use of - * different address spaces), this method is used to translate - * from kernel physical addresses to host controller physical - * addresses. - * - * @param aPhysicalAddressList On entering, the list of - * physical addresses as used kernel-side, on successful - * return it contains the list of physical addresses as - * referenced by the HC - * - * @param aPhysicalAddressListSize Number of elements in - * aPhysicalAddressList - * - * @return KErrNone if successful, otherwise a system-wide - * error code - */ - virtual TInt MapPhysicalAddresses( TPhysAddr*& aPhysicalAddressList, - TInt aPhysicalAddressListSize ) = 0; - }; - - - /** - * An interface class implemented by the USB stack to allow the - * host controller to report events to the root hub. This includes - * notifications of a device being connected or disconnected on a - * port, and other port conditions such as seeing a remote wakeup - * signalling, an error on the port (such as babble from a - * peripheral), or VBUS over-current. - * - * It is required that the Host Controller PSL calls these - * functions in the context of the DFC queue supplied by the Host - * Controller PSL in - * THostControllerProperties::iControllerDfcQueue when the Host - * Controller PSL registered. - */ - NONSHARABLE_CLASS( MRootHubCallbackIf ) - { - public: - /** - * A constant to specify an unknown port. In those port - * notifications where this is explicitly specified to be OK, - * this value is allowed to be used as the port number where - * the real port number is unknown. - */ - static const TUint KPortUnknown = 0; - - /** - * Informs the root hub that a device (a hub or function) has - * been connected to the specified root hub port. - * - * The Host Controller PSL uses this function to inform device - * connection also during HNP role switch when the remote - * device connects in peripheral role. - * - * @param aPort The number of the root hub port that the event - * occurred on. For a root hub with N ports, the port numbers - * are in range [1..N]. - */ - virtual void DeviceConnected( TUint aPort ) = 0; - - /** - * Informs the root hub that a device (a hub or function) has - * been disconnected from the specified root hub port. - * - * The Host Controller PSL uses this function to inform device - * disconnection also during HNP role switch when the remote - * peripheral disconnects to start the role switch. - * - * The Host Controller PSL must report device disconnection by - * calling this function even if the port is currently - * suspended. A disconnection that is part of an HNP role - * switch will always occur in suspended state, and even a - * normal peripheral may be physically disconnected at any - * time. - * - * @param aPort The number of the root hub port that the event - * occurred on. For a root hub with N ports, the port numbers - * are in range [1..N]. - */ - virtual void DeviceDisconnected( TUint aPort ) = 0; - - /** - * Informs the root hub that a device connected to the - * specified root hub port has requested remote wakeup. - * - * @param aPort The number of the root hub port that the event - * occurred on. For a root hub with N ports, the port numbers - * are in range [1..N]. - */ - virtual void RemoteWakeupRequested( TUint aPort ) = 0; - - /** - * Informs the root hub that a port error (such as babble) has - * been detected on the specified root hub port. The - * adaptation is expected to disable the port that has caused - * the error condition. - * - * @param aPort The number of the root hub port that the event - * occurred on. For a root hub with N ports, the port numbers - * are in range [1..N]. - */ - virtual void PortErrorDetected( TUint aPort ) = 0; - - /** - * Informs the root hub that an over-current condition has - * been detected on the specified port. - * - * It may not always be possible to see which port out of - * several caused the overcurrent. In this case the Host - * Controller PSL may use the port number - * MRootHubCallbackIf::KPortUnknown. - * - * @param aPort The number of the root hub port that the event - * occurred on, if known. For a root hub with N ports, the - * port numbers are in range [1..N]. If the exact port is - * not known, the Host Controller PSL root hub may report - * the port number MRootHubCallbackIf::KPortUnknown. - */ - virtual void OverCurrentDetected( TUint aPort ) = 0; - }; - - - /** - * An interface class implemented by the USB Host Stack to allow the - * host controller to complete transfers to the USB Host Stack. - * - * It is required that the Host Controller PSL calls these - * functions in the context of the DFC queue supplied by the Host - * Controller PSL in THostControllerProperties::iControllerDfcQueue when - * the Host Controller PSL registered. - */ - NONSHARABLE_CLASS( MHostTransferCallbackIf ) - { - public: - /** - * Complete a transfer request that had been set up with - * MHostPipeIf::StartTransfer(). - * - * @param aTransferInfo The transfer information that - * identifies the transfer that has completed - */ - virtual void CompleteTransfer( const THostTransfer& aTransferInfo ) = 0; - }; - - - /** - * This class specifies the static information provided by a Host - * Controller PSL when registering to the USB Host stack. - * - * 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 UsbHostPil::RegisterHostController() - */ - NONSHARABLE_CLASS( THostControllerProperties ) - { - public: // Types and constants - /** - * A bitmask type used to indicate the static capabilities of - * the Host Controller. - */ - typedef TUint32 THostCaps; - - public: - /** - * Inline constructor for the Host Controller 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 THostControllerProperties() : - iCapabilities(0), - iControllerDfcQueue(NULL), - iControllerPageSize(0) - { - }; - - public: // Data - /** - * A bitmask specifying the static capabilities of this Host - * Controller. No capabilities are specified at the moment and - * the PSL shall fill this field with a zero value. - * - * The field is added for sake of future proofing the binary - * compatibility of the Host SHAI. By having a field reserved - * for capability bits, we can later specify bits to indicate - * added virtual functions or extension to this controller - * properties structure. The PIL layer can then at runtime - * confirm the existence of the new functions or fields and - * safely support an older binary, if we choose to. - */ - THostCaps iCapabilities; - - /** - * Pointer to a DFC queue that will be used for DFCs of this - * controller. - * - * A stand-alone (one not associated with an OTG-port) Host - * Controller PSL must supply a pointer to a dedicated DFC - * queue that has been created for this controller. Both the - * PSL itself and the PIL layer must queue their DFCs for this - * controller in this DFC queue to ensure the code is running - * in the same context. - * - * A Host Controller PSL that is part of an OTG port will be - * registered by the OTG PSL. In this case, the DFC queue - * supplied here must be the same DFC queue as the one - * supplied in the properties of the OTG Controller. - */ - TDfcQue* iControllerDfcQueue; - - /** - * The page size used by this Host Controller. The host stack - * will fill scatter-gather lists with pages of this size. If - * the Host Controller does not have specific page - * requirements itself, the registering Host Controller PSL - * must supply here the CPU MMU page size that can be obtained - * by the call Kern::RoundToPageSize(1). - */ - TInt iControllerPageSize; - }; - - - /** - * A static class implemented by the USB Host PIL layer to allow - * the host controller PSL to register to the PIL layer. - */ - NONSHARABLE_CLASS( UsbHostPil ) - { - public: - /** - * Registration function to be used by a stand-alone (non-OTG - * port) Host Controller PSL to register itself to the PIL - * layer. Host Controllers that are part of an OTG-port are - * registered by the OTG Controller PSL (see usb_otg_shai.h, - * function UsbOtgPil::RegisterOtgController). - * - * The intended usage is that each stand-alone Host Controller - * PSL is a kernel extension that registers itself to the USB - * Host PIL layer by making this call from their own kernel - * extension entry point function (or an equivalent code that - * runs during bootup). - * - * @param aHostControllerIf Reference to the Host Controller - * interface implemented by the registering PSL. - * - * @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. - * - * @lib usbotghostpil.lib - */ - IMPORT_C static void RegisterHostController( - MHostControllerIf& aHostControllerIf, - const THostControllerProperties& aProperties ); - }; - }; - -#endif // USB_HOST_SHAI_H - -/* End of File */ diff -r f92a4f87e424 -r 012cc2ee6408 usb_plat/usb_shai_api/inc/usb_otg_shai.h --- a/usb_plat/usb_shai_api/inc/usb_otg_shai.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,626 +0,0 @@ -/* -* 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 OTG SHAI header - @version 0.2.0 - - This header specifies the USB OTG SHAI. - - @publishedDeviceAbstraction -*/ - - -#ifndef USB_OTG_SHAI_H -#define USB_OTG_SHAI_H - -// System includes -#include -#include // Common types shared between the USB SHAIs - -/** - * This macro specifies the version of the USB OTG SHAI header in - * binary coded decimal format. This allows the PSL layer to confirm a - * certain definition is available, if needed. This can for example - * make it possible for a new PSL to support compilation in an older - * environment with old USB SHAI version that is missing some new - * definitions. - */ -#define USB_OTG_SHAI_VERSION 0x020 - -// The namespace is documented in file usb_common_shai.h, so it is not -// repeated here -namespace UsbShai - { - // Forward declarations - - class MOtgControllerIf; - class MOtgObserverIf; - class MPeripheralControllerIf; - class TPeripheralControllerProperties; - class MHostControllerIf; - class THostControllerProperties; - - // Data types - - /** - * Enumeration listing the possible states of the ID pin. Due to a - * dependency between OTG and USB Battery Charging, this - * enumeration lists also the special states introduced as part of - * the Battery Charging Specification version 1.1. - * - * An OTG Controller PSL for a system that does not support - * Accessory Charger Adapter (ACA) will always report only - * EIdStateRidFloat or EIdStateRidGnd. An OTG Controller PSL that - * supports ACA is required to report the ID pin state accurately - * in order for the OTG State Machine to understand why VBUS - * appears high even though we should default to the host role and - * should normally drive VBUS ourselves (in case of RID_A). - * - * 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. - * - * @see usb_charger_detection_shai.h - */ - enum TIdPinState - { - /** ID pin is grounded */ - EIdStateRidGnd = 0, - - /** ID pin is floating */ - EIdStateRidFloat, - - /** - * ID pin is in the RID_A range, as specified in Battery - * Charging 1.1 specification - */ - EIdStateRidA, - - /** - * ID pin is in the RID_B range, as specified in Battery - * Charging 1.1 specification - */ - EIdStateRidB, - - /** - * ID pin is in the RID_C range, as specified in Battery - * Charging 1.1 specification - */ - EIdStateRidC - }; - - /** - * Enumeration listing the reported states of VBUS on the OTG - * port. - * - * The threshold for Session Valid comparison is VOTG_SESS_VLD as - * defined in the "On-The-Go and Embedded Host Supplement to the - * USB Revision 2.0 Specification", Table 4-1 Electrical - * Characteristics. The voltage level for a compliant - * implementation can be anywhere between 0.8 V and 4.0 V. - */ - enum TVbusState - { - /** VBUS is below the OTG Session Valid threshold */ - EVbusStateNoSession = 0, - - /** - * VBUS is above the OTG Session Valid threshold, but below - * the requirements of AVbusValid. - */ - EVbusStateSessionValid, - - /** - * When operating as the A-device and driving VBUS, indicates - * that the VBUS is in regulation, as defined in "On-The-Go - * and Embedded Host Supplement to the USB Revision 2.0 - * Specification" Section 4.2.1, "VBUS Output Voltage and - * Current". - * - * When a VBUS session has been started as the A-device, the - * OTG Controller PSL is required to report a VBUS level of - * EVbusStateAVbusValid when VBUS has successfully risen to - * allow the OTG State Machine to transition out of the - * a_wait_vrise state. - * - * After VBUS has been successfully raised when operating as - * the A-device, the PSL reporting a VBUS level less than - * EVbusStateAVbusValid is considered as a report of a VBUS - * error (over-current) situation and will result in ending - * the session immediately. - */ - EVbusStateAVbusValid - }; - - /** - * Enumeration listing the state of the OTG 2.0 state machine. - * - * The states match those defined in the "On-The-Go and Embedded - * Host Supplement to the USB Revision 2.0 Specification" for the - * OTG A-device and B-device states. - */ - enum TOtgState - { - /** The OTG state is b_idle */ - EOtgStateBIdle = 0, - - /** The OTG state is b_peripheral */ - EOtgStateBPeripheral, - - /** The OTG state is b_wait_acon */ - EOtgStateBWaitAcon, - - /** The OTG state is b_host */ - EOtgStateBHost, - - /** The OTG state is a_idle */ - EOtgStateAIdle, - - /** The OTG state is a_wait_vrise */ - EOtgStateAWaitVrise, - - /** The OTG state is a_wait_bcon */ - EOtgStateAWaitBcon, - - /** The OTG state is a_host */ - EOtgStateAHost, - - /** The OTG state is a_suspend */ - EOtgStateASuspend, - - /** The OTG state is a_peripheral */ - EOtgStateAPeripheral, - - /** The OTG state is a_wait_vfall */ - EOtgStateAWaitVfall, - - /** The OTG state is a_vbus_err */ - EOtgStateAVbusErr - }; - - /** - * Enumeration listing the roles that our device can be in. - */ - enum TOtgRole - { - /** - * Our device is idle, i.e. we are not operating in either the - * peripheral or the host role. This role indicates that - * neither the host controller nor the peripheral controller - * needs to be activated and the PSL is free to power down the - * controllers. - */ - EOtgRoleIdle = 0, - - /** Our device is operating in the peripheral role */ - EOtgRolePeripheral, - - /** Our device is operating in the host role */ - EOtgRoleHost - }; - - // Class declaration - - /** - * An interface class that needs to be implemented by each OTG - * Controller PSL that registers to the USB stack. - * - * The USB OTG Stack will call the functions of this interface - * from a DFC queued on the DFC queue supplied by the OTG - * Controller PSL in TOtgControllerProperties::iControllerDfcQueue - * when the OTG Controller PSL registered. - */ - NONSHARABLE_CLASS( MOtgControllerIf ) - { - public: - /** - * Called by the OTG stack to set the observer callback - * interface to be used by the OTG Controller PSL to report - * events. - * - * When the observer pointer is set to non-NULL value, the OTG - * Controller PSL is required to immediately report the - * current VBUS and ID states to the observer to get the - * status of the OTG stack up to date. - * - * @param aObserver Pointer to the observer interface to use, - * or NULL when the OTG stack is being unloaded. - */ - virtual void SetOtgObserver( MOtgObserverIf* aObserver ) = 0; - - /** - * When operating as the B-peripheral, the OTG stack calls - * this function to indicate that the upper layers are - * requesting our device to become the B-host. This means that - * our OTG device will need start the HNP signalling by - * disconnecting from the bus and allowing the A-device to - * connect as the peripheral. The signalling shall be started - * when the host has suspended the bus, which may already be - * the case or happen later. - * - * This function call is only relevant for OTG controllers - * that implement the HNP signalling in hardware and require - * an explicit request from SW to start the HNP role switch. - * If the OTG controller is under SW control by the Host and - * Peripheral Controller PSLs, the OTG Controller PSL should - * ignore this call. The HNP signalling in the SW-controlled - * case will be handled as normal calls to disconnect as - * peripheral and then start the host controller. - * - * For all controller types, the Host Controller PSL and the - * Peripheral Controller PSL associated with the OTG port are - * required to report events as they normally would when - * operating as the default role. For the Host Controller PSL, - * this includes notifying device connection, disconnection, - * and other relevant events via MRootHubCallbackIf. For the - * Peripheral Controller PSL, this includes notifying bus - * state events such as reset, suspend, and resume via - * MUsbPeripheralPilCallbackIf::DeviceEventNotification. - * - * The OTG Controller PSL is not required to perform any - * monitoring of HNP success or failure, or report that to the - * PIL layer. The PSL is only responsible for making the - * normal host and peripheral notifications mentioned above, - * and the PIL can see the HNP success or failure from those - * notifications. - */ - virtual void SetBHnpRequest() = 0; - - /** - * When operating as the B-device, the OTG stack calls this - * function to request the PSL to drive SRP signalling on the - * bus by pulsing the D+ dataline. The OTG Controller PSL may - * synchronously drive the 5..10 millisecond pulse before - * returning, but it may also do it asynchronously. - * - * The OTG PIL layer guarantees that the initial conditions - * for driving SRP are satisfied before the PIL calls this - * function. That is, the PIL guarantees that sufficient time - * has elapsed since the end of the previous VBUS session (if - * any) and the bus has been idle long enough. - * - * No special report from the OTG Controller PSL is required - * in either success or fail case. In a success case, the - * A-device will raise VBUS and the OTG state machine gets - * this as a normal VBUS notifications from the OTG Controller - * PSL. In a fail case, a timer in the upper layers will - * expire, indicating to upper layers that the SRP was not - * successful. - */ - virtual void SignalBSrp() = 0; - - /** - * Called by the OTG state machine to indicate a change in the - * required controller role. - * - * Whether the PSL needs to do any actions depends on the HW. - * For controllers that require special configuration in - * changing a role (other than just starting the peripheral - * controller or the host controller normally), the OTG - * Controller should do that special configuration when it - * gets this call. - * - * When changing a role, the OTG state machine will first - * disable the stack for the previous role, causing that stack - * to issue a stop request to the respective controller - * PSL. The OTG state machine will then call this function - * SetControllerRole() to set the controller role to the - * target role. Following this, the OTG state machine will - * enable the stack for the target role, causing that stack to - * issue a start request to the respective controller PSL. - * - * @param aControllerRole The OTG role to set our device to - * - * @return KErrNone if the OTG Controller successfully set the - * role or required no actions. Otherwise a system-wide - * error code. - */ - virtual TInt SetControllerRole( TOtgRole aControllerRole ) = 0; - }; - - - /** - * An interface class implemented by the USB stack to allow the - * OTG controller to report events to the USB stack. This includes - * events like VBUS rising and falling, ID pin becoming grounded - * or floating, and SRP being detected. - * - * It is required that the OTG Controller PSL calls these - * functions in the context of the DFC queue supplied by the OTG - * Controller PSL in TOtgControllerProperties::iControllerDfcQueue - * when the OTG Controller PSL registered. - */ - NONSHARABLE_CLASS( MOtgObserverIf ) - { - 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. - * - * 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. - * - * 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. - * - * 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). - * - * 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. - * - * The OTG Controller PSL, the Peripheral Controller PSL and - * the Charger Detector PSL need to together guarantee that - * the peripheral controller does not attempt to connect to - * the bus while charger detection is still on-going. When - * detection has been completed and upper layers have - * indicated readiness to connect to the bus (see - * MPeripheralControllerIf::PeripheralConnect(), the - * Peripheral Controller PSL must connect to the bus. - * - * @param aVbusState The current VBUS state - */ - virtual void NotifyVbusState( TVbusState aVbusState ) = 0; - - /** - * When operating as the A-device with VBUS low, notify the - * OTG stack that SRP signalling has been detected on the - * bus. The OTG Controller must detect the SRP signalling from - * dataline pulsing, as specified in the "On-The-Go and - * Embedded Host Supplement to the USB Revision 2.0 - * Specification". - */ - virtual void NotifySrpDetected() = 0; - - /** - * This function is called by the OTG Controller PSL to report - * that it has detected the attachment of a device (A or B) - * that is malfunctioning in a low-level way that prevents - * attempting communication with the connected device. Such - * cases may include but are not necessarily limited to: - * - * 1. A B-device that drives its upstream VBUS. To prevent - * damage to the VBUS charge pump in our A-device, it may be - * necessary to prevent VBUS from being raised by our device. - * - * 2. A B-device that presents a single-ended one (both - * datalines high) on the bus. - * - * The detection of such malfunctioning devices is left to the - * OTG Controller PSL, as this type of malfunctions are - * low-level problems not necessarily detectable with the - * standard inputs available to the OTG state machine. - * - * To ensure that the OTG state machine stays in an idle - * state, the OTG Controller PSL should report ID floating and - * VBUS low prior to reporting the bad device attachment by - * calling this function. When the bad device is detached, the - * OTG Controller PSL can resume reporting ID and VBUS state - * truthfully, and must call NotifyBadDeviceDetached() to - * allow the upper layers to see the error condition has been - * cleared. - * - * @see NotifyBadDeviceDetached() - */ - virtual void NotifyBadDeviceAttached() = 0; - - /** - * This function is called by the OTG Controller PSL to report - * that a previously detected bad device has been detached. - * See NotifyBadDeviceAttached() for description of this - * functionality. - * - * @see NotifyBadDeviceAttached() - */ - virtual void NotifyBadDeviceDetached() = 0; - }; - - - /** - * This class specifies the information provided by an OTG - * Controller PSL when registering to the USB OTG stack. - * - * 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 UsbOtgPil::RegisterOtgController() - */ - NONSHARABLE_CLASS( TOtgControllerProperties ) - { - public: // Types and constants - /** - * A bitmask type used to indicate the static capabilities of - * the OTG Controller. - */ - typedef TUint32 TOtgCaps; - - public: - /** - * Inline constructor for the OTG Controller 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 TOtgControllerProperties() : - iCapabilities(0), - iControllerDfcQueue(NULL) - { - }; - - public: // Data - /** - * A bitmask specifying the static capabilities of this OTG - * Controller. No capabilities are specified at the moment and - * the PSL shall fill this field with a zero value. - * - * The field is added for sake of future proofing the binary - * compatibility of the OTG SHAI. By having a field reserved - * for capability bits, we can later specify bits to indicate - * added virtual functions or extension to this controller - * properties structure. The PIL layer can then at runtime - * confirm the existence of the new functions or fields and - * safely support an older binary, if we choose to. - */ - TOtgCaps iCapabilities; - - /** - * Pointer to a DFC queue that will be used for DFCs of this - * controller and the associated peripheral and host - * controllers. - * - * The OTG Controller must supply a pointer to a dedicated DFC - * queue that has been created for this OTG Controller PSL. - * Both the OTG Controller PSL itself and the OTG stack must - * queue their DFCs for this controller in this DFC queue to - * ensure the code is running in the same context. - * - * Furthermore, it is the responsibility of the OTG Controller - * PSL that registers to ensure that the Peripheral and Host - * Controller PSLs that are registered at the same time use - * the same DFC Queue in their respective properties object. - */ - TDfcQue* iControllerDfcQueue; - }; - - - /** - * A static class implemented by the USB OTG PIL layer to allow - * the OTG controller PSL to register to the PIL layer. - */ - NONSHARABLE_CLASS( UsbOtgPil ) - { - public: - /** - * Registration function to be used by the OTG Controller PSL - * to register itself and the associated peripheral and host - * controller PSLs to the PIL layer. - * - * The intended usage is that OTG Controller PSL (of which - * only one can exists in a given system) is a kernel - * extension that registers itself and the associated - * peripheral and host controller PSLs to the USB PIL layer by - * making this call from its kernel extension entry point - * function (or an equivalent code that runs during bootup). - * - * @param aOtgControllerIf Reference to the OTG Controller - * interface implemented by the registering PSL. - * - * @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. - * - * @param aPeripheralControllerIf Reference to the Peripheral - * Controller interface implemented by the PSL controlling the - * Peripheral Controller associated with the registering OTG - * port. - * - * @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. - * - * @param aHostControllerIf Reference to the Host Controller - * interface implemented by the PSL controlling the Host - * Controller associated with the registering OTG port. - * - * @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. - * - * @lib usbotghostpil.lib - */ - IMPORT_C static void RegisterOtgController( - MOtgControllerIf& aOtgControllerIf, - const TOtgControllerProperties& aOtgProperties, - MPeripheralControllerIf& aPeripheralControllerIf, - const TPeripheralControllerProperties& aPeripheralProperties, - MHostControllerIf& aHostControllerIf, - const THostControllerProperties& aHostProperties ); - }; - }; - -#endif // USB_OTG_SHAI_H - -/* End of File */ diff -r f92a4f87e424 -r 012cc2ee6408 usb_plat/usb_shai_api/inc/usb_peripheral_shai.h --- a/usb_plat/usb_shai_api/inc/usb_peripheral_shai.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1181 +0,0 @@ -/* -* 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 Peripheral SHAI header - - @version 0.3.0 - - Abstract interface for USB Peripheral Controller. - - @publishedDeviceAbstraction - - */ - -#ifndef USB_PERIPHERAL_SHAI_H -#define USB_PERIPHERAL_SHAI_H - -// System includes -#include -#include // Common types shared between the USB SHAIs -#include // Common types shared with upper layers - -/** - * This macro specifies the version of the USB Peripheral SHAI header - * in binary coded decimal format. This allows the PSL layer to - * confirm a certain definition is available, if needed. This can for - * example make it possible for a new PSL to support compilation in an - * older environment with old USB SHAI version that is missing some - * new definitions. - */ -#define USB_PERIPHERAL_SHAI_VERSION 0x030 - -// The namespace is documented in file usb_common_shai.h, so it is not -// repeated here -namespace UsbShai - { - /** - * Masks defined for TUsbPeripheralEndpointCaps.iSizes. - * - * Zero means this endpoint is not available (= no size). - */ - const TUint KUsbEpNotAvailable = 0x00000000; - - /** - * Max packet size is continuously variable up to some size specified. - * (Interrupt and Isochronous endpoints only.) - */ - const TUint KUsbEpSizeCont = 0x00000001; - - /** Max packet size 8 bytes is supported */ - const TUint KUsbEpSize8 = 0x00000008; - - /** Max packet size 16 bytes is supported */ - const TUint KUsbEpSize16 = 0x00000010; - - /** Max packet size 32 bytes is supported */ - const TUint KUsbEpSize32 = 0x00000020; - - /** Max packet size 64 bytes is supported */ - const TUint KUsbEpSize64 = 0x00000040; - - /** Max packet size 128 bytes is supported */ - const TUint KUsbEpSize128 = 0x00000080; - - /** Max packet size 256 bytes is supported */ - const TUint KUsbEpSize256 = 0x00000100; - - /** Max packet size 512 bytes is supported */ - const TUint KUsbEpSize512 = 0x00000200; - - /** Max packet size 1023 bytes is supported */ - const TUint KUsbEpSize1023 = 0x00000400; - - /** Max packet size 1024 bytes is supported */ - const TUint KUsbEpSize1024 = 0x00000800; - - /** - * Test Mode Selectors (Set/ClearFeature) - * Refer to usb specification 2.0, Chapter 9.4.9, table 9-7 - */ - enum TUsbTestModeSelector - { - EUsbTestSelector_Test_J = 0x01, - EUsbTestSelector_Test_K, - EUsbTestSelector_Test_SE0_NAK, - EUsbTestSelector_Test_Packet, - EUsbTestSelector_Test_Force_Enable - }; - - /** - * Transfer direction of a USB transfer request. - * @see TUsbPeripheralRequest - */ - enum TTransferDirection - { - EControllerNone, - EControllerRead, - EControllerWrite - }; - - /** - * Enumeration listing the event codes that are passed from PSL to - * PIL to indicate peripheral events - */ - enum TUsbPeripheralEvent - { - /** The USB Suspend bus state has been detected. - * - * When the Peripheral Controller PSL is part of an - * OTG-capable port, the PSL shall report this event also when - * operating as the A-peripheral, in which case this final - * suspend event starts the HNP role switch back to A-host. - */ - EUsbEventSuspend, - - /** USB Resume signaling has been detected. */ - EUsbEventResume, - - /** A USB Reset condition has been detected. */ - EUsbEventReset, - - /** - * VBUS level has risen above the B-session valid threshold. This - * is only relevant for a stand-alone peripheral controllers - * (those not associated with an OTG port). For an OTG port, the - * VBUS state is reported to PIL layer by the OTG Controller PSL. - */ - EUsbEventVbusRisen, - - /** - * VBUS level has fallen below the B-session valid threshold. This - * is only relevant for a stand-alone peripheral controllers - * (those not associated with an OTG port). For an OTG port, the - * VBUS state is reported to PIL layer by the OTG Controller PSL. - */ - EUsbEventVbusFallen - }; - - typedef TUint32 TUsbPeripheralPacketArray; - - /** - * @brief A USB transfer request. - * - * This class will be constructed in PIL or upper layer, and be - * passed down to PSL. After the request was done, PSL layer will - * modify corresponding members (like data length, packet info - * etc.) and re-pass it back to PIL via interface - * MUsbPeripheralPilCallbackIf::EndpointRequestComplete(). - * - */ - NONSHARABLE_CLASS(TUsbPeripheralRequest) - { - public: - /** - * This class doesn't need a destructor because it has nothing to be - * freed, closed, destroyed. It 'owns' nothing. - */ - IMPORT_C TUsbPeripheralRequest(TInt aRealEpNum); - - public: - /** The 'real' endpoint number this request to be bind to. */ - TInt iRealEpNum; - - /** - * Start address of this buffer. Filled-in by PIL. - * - * PSL needs to put received data in this buffer if it's a read request. - * PSL needs to get data from this buffer if it is a write request. - */ - TUint8* iBufferStart; - - /** Physical address of buffer start (used for DMA). */ - TUintPtr iBufferAddr; - - /** Length in bytes to be read/write. Filled-in by PIL. */ - TInt iLength; - - /** - * Number of bytes transmitted (if it is a write); - * This value need to be updated by PSL. - */ - TUint iTxBytes; - - /** - * Number of packets received (if it is a read); - * This value need to be updated by PSL. - */ - TUint iRxPackets; - - /** - * This is a re-interpretation of what's inside in buffer iBufferStart. - * It is designed to be that the first packet always contains all the - * bytes received. So only the following scenario are possible: - * - * 1. Nothing, iRxPackets is zero, no packet received. - * - * 2. 1 data Packet, iRxPackets is one. - * iPacketIndex[0] is the offset against iBufferStart of where the - * first byte of received data begins. - * iPacketSize[0] is the size (in bytes) of the received data. - * - * 3. 1 data packet, and one ZLP packet, iRxPackets is two. - * iPacketIndex[0] is the offset against iBufferStart of where the - * first byte of received data begins. - * iPacketSize[0] is the size (in bytes) of the data packet. - * - * iPacketIndex[1] is the offset of the ZLP packet. - * iPacketSize[1] is always set to zero since ZLP contains no data. - * - */ - TUsbPeripheralPacketArray* iPacketIndex; - - /** Array of packet sizes. Details see iPacketIndex */ - TUsbPeripheralPacketArray* iPacketSize; - - /** - * Indicates the transfer direction of this request. - * Note, SetupEndpointRead/Write likewise functions already point out - * the transfer direction, PSL may select to use it or not. - */ - TTransferDirection iTransferDir; - - /** - * For EControllerWrite (IN) transfers, it is used to Indicates that if - * a Zero Length Packet is required at the end of this transfer. - * It will be set to ETrue if ZLP is needed, EFalse otherwise. - */ - TBool iZlpReqd; - - /** - * The error code upon completion of the request; - * PSL need to set it to KErrNone if no errors, Set it to other - * system error codes otherwise. - */ - TInt iError; - }; - - /** - * Peripheral controller capabilities. - * - * PSL should use those values to fill in data member iControllerCaps in - * structure TPeripheralControllerProperties. - * - * @see TPeripheralControllerProperties. - */ - typedef TUint32 TDeviceCaps; - - /** - * Indicates whether peripheral controller hardware supports USB High-speed. - * This capability affects driver functionality and behavior throughout the - * implementation. - * - * Set this bit if this peripheral controller supports USB High-speed; - * Clear it otherwise. - */ - const TDeviceCaps KDevCapHighSpeed = 0x00000001; - - /** - * Indicates whether the peripheral controller supports hardware acceleration - * for setting the device address, i.e. automatically setting device address - * on conclusion of status phase of SET_ADDRESS. - * - * If this capability is supported PIL will call SetDeviceAddress() before - * sending a zero byte status packet. - * - * Set this bit if hardware acceleration is supported. - * Clear it otherwise. - */ - const TDeviceCaps KDevCapSetAddressAcceleration = 0x00000002; - - /** - * Indicates whether controller support Session Request Protocol. - * - * Set this bit if SRP is supported. - * Clear it otherwise. - */ - const TDeviceCaps KDevCapSrpSupport = 0x00000004; - - /** - * Indicates whether controller support Host Negotiation Protocol. - * - * Set this bit if HNP is supported. - * Clear it otherwise. - */ - const TDeviceCaps KDevCapHnpSupport = 0x00000008; - - /** - * Indicates whether controller support Remote wakeup - * - * Set this bit if remote wakeup is supported. - * Clear it otherwise. - */ - const TDeviceCaps KDevCapRemoteWakeupSupport = 0x00000010; - - /** - * Configuration data from PSL to PIL when register a controller through - * interface UsbPeripheralPil::RegisterPeripheralController(). - */ - NONSHARABLE_CLASS(TPeripheralControllerProperties) - { - public: - TPeripheralControllerProperties(); - - public: // Data - /** - * A bitmap used to Indicates the capabilities of this controller. - * PSL should set the corresponding bit to '1' if one capability is - * supported by this controller. - */ - TDeviceCaps iControllerCaps; - - /** - * Pointer to a DFC queue that will be used for DFCs of this controller. - * - * A stand-alone (one not associated with an OTG-port) peripheral PSL - * implementation must supply a pointer to a dedicated DFC queue that - * has been created for this controller. Both the PSL itself and the PIL - * layer must queue their DFCs for this controller in this DFC queue to - * ensure the code is running in the same context. - * - * A peripheral PSL that is part of an OTG port will be registered by - * the OTG PSL. In this case, the DFC queue supplied here must be the - * same DFC queue as the one supplied in the properties of the OTG - * Controller. - */ - TDfcQue* iDfcQueue; - - /** - * Describe the capabilities of all endpoint owned by this controller. - * - * Note that there might be gaps in the array, because the endpoints - * must be numbered by using the 'real endpoint' numbering scheme. - * - * An example of end point capability array: - * - * @code - * static const TUsbPeripheralEndpointCaps DevEndpointCaps[KTotalEps] = - * { - * // MaxSize mask , Types&Dir , High ,Reserved - * speed? - * {KEp0MaxPktSzMask,(KUsbEpTypeControl | KUsbEpDirOut), ETrue ,0 , 0}, - * {KEp0MaxPktSzMask,(KUsbEpTypeControl | KUsbEpDirIn ), ETrue ,0 , 0}, - * - * {KUsbEpNotAvailable,KUsbEpNotAvailable , ETrue ,0 , 0}, - * - * {KBlkMaxPktSzMask,(KUsbEpTypeBulk | KUsbEpDirIn ) , ETrue ,0 , 0}, - * {KBlkMaxPktSzMask,(KUsbEpTypeBulk | KUsbEpDirOut) , ETrue ,0 , 0} - * }; - * @endcode - * - * For endpoint maxinum packet size on USB2.0 High-speed, PSL should - * provide the overlaid values for both full speed and high speed, as - * PIL can deduce the appropriate values for either speed. - * - */ - const TUsbPeripheralEndpointCaps* iDeviceEndpointCaps; - - /** - * Set by the PSL to indicate the number of entries in - * iDeviceEndpointCaps array. - * Be noted that this value include the ones that are marked as - * KUsbEpNotAvailable in table iDeviceEndpointCaps. - */ - TInt iDeviceTotalEndpoints; - - /** - * Maximum size of ep0 packet. - * @see USB spec 2.0, chapter 9, table 9-8. - */ - TUint8 iMaxEp0Size; - - /** - * Device Release number in binary-coded decimal. - * @see USB spec 2.0, chapter 9, table 9-8. - */ - TUint16 iDeviceRelease; - }; - - /** - * Enumeration of stages within a control transfer - * - * Possible stages defined in USB spec include: - * 1. setup -> status in - * 2. setup -> data in -> status out - * 3. setup -> data out -> status in - */ - enum TControlStage - { - /** - * Control transfer always start with a setup stage in which a setup - * packet is expected. - */ - EControlTransferStageSetup, - - /** The stage that a data packet is expected from be received */ - EControlTransferStageDataOut, - - /** - * Status in stage can either following a Setup stage (if no data stage) - * or following a data out stage. - */ - EControlTransferStageStatusIn, - - /** - * Depends on the request type of a setup packet, a data in stage maybe - * followed after a setup packet. - * - * Within this stage we expect upper/ourself to send some data to host. - */ - EControlTransferStageDataIn, - - /** - * This is an optional stage, some controller will silently swallow - * Status out packet and not able to report it. - * PIL has consider this situation when control transfer state machine - * is introduced. - */ - EControlTransferStageStatusOut, - - EControlTransferStageMax - }; - - /** - * Packet types in control transfers. - * - * PSL need to tell PIL about the types of each packet it received. - * @see MUsbPeripheralPilCallbackIf::Ep0RequestComplete(). - */ - enum TControlPacketType - { - /** Indicates a setup packet */ - EControlPacketTypeSetup, - - /** Indicates a data out packet */ - EControlPacketTypeDataOut, - - /** - * Indicates a status in packet. - * optional, PSL can select not to complete this packet. - */ - EControlPacketTypeStatusIn, - - /** Indicates a data in packet */ - EControlPacketTypeDataIn, - - /** - * Indicates that a status out packet. - * optional, PSL can select not to complete this packet. - */ - EControlPacketTypeStatusOut, - - }; - - /** - * @brief Interface for PSL to do callback to PIL - * - * This is the interface that a PSL need talk with PIL in order to: - * 1. Pass device event (reset/suspend/resume/vbus high/vbus low etc) to PIL. - * 2. Complete a read/write request to PIL. - * 3. Query control transfer stage from PIL. - * 3. Other functions like SetAdress/Handle HNP/Get remote wake up etc. - * - * This interface already been implemented and exported via library - * usbperipheralpil.lib. PSL need to add this library as a dependency in - * you PSL .mmp file. - * - * @lib usbperipheralpil.lib - */ - NONSHARABLE_CLASS(MUsbPeripheralPilCallbackIf) - { - public: - /** - * Used to synchronize the Ep0 Stage machine between PSL and PIL. - * Accepts a SETUP packet and returns the next Ep0 Stage. - * - * This function will NOT lead anything to be changed at PIL, it is - * functioning by parsing the supplied buffer only. - * - * @param aSetupBuf The SETUP packet received by PSL. - * @return The next Ep0 Stage at PIL if PIL receive this setup packet. - * - */ - virtual TControlStage EnquireEp0NextStage(const TUint8* aSetupBuf) const = 0; - - /** - * This function gets called by PSL upon completion of a pending - * endpoint zero data transfer request. - * - * @param aRealEndpoint Either 0 for Ep0 OUT (= Read) - * or 1 for Ep0 IN (= Write). - * @param aCount The number of bytes received or transmitted. - * @param aError The error code of the completed transfer request. - * KErrNone if no error. - * KErrCancel if transfer was cancelled. - * KErrPrematureEnd if a premature end was encountered. - * @param aPktType The type of the packet that being completed. - * - * @return KErrNone if no error during transfer completion processing; - * KErrGeneral if request was a read & a Setup packet was received & - * the recipient for that packet couldn't be found (invalid packet: Ep0 - * has been stalled); KErrNotFound if the request was a read & the - * recipient for that packet (Setup or data) _was_ * found - however no - * read had been set up by that recipient (this case should be used by - * PSL to disable Ep0 interrupt at that point and give the upper layer - * software time to set up a new Ep0 read; once the 'missing' read was - * set up either Ep0DataReceiveProceed or Ep0ReadSetupPktProceed of - * MPeripheralControllerIf class will be called by PIL). - */ - virtual TInt Ep0RequestComplete(TInt aRealEndpoint, - TInt aCount, - TInt aError, - TControlPacketType aPktType) = 0; - - /** - * PSL call this function upon completion of a pending data transfer - * request. This function isn't to be used for endpoint zero completions - * (use Ep0RequestComplete instead). - * - * @param aCallback A pointer to a data transfer request callback - * structure which was previously passed to PSL in a - * SetupEndpointWrite() or SetupEndpointRead() call. - * - */ - virtual void EndpointRequestComplete(TUsbPeripheralRequest* aCallback) = 0; - - /** - * This function gets called by PSL upon detection of either of the - * following events: - * - USB Reset, - * - USB Suspend event, - * - USB Resume signaling, - * - * When the Peripheral Controller PSL is part of an - * OTG-capable port, the PSL shall report the above events - * also when operating as the A-peripheral, including - * reporting the final suspend event that starts the HNP role - * switch back to A-host. - * - * In addition to the events above, a stand-alone peripheral - * controller PSL (one not associated with an OTG port) is - * required to report the following events: - * - VBUS rising above the session valid threshold - * - VBUS falling below the session valid threshold - * - * When the peripheral controller is part of an OTG port, the - * PIL layer receives VBUS notifications via the OTG stack, - * and the peripheral PSL is not expected to report them via - * this interface. - * - * When USB Battery Charging is supported on the - * peripheral-only 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 Peripheral Controller PSL to - * communicate with the Charger Detector PSL (which it may - * implement itself) with respect to VBUS events. - * - * When VBUS rises on the peripheral-only port that fully - * supports Battery Charging Specification Revision 1.1, the - * Charger Detector PSL and the Peripheral Controller PSL need - * to together guarantee that Data Contact Detect is completed - * and the port type detected before notifying VBUS rising. - * When the port type is known, the port type needs to be - * notified to the Charger Detector PSL Observer, followed by - * notifying a VBUS rising event to the Peripheral Controller - * PIL callback interface (via this function). - * - * Where Data Contact Detect is not supported, the VBUS rise - * event needs to be notified to the Peripheral Controller PIL - * callback interface (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. - * - * The Peripheral Controller PSL and the Charger Detector PSL - * need to together guarantee that the peripheral controller - * does not attempt to connect to the bus while charger - * detection is still on-going. When detection has been - * completed and upper layers have indicated readiness to - * connect to the bus (see MPeripheralControllerIf::PeripheralConnect(), - * the Peripheral Controller PSL must connect to the bus. - * - * @param aEvent An enum denoting the event that has occurred. - * - * @return KErrArgument if the event is not recognized, KErrNone - * otherwise - */ - virtual TInt DeviceEventNotification(TUsbPeripheralEvent aEvent) = 0; - - /** - * This function should be called by PSL once the peripheral - * controller (and thus the USB device) is in the Address state. - */ - virtual void MoveToAddressState() = 0; - - /** - * This function should be called by PSL after reception of an Ep0 - * SET_FEATURE request with a feature selector of either {b_hnp_enable, - * a_hnp_support, a_alt_hnp_support}, but ONLY when that Setup packet is - * not handed up to PIL (for instance because it is auto-decoded and - * 'swallowed' by the peripheral controller hardware). - * - * @param aHnpState A bitmask indicating the present state of the three - * OTG feature selectors as follows: - * - * bit.0 == a_alt_hnp_support - * bit.1 == a_hnp_support - * bit.2 == b_hnp_enable - * - * @see TUsbHnpCaps - * - */ - virtual void HandleHnpRequest(TInt aHnpState) = 0; - - /** - * Returns the current USB device state. - * - * 'USB device state' here refers to the device states as defined - * in chapter 9 of the USB specification. - * - * @return The current USB device state, or EUsbPeripheralStateUndefined - * if peripheral stack is disabled. - * - */ - virtual TUsbPeripheralState DeviceStatus() const = 0; - - }; - - /** - * MPeripheralControllerIf - * @brief Abstract class for USB peripheral Chipset API. - * @version 0.2. - * - * PSL driver need to implement all those virtual functions in this class. - * - * Four Steps to create a vendor specific usb peripheral PDD. - * - * Step 1: Derive a new class from MUsbPeripheralControllerIf and - * implement all interfaces defined. - * - * Step 2: Create a new instance (we call it inst_of_psl) of the new class. - * Prepare the configuration data defined by structure - * TUsbPeripheralControllerProps (let's call it cfg_data ) - * - * Step 3: Call UsbPeripheralPil::RegisterPeripheralController(inst_of_psl,cfg_data). - * - * Step 4: Member function SetPilCallbackInterface() will be called. - * An instance of MUsbPeripheralPilCallbackIf will be passed to - * PSL via this call. Record it since PSL need to reuse it later - * for any PIL functionality callback. - * - * That's all. - * - * dynamic view of PDD creation. - * PIL will be compiled and linked alone. - * PSL will be compiled alone and linked against a new lib named - * usbperipheralpil.lib. - * - * For PSL vendors, the following stuff are provided: - * usb_peripheral_shai.h & usb_peripheral_shai_shared.h which is - * used for PSL to implement against. - * usbperipheralpil.lib which is used for PSL to link against. - * - */ - NONSHARABLE_CLASS(MPeripheralControllerIf) - { - public: - /** - * This function will be called once and only once by PIL when a PSL - * registered itself to PIL by calling - * UsbPeripheralPil::RegisterPeripheralController(). - * - * PSL is expected to store the callback interface pointer so that make - * it possible to reporting events back to PIL layer. - * - * For stand-alone peripheral controllers (controllers not associated - * with an OTG port),the Peripheral Controller PSL is required to report - * a EUsbEventVbusRisen event by calling MUsbPeripheralPilCallbackIf:: - * DeviceEventNotification() if VBUS is already high at the point this - * function is called. - * - * @param aPilCallbackIf A reference to PIL callback interface which - a PSL must use to report events. - */ - virtual void SetPilCallbackInterface(MUsbPeripheralPilCallbackIf& aPilCallbackIf) = 0; - - /** - * Sets endpoint zero's RX buffer. - * This buffer is maintains at PIL and always exists. - * - * @param aBuffer the buffer address - * @param aBufferLen the length of the buffer. - * - */ - virtual void SetEp0RxBuffer(TUint8* aBuffer, TInt aBufferLen) = 0; - - /** - * Determines the speed mode that this controller is operating at. - * - * @return one of the speed mode defined by TSpeed. - * @see TSpeed. - */ - virtual TSpeed DeviceOperatingSpeed() = 0; - - /** - * Forces the peripheral controller into a non-idle state to perform a - * USB remote wakeup operation. - * - * PIL layer will make sure the following preconditions are meet before - * calling this function: - * 1. we're already in suspended state for at least 5ms (Twtrsm). - * 2. remote wakeup had been enabled by host. - * - * @return KErrNone if successful, otherwise one of the system-wide - * error codes. - */ - virtual TInt SignalRemoteWakeup() = 0; - - /** - * This function will be called by PIL upon decoding a SET_ADDRESS - * request. PIL will make sure that a status packet will be sent before - * calling this function as USB spec required if capability of - * KDevCapSetAddressAcceleration is not support by hardware; Otherwise - * SetAddress call will go ahead of status packet. - * @see KDevCapSetAddressAcceleration - * - * @param aAddress A valid USB device address that was received with the - * SET_ADDRESS request. - * - * @return KErrNone if address was set successfully or if controller's - * address cannot be set manually. otherwise one of the system- - * wide error codes. - */ - virtual TInt SetDeviceAddress(TInt aAddress) = 0; - - /** - * Configures (enables) an endpoint (incl. Ep0) for data transmission or - * reception. - * - * @param aRealEndpoint The number of the endpoint to be configured. - * @param aEndpointInfo A properly filled-in endpoint info structure. - * - * @return KErrNone if endpoint successfully configured; KErrArgument if - * endpoint number or endpoint info invalid; otherwise one of - * the system-wide error codes. - */ - virtual TInt ConfigureEndpoint(TInt aRealEndpoint, - const TUsbPeripheralEndpointInfo& aEndpointInfo) = 0; - - /** - * De-configures (disables) an endpoint (incl. Ep0). - * - * @param aRealEndpoint The number of the endpoint to be disabled. - * - * @return KErrNone if endpoint successfully de-configured; KErrArgument - * if endpoint number invalid; otherwise one of the system-wide - * error codes. - */ - virtual TInt DeConfigureEndpoint(TInt aRealEndpoint) = 0; - - /** - * Queries the use of and endpoint resource. - * - * @param aRealEndpoint The number of the endpoint. - * @param aResource The endpoint resource to be queried. - * they are one of the following currently: - * KUsbEndpointInfoFeatureWord1_DMA. - * KUsbEndpointInfoFeatureWord1_DoubleBuffering. - * - * @return ETrue if the specified resource is in use at the endpoint, - * EFalse if not. - */ - virtual TBool QueryEndpointResource(TInt aRealEndpoint, TUint32 aResource) const = 0; - - /** - * Sets up a read request on an endpoint (excl. Ep0) for data reception. - * - * PIL will construct a read request as aCallback, and use this function - * to setup and indicate the readiness for reading data from end point. - * - * PSL need to update related data member of aCallback and complete this - * request by calling EndpointRequestComplete() when request is done. - * - * @see TUsbPeripheralRequest - * - * @param aRealEndpoint The number of the endpoint to be used. - * @param aCallback A properly filled-in (by PIL) request callback. - * - * @return KErrNone if read successfully set up; KErrArgument if endpoint - * number is invalid. otherwise one of the system-wide error - * codes. - */ - virtual TInt SetupEndpointRead(TInt aRealEndpoint, TUsbPeripheralRequest& aCallback) = 0; - - /** - * Sets up a write request on an endpoint (excl. Ep0) for transmission. - * - * PIL will contruct a write request as aCallback, and use this function - * to pass down it to PSL. - * - * PSL need to update related data member of aCallback and complete this - * request by calling EndpointRequestComplete() when data is transmitted - * or any error found. - * @see TUsbPeripheralRequest - * - * @param aRealEndpoint The number of the endpoint to be used. - * @param aCallback A properly filled-in request callback. - * - * @return KErrNone if write successfully set up; KErrArgument if - * endpoint number is invalid; otherwise one of the system-wide - * error codes. - */ - virtual TInt SetupEndpointWrite(TInt aRealEndpoint, TUsbPeripheralRequest& aCallback) = 0; - - /** - * Cancels a read request on an endpoint (excl. Ep0). - * - * Note that endpoint 0 read requests are never cancelled by PIL, so - * there is also no CancelEndpointZeroRead() function. - * - * @param aRealEndpoint The number of the endpoint to be used. - * - * @return KErrNone if read successfully cancelled; KErrArgument if - * endpoint number is invalid; otherwise one of the system-wide - * error codes. - */ - virtual TInt CancelEndpointRead(TInt aRealEndpoint) = 0; - - /** - * Cancels a write request on an endpoint (incl. Ep0). - * - * PIL calls this function also to cancel endpoint zero write requests. - * - * @param aRealEndpoint The number of the endpoint to be used. - * - * @return KErrNone if write successfully cancelled; KErrArgument if - * endpoint number is invalid; otherwise one of the system-wide - * error codes. - */ - virtual TInt CancelEndpointWrite(TInt aRealEndpoint) = 0; - - /** - * Same as SetupEndpointRead(), but for endpoint zero only. - * - * No callback structure is used here as reading to ep0 (host may at any - * time send a SETUP packet) must be ready even before upper application - * is ready. So, a buffer will be passed down to PSL by - * MPeripheralControllerIf::SetEp0RxBuffer() during PIL construction, - * this will benefits the PSL to have a buffer always available for this - * purpose. - * - * PSL must complete this request by EndpointRequestComplete() - * - * @return KErrNone if read successfully set up; otherwise one of the - * system-wide error codes. - */ - virtual TInt SetupEndpointZeroRead() = 0; - - /** - * Same as SetupEndpointWrite(), but for endpoint zero only. - * - * No callback is used here as this function is only used by - * PIL layer only and no user side request exists for it. - * - * @param aBuffer This points to the beginning of the data to be sent. - * @param aLength The number of bytes to be sent. - * @param aZlpReqd ETrue if a ZLP is must be sent after the data. - * - * PSL must complete this request by EndpointRequestComplete() - * - * @return KErrNone if write successfully set up; otherwise one of the - * system-wide error codes. - */ - virtual TInt SetupEndpointZeroWrite(const TUint8* aBuffer, - TInt aLength, - TBool aZlpReqd = EFalse) = 0; - - /** - * Sets up on Ep0 for the transmission of a single zero-length packet. - * - * @return KErrNone if ZLP successfully set up; otherwise one of the - * system-wide error codes. - */ - virtual TInt SendEp0ZeroByteStatusPacket() = 0; - - /** - * Stalls an endpoint (incl. Ep0). - * - * Not applicable to Isochronous endpoints. - * - * @param aRealEndpoint The number of the endpoint to be stalled. - * - * @return KErrNone if endpoint successfully stalled; KErrArgument if - * endpoint number is invalid; otherwise one of the system-wide - * error codes. - */ - virtual TInt StallEndpoint(TInt aRealEndpoint) = 0; - - /** - * Clears the stall condition on an endpoint (incl. Ep0). - * - * Not applicable to Isochronous endpoints. - * - * @param aRealEndpoint The number of the endpoint to be stalled. - * - * @return KErrNone if endpoint successfully de-stalled; KErrArgument if - * endpoint number invalid; otherwise one of the system-wide - * error codes. - */ - virtual TInt ClearStallEndpoint(TInt aRealEndpoint) = 0; - - /** - * Resets the data toggle bit for an endpoint (incl. Ep0). - * - * Isochronous endpoints don't use data toggles. - * - * @param aRealEndpoint The number of the endpoint to be used. - * - * @return KErrNone if data toggle successfully reset; KErrArgument if - * endpoint number invalid; otherwise one of the system-wide - * error codes. - */ - virtual TInt ResetDataToggle(TInt aRealEndpoint) = 0; - - /** - * Returns the frame number of the last received SOF packet. - * - * @return The (11-bit) frame number of the last received SOF packet. - * - */ - virtual TInt SynchFrameNumber() const = 0; - - /** - * Stores the (11-bit) frame number that should be sent in response to - * the next SYNCH_FRAME request(s). - * - * @param aFrameNumber The (11-bit) frame number to be set - */ - virtual void SetSynchFrameNumber(TInt aFrameNumber) = 0; - - /** - * Starts peripheral controller. - * - * This initializes the device controller hardware before any other - * operation can be performed. - * Tasks to be carried out here might include: - * - resetting the whole peripheral controller design - * - 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 peripheral controller proper (for instance by - * setting an Enable bit). - * - * This function is also used in an OTG environment when the - * peripheral stack becomes enabled and the controller needs - * to be started and enabled for peripheral use. If the HW - * platform shares resources such as clocks and power between - * the host and peripheral HW, it is probably easiest for the - * PSL to handle the role switch based on the - * MOtgControllerIf::SetControllerRole() call to the OTG - * Controller interface. - * - * @return KErrNone if the controller was successfully started; - * otherwise one of the system-wide error codes. - * - * @see usb_otg_shai.h, MOtgControllerIf::SetControllerRole() - */ - virtual TInt StartPeripheralController() = 0; - - /** - * Stops the peripheral controller. - * - * This basically makes undone what happened in StartPeripheralController(). - * Tasks to be carried out here might include: - * - disabling peripheral controller proper. - * - disabling the USB Reset interrupt. - * - disabling & unbinding the peripheral controller (primary) interrupt. - * - disabling the peripheral controller's clock. - * - * This function is also used in an OTG environment when the peripheral - * stack becomes disabled and the peripheral hardware resources can be - * released. If the hardware platform shares resources such as clocks - * and power between the host and peripheral hardware, it is probably - * easiest for the PSL to handle the role switch based on the - * MOtgControllerIf::SetControllerRole() call to the OTG Controller - * interface. - * - * @return KErrNone if peripheral controller successfully stopped; - * otherwise one of the system-wide error codes. - * - * @see usb_otg_shai.h, MOtgControllerIf::SetControllerRole() - */ - virtual TInt StopPeripheralController() = 0; - - /** - * This function is used to indicate that upper layers are ready to - * start operating as peripheral and want to connect to the USB bus - * if possible. - * - * Since this functionality is not part of the USB specification it - * has to be explicitly supported, either by the peripheral controller - * itself or by the hardware platform. - * - * This call merely reports the upper layer readiness to connect, and - * it is the responsiblity of the PSL to assess when all prerequisites - * for connection are satisfied and physically connect when they are. - * These prerequisites include: - * - * 1. Upper layer readiness has been indicated by calling - * PeripheralConnect(). - * - * 2. The peripheral controller has been started and enabled - * by StartPeripheralController(). - * - * The connection readiness assessment responsibility is delegated to the - * PSL because the physical connection may sometimes be handled by a HW - * state machine, thus making the correct SW-controlled connection time - * HW-specific. - * - * @return KErrNone if peripheral controller successfully connected; - * otherwise one of the system-wide error codes. - */ - virtual TInt PeripheralConnect() = 0; - - /** - * Called to indicate that upper layers no longer want to operate as the - * peripheral and we must disconnect from the USB bus. - * - * Since this functionality is not part of the USB specification it - * has to be explicitly supported, either by the peripheral controller - * itself or by the hardware platform. - * - * @return KErrNone if controller is successfully disconnected; - * otherwise one of the system-wide error codes. - */ - virtual TInt PeripheralDisconnect() = 0; - - /** - * Implements anything peripheral controller might required by following - * bus resume signal. - * - * This function gets called by PIL after it has been notified (by - * PSL) about the Suspend condition. - */ - virtual void Suspend() = 0; - - /** - * Implements anything peripheral controller might required by following - * bus resume signal. - * - * This function gets called by PIL after it has been notified (by - * PSL) about the Resume event. - */ - virtual void Resume() = 0; - - /** - * Implements anything peripheral controller might required by following - * bus resume signal. - * - * This function gets called by PIL after it has been notified (by - * PSL) about the Reset event. - */ - virtual void Reset() = 0; - - /** - * PIL call this function to signal PSL that it has finished processing - * a received Setup packet (on Ep0) and that PSL can now prepare - * itself for the next Ep0 reception. - * - * The reason for having this function is that the situation where no - * Ep0 read has been set up by user and thus a received Setup packet - * cannot immediately be delivered to user. Once user however - * sets up an Ep0 read, PIL then completes the request and eventually - * calls this function. We can implement some sort of flow-control by - * this way. - */ - virtual void Ep0ReadSetupPktProceed() = 0; - - /** - * PIL call this function to signal PSL that it has finished processing - * a received Ep0 data packet and that PSL can now prepare itself for - * the next Ep0 reception. - * - * The reason for having this function is that the situation where no - * Ep0 read has been set up by user and thus a received Setup packet - * cannot immediately be delivered to user. Once user however - * sets up an Ep0 read, PIL then completes the request and eventually - * calls this function. We can implement some sort of flow-control by - * this way. - */ - virtual void Ep0ReadDataPktProceed() = 0; - - /** - * Puts controller into a specific test mode (during HS operation only). - * - * 9.4.9 Set Feature: "The transition to test mode must be complete no - * later than 3 ms after the completion of the status stage of the - * request." (The status stage will have been completed immediately - * before this function gets called.) - * - * @param aTestSelector The specific test mode selector. - * - * @return KErrNone if the specified test mode was entered successfully; - * otherwise one of the system-wide error codes. - */ - virtual TInt EnterTestMode(TUsbTestModeSelector aTestSelector) = 0; - }; - - - /** - * This static class provides the interface which PSL implementation shall - * use to register itself to PIL layer. - */ - NONSHARABLE_CLASS(UsbPeripheralPil) - { - public: - /** - * Registration function to be used by a stand-alone (non-OTG - * port) Peripheral Controller PSL to register itself to the - * PIL layer. Peripheral Controllers that are part of an - * OTG-port are registered by the OTG Controller PSL (see - * usb_otg_shai.h, function UsbOtgPil::RegisterOtgController). - * - * The intended usage is that each stand-alone Peripheral - * Controller PSL is a kernel extension that registers itself - * to the USB Peripheral PIL layer by making this call from - * their own kernel extension entry point function (or an - * equivalent code that runs during bootup). - * - * When the PSL makes this call, PIL layer will call - * SetPilCallbackInterface() function of the supplied Peripheral - * Controller interface to supply the PSL a reference to PIL - * callback interface to be used for reporting peripheral events. - * - * @param aPeripheralControllerIf Reference to the Peripheral - * Controller interface implemented by the registering PSL. - * - * @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. - * - * @lib usbperipheralpil.lib - */ - IMPORT_C static void RegisterPeripheralController(MPeripheralControllerIf& aPeripheralControllerIf, - const TPeripheralControllerProperties& aProperties ); - - private: - /** - * No instance of this class need to be created - */ - UsbPeripheralPil(); - }; - }; - -#include - -#endif // USB_PERIPHERAL_SHAI_H - -// End of File diff -r f92a4f87e424 -r 012cc2ee6408 usb_plat/usb_shai_api/inc/usb_peripheral_shai.inl --- a/usb_plat/usb_shai_api/inc/usb_peripheral_shai.inl Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -/* -* 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 USB_PERIPHERAL_SHAI_INL -#define USB_PERIPHERAL_SHAI_INL - -// -// inline constructor for TPeripheralControllerProperties. -// The responsibility of this constructor is to reset all -// data member of TPeripheralControllerProperties to zero. -// -inline UsbShai::TPeripheralControllerProperties::TPeripheralControllerProperties(): - iControllerCaps(0), - iDfcQueue(NULL), - iDeviceEndpointCaps(NULL), - iDeviceTotalEndpoints(0), - iMaxEp0Size(0), - iDeviceRelease(0) - { - } - -#endif diff -r f92a4f87e424 -r 012cc2ee6408 usb_plat/usb_shai_api/inc/usb_peripheral_shai_shared.h --- a/usb_plat/usb_shai_api/inc/usb_peripheral_shai_shared.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,200 +0,0 @@ -/* -* 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 Peripheral SHAI header shared part. - - 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 - separated header is needed. - - This header is the one that defined all common structures used by - kernel & non-kernel layers software. - - Peripheral SHAI header always include this header automatically. - - @publishedDeviceAbstraction -*/ - -#ifndef USB_PERIPHERAL_SHAI_SHARED_H -#define USB_PERIPHERAL_SHAI_SHARED_H - -// The namespace is documented in file usb_common_shai.h, so it is not -// repeated here -namespace UsbShai - { - /** - * Bitmaps for TUsbPeripheralEndpointCaps.iSupportedTypesAndDir. - * Endpoint supports Control transfer type. - */ - const TUint KUsbEpTypeControl = 0x00000001; - const TUint KUsbEpTypeIsochronous = 0x00000002; - const TUint KUsbEpTypeBulk = 0x00000004; - const TUint KUsbEpTypeInterrupt = 0x00000008; - - /** Endpoint supports IN transfers. */ - const TUint KUsbEpDirIn = 0x80000000; - /** Endpoint supports OUT transfers. */ - const TUint KUsbEpDirOut = 0x40000000; - /** Endpoint supports bidirectional (Control) transfers only.*/ - const TUint KUsbEpDirBidirect = 0x20000000; - - /** - * Indicates that whether DMA is preferred to be applied for this endpoint. - * - * Upper application will declare whether DMA is expected to be used for - * this endpoint if there is one available (PSL knows about it) when setup - * an interface. - * - * PSL can ignore this request if NO DMA is available. - * - * PIL may query whether a DMA is really applied via interface - * MPeripheralControllerIf::QueryEndpointResource() later. - * - * @see TUsbPeripheralEndpointInfo::iFeatureWord1. - */ - const TUint KUsbEndpointInfoFeatureWord1_DMA = 0x00000001; - - /** - * Indicates that whether double buffering is preferred to be applied for - * this endpoint. - * - * Upper application will declare whether double buffering is expected to - * be used for this endpoint if there is one available (PSL knows about it) - * when setup an interface. - * - * PSL can ignore this request if NO double buffering is possible. - * - * PIL may query whether a double buffering is really applied via interface - * MPeripheralControllerIf::QueryEndpointResource() later. - * - * @see TUsbPeripheralEndpointInfo::iFeatureWord1. - */ - const TUint KUsbEndpointInfoFeatureWord1_DoubleBuffering = 0x00000002; - - /** - * These are states that are described in the USB standard. - */ - enum TUsbPeripheralState - { - EUsbPeripheralStateUndefined, // 0 - EUsbPeripheralStateAttached, // 1 - EUsbPeripheralStatePowered, // 2 - EUsbPeripheralStateDefault, // 3 - EUsbPeripheralStateAddress, // 4 - EUsbPeripheralStateConfigured, // 5 - EUsbPeripheralStateSuspended, // 6 - EUsbPeripheralNoState = 0xff // 255 (used as a place holder) - }; - - /** - * Endpoint capabilities as reported by the PSL driver. - */ - class TUsbPeripheralEndpointCaps - { - public: - /** The supported maximum packet sizes. */ - TUint iSizes; - - /** - * The supported endpoint types and directions. - * see the bitmap definition for type and dir inside this header. - */ - TUint iTypesAndDir; - - /** set it to ETrue if it is a 'high-speed, high bandwidth' endpoint. */ - TBool iHighBandwidth; - - /** - * Reserved for future use. - * PSL must set those reserved ram to zero to keep binary compatibility - * with new (in furture) PIL binary which may utilize some of the - * reserved space. - */ - TUint32 iReserved[2]; - }; - - /** - * The desired endpoint capabilities. - * @see MPeripheralControllerIf::ConfigureEndpoint. - */ - class TUsbPeripheralEndpointInfo - { - public: - /** - * Endpoint type. - *(mask: UsbShai::KUsbEpTypeControl, etc., but used as value). - */ - TUint iType; - - /** Direction (mask: UsbShai::KUsbEpDirIn, etc., but used as value). */ - TUint iDir; - - /** Maximum packet size (literal, no mask). */ - TInt iSize; - - /** - * Interval for polling full-speed interrupt and isochronous endpoints. - * Expressed either directly in milliseconds with a valid range 1..255 - * (interrupt), or for use as 'value' in the expression of - * interval=2^(value-1) with a valid range 1..16 (isochronous). - */ - TInt iInterval; - - /** - * Interval for polling high-speed interrupt and isochronous endpoints, - * or to specify the NAK rate for high-speed control and bulk OUT - * endpoints. Expressed either for use as 'value' in the expression - * interval=2^(value-1) with a valid range 1..16 (interrupt and - * isochronous), or directly as the maximum NAK rate with a valid range - * 0..255 (control and bulk). - */ - TInt iInterval_Hs; - - /** - * The number of additional transactions per frame to be scheduled(0..2) - * (A value greater than zero is only valid for high-speed high bandwidth - * interrupt and isochronous endpoints. Also note that there are endpoint - * size restrictions associated with additional transactions - see 9.6.6.). - */ - TInt iTransactions; - - /** - * The number of extra bytes that the standard endpoint descriptor - * should be extended by. In almost all cases, this should be 0 (zero). - */ - TInt iExtra; - - /** - * 32 flag bits indicating miscellaneous endpoint features. - * Currently defined are: - * - KUsbEndpointInfoFeatureWord1_DMA which means apply DMA to this - * endpoint if available. - * - KUsbEndpointInfoFeatureWord1_DoubleBuffering which means apply - * double buffering to this endpoint if available. - */ - TUint32 iFeatureWord1; - - /** Reserved for future use. */ - TUint32 iReserved; - }; - } -#endif //USB_PERIPHERAL_SHAI_SHARED_H - -// End of files diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/ldd/perildd/group/base_e32_drivers_usbcli.mrp --- a/usbdrv/peripheral/ldd/perildd/group/base_e32_drivers_usbcli.mrp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -# component name "USB Client Driver" - -component base_e32_drivers_usbcli - - -source \sf\os\kernelhwsrv\kernel\eka\drivers\usbc -source \sf\os\kernelhwsrv\kernel\eka\drivers\usbcc -source \sf\os\kernelhwsrv\kernel\eka\drivers\usbcsc - -binary \sf\os\kernelhwsrv\kernel\eka\drivers\usbc all -exports \sf\os\kernelhwsrv\kernel\eka\drivers\usbc - -notes_source \component_defs\release.src - - -ipr E - diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/ldd/perildd/group/bld.inf --- a/usbdrv/peripheral/ldd/perildd/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// bld.inf -// USB Client Driver -// -// - -/** - @file -*/ -PRJ_PLATFORMS - -BASEDEFAULT - -PRJ_MMPFILES - -#if defined(GENERIC_MARM) || defined(WINS) || defined(GENERIC_X86) -#if !defined(MARM_THUMB) && !defined(MARM_ARMI) - -#if !defined(WINS) -#if !defined(X86) -usbc -#endif -#endif - - -#endif -#endif diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/ldd/perildd/group/usbc.mmp --- a/usbdrv/peripheral/ldd/perildd/group/usbc.mmp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32/drivers/usbc/usbc.mmp -// -// - - -#include - -OS_LAYER_SYSTEMINCLUDE - - - -target usbcshai.ldd -targettype ldd - -sourcepath ../src -source d_usbc.cpp usbdma.cpp - -library usbperipheralpil.lib - -uid 0 0x101F8928 -VENDORID 0x70000001 -capability all diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/ldd/perildd/src/d_usbc.cpp --- a/usbdrv/peripheral/ldd/perildd/src/d_usbc.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3233 +0,0 @@ -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32/drivers/usbc/d_usbc.cpp -// LDD for USB Device driver stack: -// The channel object. -// -// - -/** - @file d_usbc.cpp - @internalTechnology -*/ - -#include - - -_LIT(KUsbLddName, "Usbc"); - -static const TInt KUsbRequestCallbackPriority = 2; - - -// Quick sanity check on endpoint properties -static TBool ValidateEndpoint(const TUsbcEndpointInfo* aEndpointInfo) - { - const TUint dir = aEndpointInfo->iDir; - const TInt size = aEndpointInfo->iSize; - if (size <= 0) - return EFalse; - - switch (aEndpointInfo->iType) - { - case UsbShai::KUsbEpTypeControl: - if (dir != UsbShai::KUsbEpDirBidirect || size > 64) - return EFalse; - break; - case UsbShai::KUsbEpTypeIsochronous: - if ((dir != UsbShai::KUsbEpDirIn && dir != UsbShai::KUsbEpDirOut) || size > 1024) - return EFalse; - break; - case UsbShai::KUsbEpTypeBulk: - if ((dir != UsbShai::KUsbEpDirIn && dir != UsbShai::KUsbEpDirOut) || size > 512) - return EFalse; - break; - case UsbShai::KUsbEpTypeInterrupt: - if ((dir != UsbShai::KUsbEpDirIn && dir != UsbShai::KUsbEpDirOut) || size > 1024) - return EFalse; - break; - default: - return EFalse; - } - return ETrue; - } - - -/** Real entry point from the Kernel: return a new driver. - */ -DECLARE_STANDARD_LDD() - { - return new DUsbcLogDevice; - } - - -/** Create a channel on the device. - - @internalComponent -*/ -TInt DUsbcLogDevice::Create(DLogicalChannelBase*& aChannel) - { - aChannel = new DLddUsbcChannel; - return aChannel ? KErrNone : KErrNoMemory; - } - - -DUsbcLogDevice::DUsbcLogDevice() - { - iParseMask = KDeviceAllowUnit; - iUnitsMask = 0xffffffff; // Leave units decision to the Controller - iVersion = TVersion(KUsbcMajorVersion, KUsbcMinorVersion, KUsbcBuildVersion); - } - - -TInt DUsbcLogDevice::Install() - { - // Only proceed if we have the Controller underneath us - if (!DUsbClientController::UsbcControllerPointer()) - { - __KTRACE_OPT(KPANIC, Kern::Printf("LDD Install: USB Controller Not Present")); - return KErrGeneral; - } - return SetName(&KUsbLddName); - } - - -// -// Return the USB controller capabilities. -// -void DUsbcLogDevice::GetCaps(TDes8& aDes) const - { - TPckgBuf b; - b().version = iVersion; - Kern::InfoCopy(aDes, b); - } - - -// -// Constructor -// -DLddUsbcChannel::DLddUsbcChannel() - : iValidInterface(EFalse), - iAlternateSettingList(NULL), - iCompleteAllCallbackInfo(this, DLddUsbcChannel::EmergencyCompleteDfc, KUsbRequestCallbackPriority), - iStatusChangePtr(NULL), - iStatusCallbackInfo(this, DLddUsbcChannel::StatusChangeCallback, KUsbRequestCallbackPriority), - iEndpointStatusChangePtr(NULL), - iEndpointStatusCallbackInfo(this, DLddUsbcChannel::EndpointStatusChangeCallback, - KUsbRequestCallbackPriority), - iOtgFeatureChangePtr(NULL), - iOtgFeatureCallbackInfo(this, DLddUsbcChannel::OtgFeatureChangeCallback, KUsbRequestCallbackPriority), - iNumberOfEndpoints(0), - iDeviceState(UsbShai::EUsbPeripheralStateUndefined), - iOwnsDeviceControl(EFalse), - iAlternateSetting(0), - iDeviceStatusNeeded(EFalse), - iChannelClosing(EFalse) - { - __KTRACE_OPT(KUSB, Kern::Printf("*** DLddUsbcChannel::DLddUsbcChannel CTOR")); - iClient = &Kern::CurrentThread(); - iClient->Open(); - for (TInt i = 1; i <= KMaxEndpointsPerClient; i++) - { - iEndpoint[i] = NULL; - } - for (TInt i = 1; i < KUsbcMaxRequests; i++) - { - iRequestStatus[i] = NULL; - } - } - - -DLddUsbcChannel::~DLddUsbcChannel() - { - __KTRACE_OPT(KUSB, Kern::Printf("DLddUsbcChannel::~DLddUsbcChannel()")); - if (iController) - { - iController->DeRegisterClient(this); - iStatusCallbackInfo.Cancel(); - iEndpointStatusCallbackInfo.Cancel(); - iOtgFeatureCallbackInfo.Cancel(); - iCompleteAllCallbackInfo.Cancel(); - AbortInterface(); - DestroyAllInterfaces(); - if (iOwnsDeviceControl) - { - iController->ReleaseDeviceControl(this); - iOwnsDeviceControl = EFalse; - } - DestroyEp0(); - delete iStatusFifo; - Kern::DestroyClientRequest(iStatusChangeReq); - Kern::DestroyClientRequest(iEndpointStatusChangeReq); - Kern::DestroyClientRequest(iOtgFeatureChangeReq); - - Kern::DestroyVirtualPinObject(iPinObj1); - Kern::DestroyVirtualPinObject(iPinObj2); - Kern::DestroyVirtualPinObject(iPinObj3); - - for (TInt i = 0; i < KUsbcMaxRequests; i++) - { - Kern::DestroyClientBufferRequest(iClientAsynchNotify[i]->iBufferRequest); - delete iClientAsynchNotify[i]; - } - } - Kern::SafeClose((DObject*&)iClient, NULL); - } - - -inline TBool DLddUsbcChannel::ValidEndpoint(TInt aEndpoint) - { - return (aEndpoint <= iNumberOfEndpoints && aEndpoint >= 0); - } - - -// -// Create channel -// -TInt DLddUsbcChannel::DoCreate(TInt /*aUnit*/, const TDesC8* /*aInfo*/, const TVersion& aVer) - { - __KTRACE_OPT(KUSB, Kern::Printf("LDD DoCreateL 1 Ver = %02d %02d %02d", - aVer.iMajor, aVer.iMinor, aVer.iBuild)); - if (!Kern::CurrentThreadHasCapability(ECapabilityCommDD, - __PLATSEC_DIAGNOSTIC_STRING("Checked by USBC.LDD (USB Driver)"))) - { - return KErrPermissionDenied; - } - - iController = DUsbClientController::UsbcControllerPointer(); - - if (!iController) - { - return KErrGeneral; - } - - iStatusFifo = new TUsbcDeviceStatusQueue; - if (iStatusFifo == NULL) - { - return KErrNoMemory; - } - - if (!Kern::QueryVersionSupported(TVersion(KUsbcMajorVersion, KUsbcMinorVersion, KUsbcBuildVersion), aVer)) - { - return KErrNotSupported; - } - - // set up the correct DFC queue - SetDfcQ(iController->DfcQ(0)); // sets the channel's dfc queue - #ifdef DFC_REALTIME_STATE - iDfcQ.SetRealtimeState(ERealtimeStateOn); - #endif - iCompleteAllCallbackInfo.SetDfcQ(iDfcQ); - 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); - if (r != KErrNone) - 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; - - Kern::CreateVirtualPinObject(iPinObj1); - Kern::CreateVirtualPinObject(iPinObj2); - Kern::CreateVirtualPinObject(iPinObj3); - - for (TInt i = 0; i < KUsbcMaxRequests; i++) - { - iClientAsynchNotify[i] = new TClientAsynchNotify; - if(iClientAsynchNotify[i] == NULL) - return KErrNoMemory; - r = Kern::CreateClientBufferRequest(iClientAsynchNotify[i]->iBufferRequest,1,TClientBufferRequest::EPinVirtual); - if (r != KErrNone) - { - delete iClientAsynchNotify[i]; - iClientAsynchNotify[i]=NULL; - return r; - } - } - - return r; - } - - - -void DLddUsbcChannel::CompleteBufferRequest(DThread* aThread, TInt aReqNo, TInt aReason) -{ - iRequestStatus[aReqNo]=NULL; - Kern::QueueBufferRequestComplete(aThread, iClientAsynchNotify[aReqNo]->iBufferRequest, aReason); -} - - -TClientBuffer * DLddUsbcChannel::GetClientBuffer(TInt aEndpoint) -{ - return iClientAsynchNotify[aEndpoint]->iClientBuffer; -} - -//Runs in client thread -TInt DLddUsbcChannel::SendMsg(TMessageBase * aMsg) -{ - TThreadMessage& m=* (TThreadMessage*)aMsg; - TInt id = m.iValue; - - TInt r = KErrNone; - //Cancel Request - if (id == KMaxTInt) - { - r = DLogicalChannel::SendMsg(aMsg); - return r; - } - if (id < 0) - { - // DoRequest - TRequestStatus* pS = (TRequestStatus*) m.Ptr0(); - r = PreSendRequest(aMsg,~id, pS, m.Ptr1(), m.Ptr2()); - if (r == KErrNone) - { - r = DLogicalChannel::SendMsg(aMsg); - } - } - else - { - //SendControl - r = SendControl(aMsg); - } - return r; -} - - -TInt DLddUsbcChannel::PreSendRequest(TMessageBase * aMsg,TInt aReqNo, TRequestStatus* aStatus, TAny* a1, TAny* a2) -{ - TInt r = KErrNone; - if (aReqNo >= KUsbcMaxRequests) - { - Kern::RequestComplete(aStatus, KErrNotSupported); - return KErrNotSupported; - } - if (aReqNo > KUsbcMaxEpNumber)//DoOtherAsyncReq - { - switch (aReqNo) - { - case RDevUsbcClient::ERequestEndpointStatusNotify: - iEndpointStatusChangeReq->Reset(); - iEndpointStatusChangeReq->SetStatus(aStatus); - iEndpointStatusChangeReq->SetDestPtr(a1); - break; - case RDevUsbcClient::ERequestOtgFeaturesNotify: - iOtgFeatureChangeReq->Reset(); - iOtgFeatureChangeReq->SetStatus(aStatus); - iOtgFeatureChangeReq->SetDestPtr(a1); - break; - case RDevUsbcClient::ERequestAlternateDeviceStatusNotify: - iStatusChangeReq->Reset(); - iStatusChangeReq->SetStatus(aStatus); - iStatusChangeReq->SetDestPtr(a1); - break; - case RDevUsbcClient::ERequestReEnumerate://WE use bufferrequest to complete even tho we dont add any buffers - iClientAsynchNotify[aReqNo]->Reset(); - r=iClientAsynchNotify[aReqNo]->iBufferRequest->StartSetup(aStatus); - if (r != KErrNone) - return r; - iClientAsynchNotify[aReqNo]->iBufferRequest->EndSetup(); - break; - } - } - else //DoTransferAsyncReq - { - if(a1 == NULL) - return KErrArgument; - iClientAsynchNotify[aReqNo]->Reset(); - r=iClientAsynchNotify[aReqNo]->iBufferRequest->StartSetup(aStatus); - if (r != KErrNone) - return r; - kumemget(&iTfrInfo,a1,sizeof(TEndpointTransferInfo)); - r=iClientAsynchNotify[aReqNo]->iBufferRequest->AddBuffer(iClientAsynchNotify[aReqNo]->iClientBuffer, iTfrInfo.iDes); - if (r != KErrNone) - return r; - iClientAsynchNotify[aReqNo]->iBufferRequest->EndSetup(); - TThreadMessage& m=*(TThreadMessage*)aMsg; - m.iArg[1] = (TAny*)&iTfrInfo; //Use Channel owned TransfereInfo structure - } - return KErrNone; -} - - -void DLddUsbcChannel::HandleMsg(TMessageBase* aMsg) - { - TThreadMessage& m = *(TThreadMessage*)aMsg; - TInt id = m.iValue; - if (id == (TInt) ECloseMsg) - { - iChannelClosing = ETrue; - m.Complete(KErrNone, EFalse); - return; - } - else if (id == KMaxTInt) - { - // Cancel request - TInt mask = m.Int0(); - TInt b = 1; - for(TInt reqNo = 0; reqNo < KUsbcMaxRequests; reqNo++) - { - TRequestStatus* pS = iRequestStatus[reqNo]; - if ((mask & b) && (pS != NULL)) - { - DoCancel(reqNo); - } - b <<= 1; - } - m.Complete(KErrNone, ETrue); - return; - } - - if (id < 0) - { - // DoRequest - TRequestStatus* pS = (TRequestStatus*) m.Ptr0(); - DoRequest(~id, pS, m.Ptr1(), m.Ptr2()); - m.Complete(KErrNone, ETrue); - } - else - { - // DoControl - TInt r = DoControl(id, m.Ptr0(), m.Ptr1()); - m.Complete(r, ETrue); - } - } - - -// -// Overriding DObject virtual -// -TInt DLddUsbcChannel::RequestUserHandle(DThread* aThread, TOwnerType /*aType*/) - { - __KTRACE_OPT(KUSB, Kern::Printf("DLddUsbcChannel::RequestUserHandle")); - // The USB client LDD is not designed for a channel to be shared between - // threads. It saves a pointer to the current thread when it is opened, and - // uses this to complete any asynchronous requests. - // It is therefore not acceptable for the handle to be duplicated and used - // by another thread: - if (aThread == iClient) - { - return KErrNone; - } - else - { - return KErrAccessDenied; - } - } - - -// -// Asynchronous requests - overriding pure virtual -// -void DLddUsbcChannel::DoRequest(TInt aReqNo, TRequestStatus* aStatus, TAny* a1, TAny* a2) - { - // Check on request status - __KTRACE_OPT(KUSB, Kern::Printf("DoRequest 0x%08x", aReqNo)); - TInt r = KErrNone; - if (iRequestStatus[aReqNo] != NULL) - { - DestroyAllInterfaces(); - PanicClientThread(ERequestAlreadyPending); - } - else - { - TBool needsCompletion; - iRequestStatus[aReqNo] = aStatus; - - if (aReqNo > KUsbcMaxEpNumber) - { - r = DoOtherAsyncReq(aReqNo, a1, a2, needsCompletion); - if (needsCompletion) - { - switch (aReqNo) - { - case RDevUsbcClient::ERequestEndpointStatusNotify: - iRequestStatus[aReqNo]=NULL; - Kern::QueueRequestComplete(iClient,iEndpointStatusChangeReq,r); - break; - case RDevUsbcClient::ERequestOtgFeaturesNotify: - iRequestStatus[aReqNo]=NULL; - Kern::QueueRequestComplete(iClient,iOtgFeatureChangeReq,r); - break; - case RDevUsbcClient::ERequestAlternateDeviceStatusNotify: - iRequestStatus[aReqNo]=NULL; - Kern::QueueRequestComplete(iClient,iStatusChangeReq,r); - break; - case RDevUsbcClient::ERequestReEnumerate: - iRequestStatus[aReqNo]=NULL; - Kern::QueueBufferRequestComplete(iClient, iClientAsynchNotify[aReqNo]->iBufferRequest, r); - break; - } - } - } - else - { - r = DoTransferAsyncReq(aReqNo, a1, a2, needsCompletion); - if (needsCompletion) - { - //Kern::RequestComplete(iClient, iRequestStatus[aReqNo], r); - CompleteBufferRequest(iClient, aReqNo, r); - } - } - } - } - - - -TInt DLddUsbcChannel::DoOtherAsyncReq(TInt aReqNo, TAny* a1, TAny* a2, TBool& aNeedsCompletion) - { - // The general assumption is that none of these will complete now. - // However, those that make this function return something other than - // KErrNone will get completed by the calling function. - // So, 1) If you are returning KErrNone but really need to complete because - // completion criteria can be met (for example, sufficient data is - // available in the buffer) and then set aNeedsCompletion = ETrue. - // 2) Do NOT complete here AT ALL. - // - aNeedsCompletion = EFalse; - TInt r = KErrNone; - - switch (aReqNo) - { - case RDevUsbcClient::ERequestAlternateDeviceStatusNotify: - { - __KTRACE_OPT(KUSB, Kern::Printf("EControlReqDeviceStatusNotify")); - if (a1 != NULL) - { - iDeviceStatusNeeded = ETrue; - iStatusChangePtr = a1; - aNeedsCompletion = AlternateDeviceStateTestComplete(); - } - else - r = KErrArgument; - break; - } - case RDevUsbcClient::ERequestReEnumerate: - { - __KTRACE_OPT(KUSB, Kern::Printf("ERequestReEnumerate")); - // If successful, this will complete via the status notification. - r = iController->ReEnumerate(); - break; - } - case RDevUsbcClient::ERequestEndpointStatusNotify: - { - __KTRACE_OPT(KUSB, Kern::Printf("ERequestEndpointStatusNotify")); - if (a1 != NULL) - { - iEndpointStatusChangePtr = a1; - } - else - r = KErrArgument; - break; - } - case RDevUsbcClient::ERequestOtgFeaturesNotify: - { - __KTRACE_OPT(KUSB, Kern::Printf("ERequestOtgFeaturesNotify")); - if (a1 != NULL) - { - iOtgFeatureChangePtr = a1; - } - else - r = KErrArgument; - break; - } - default: - r = KErrNotSupported; - } - - aNeedsCompletion = aNeedsCompletion || (r != KErrNone); - - return r; - } - - -TInt DLddUsbcChannel::DoTransferAsyncReq(TInt aEndpointNum, TAny* a1, TAny* a2, TBool& aNeedsCompletion) - { - // The general assumption is that none of these will complete now. - // however, those that are returning something other than KErrNone will get completed - // by the calling function. - // So, 1) if you are returning KErrNone but really need to complete because completion criteria can be met - // (for example, sufficient data is available in the buffer) and then set aNeedsCompletion=ETrue.. - // 2) Do NOT complete here AT ALL. - // - aNeedsCompletion = EFalse; - TInt r = KErrNone; - TUsbcEndpoint* pEndpoint = NULL; - TUsbcEndpointInfo* pEndpointInfo = NULL; - TEndpointTransferInfo* pTfr = NULL; - - if (aEndpointNum == 0) - { - // ep0 requests - if (!(iValidInterface || iOwnsDeviceControl)) - { - __KTRACE_OPT(KUSB, Kern::Printf("DoRequest rejected: not configured (Ep0)")); - r = KErrUsbInterfaceNotReady; - goto exit; - } - } - else - { - // other eps - if (!(iValidInterface && (iDeviceState == UsbShai::EUsbPeripheralStateConfigured || - iDeviceState == UsbShai::EUsbPeripheralStateSuspended)) - ) - { - __KTRACE_OPT(KUSB, Kern::Printf("DoRequest rejected not configured (Ep %d)", aEndpointNum)); - r = KErrUsbInterfaceNotReady; - goto exit; - } - } - - if (!ValidEndpoint(aEndpointNum)) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: DoRequest Read: in error complete")); - r = KErrUsbEpNotInInterface; - goto exit; - } - - if (a1 == NULL) - { - r = KErrArgument; - goto exit; - } - pTfr = (TEndpointTransferInfo *)a1; - - if (pTfr->iTransferSize < 0) - { - r = KErrArgument; - goto exit; - } - pEndpoint = iEndpoint[aEndpointNum]; - if (!pEndpoint) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: DoRequest Read: in error complete")); - r = KErrUsbEpNotInInterface; - goto exit; - } - - pEndpointInfo = pEndpoint->EndpointInfo(); - __KTRACE_OPT(KUSB, Kern::Printf("DoRequest %d", aEndpointNum)); - - switch (pTfr->iTransferType) - { - - case ETransferTypeReadData: - case ETransferTypeReadPacket: - case ETransferTypeReadUntilShort: - case ETransferTypeReadOneOrMore: - { - __KTRACE_OPT(KUSB, Kern::Printf("DoRequest Read")); - if (pEndpoint->iDmaBuffers->RxIsActive()) - { - __KTRACE_OPT(KUSB, Kern::Printf("**** ReadReq ep%d RxActive", aEndpointNum)); - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf("**** ReadReq ep%d RxInActive", aEndpointNum)); - } - - if (pEndpointInfo->iDir != UsbShai::KUsbEpDirOut && - pEndpointInfo->iDir != UsbShai::KUsbEpDirBidirect) - { - // Trying to do the wrong thing - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: DoRequest Read: in error complete")); - r = KErrUsbEpBadDirection; - break; - } - // Set the length of data to zero now to catch all cases - TPtrC8 pZeroDesc(NULL, 0); - r=Kern::ThreadBufWrite(iClient,iClientAsynchNotify[aEndpointNum]->iClientBuffer, pZeroDesc, 0, 0,iClient); - if (r != KErrNone) - PanicClientThread(r); - pEndpoint->SetTransferInfo(pTfr); - if (pEndpoint->iDmaBuffers->IsReaderEmpty()) - { - pEndpoint->SetClientReadPending(ETrue); - } - else - { - if (pTfr->iTransferType == ETransferTypeReadPacket) - { - __KTRACE_OPT(KUSB, Kern::Printf("DoRequest Read packet: data available complete")); - r = pEndpoint->CopyToClient(iClient,iClientAsynchNotify[aEndpointNum]->iClientBuffer); - aNeedsCompletion = ETrue; - break; - } - else if (pTfr->iTransferType == ETransferTypeReadData) - { - if (pTfr->iTransferSize <= pEndpoint->RxBytesAvailable()) - { - __KTRACE_OPT(KUSB, Kern::Printf("DoRequest Read data: data available complete")); - r = pEndpoint->CopyToClient(iClient,iClientAsynchNotify[aEndpointNum]->iClientBuffer); - aNeedsCompletion = ETrue; - break; - } - else - { - pEndpoint->SetClientReadPending(ETrue); - } - } - else if (pTfr->iTransferType == ETransferTypeReadOneOrMore) - { - if (pEndpoint->RxBytesAvailable() > 0) - { - __KTRACE_OPT(KUSB, Kern::Printf("DoRequest Read data: data available complete")); - r = pEndpoint->CopyToClient(iClient,iClientAsynchNotify[aEndpointNum]->iClientBuffer); - aNeedsCompletion = ETrue; - break; - } - else - { - pEndpoint->SetClientReadPending(ETrue); - } - } - else if (pTfr->iTransferType == ETransferTypeReadUntilShort) - { - TInt nRx = pEndpoint->RxBytesAvailable(); - TInt maxPacketSize = pEndpoint->EndpointInfo()->iSize; - if( (pTfr->iTransferSize <= nRx) || - (nRx < maxPacketSize) || - pEndpoint->iDmaBuffers->ShortPacketExists()) - { - __KTRACE_OPT(KUSB, Kern::Printf("DoRequest Read data: data available complete")); - r = pEndpoint->CopyToClient(iClient,iClientAsynchNotify[aEndpointNum]->iClientBuffer); - aNeedsCompletion = ETrue; - } - else - { - pEndpoint->SetClientReadPending(ETrue); - } - } - } - r = pEndpoint->TryToStartRead(EFalse); - if (r != KErrNone) - { - __KTRACE_OPT(KUSB, Kern::Printf("DoRequest Read: couldn't start read")); - r = KErrNone; // Reader full isn't a userside error; - } - break; - } - - case ETransferTypeWrite: - { - __KTRACE_OPT(KUSB, Kern::Printf("DoRequest Write 1")); - if (pEndpointInfo->iDir != UsbShai::KUsbEpDirIn && - pEndpointInfo->iDir != UsbShai::KUsbEpDirBidirect) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: DoRequest Write: wrong direction complete")); - r = KErrUsbEpBadDirection; - break; - } - __KTRACE_OPT(KUSB, Kern::Printf("DoRequest Write 2")); - - - TInt desLength=iClientAsynchNotify[aEndpointNum]->iClientBuffer->Length(); - - if (desLength < pTfr->iTransferSize) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: DoRequest Write: user buffer too short")); - r = KErrUsbTransferSize; - break; - } - - __KTRACE_OPT(KUSB, Kern::Printf("DoRequest Write 3 length=%d maxlength=%d", - pTfr->iTransferSize, desLength)); - // Zero length writes are acceptable - pEndpoint->SetClientWritePending(ETrue); - r = pEndpoint->TryToStartWrite(pTfr); - if (r != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: DoRequest Write: couldn't start write")); - pEndpoint->SetClientWritePending(EFalse); - } - break; - } - - default: - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: DoTransferAsyncReq: pTfr->iTransferType = %d not supported", - pTfr->iTransferType)); - r = KErrNotSupported; - break; - } - exit: - aNeedsCompletion = aNeedsCompletion || (r != KErrNone); - return r; - } - - -// -// Cancel an outstanding request - overriding pure virtual -// -TInt DLddUsbcChannel::DoCancel(TInt aReqNo) - { - TInt r = KErrNone; - __KTRACE_OPT(KUSB, Kern::Printf("DoCancel: 0x%x", aReqNo)); - if (aReqNo <= iNumberOfEndpoints) - { - __KTRACE_OPT(KUSB, Kern::Printf("DoCancel endpoint: 0x%x", aReqNo)); - iEndpoint[aReqNo]->CancelTransfer(iClient,iClientAsynchNotify[aReqNo]->iClientBuffer); - } - else if (aReqNo == RDevUsbcClient::ERequestAlternateDeviceStatusNotify) - { - __KTRACE_OPT(KUSB, Kern::Printf("DoCancel: ERequestAlternateDeviceStatusNotify 0x%x", aReqNo)); - iDeviceStatusNeeded = EFalse; - iStatusFifo->FlushQueue(); - if (iStatusChangePtr) - { - iStatusChangeReq->Data()=iController->GetDeviceStatus(); - iStatusChangePtr = NULL; - - if (iStatusChangeReq->IsReady()) - { - iRequestStatus[aReqNo] = NULL; - Kern::QueueRequestComplete(iClient, iStatusChangeReq, KErrCancel); - } - return KErrNone; - } - } - else if (aReqNo == RDevUsbcClient::ERequestReEnumerate) - { - __KTRACE_OPT(KUSB, Kern::Printf("DoCancel ERequestReEnumerate: 0x%x", aReqNo)); - } - else if (aReqNo == RDevUsbcClient::ERequestEndpointStatusNotify) - { - __KTRACE_OPT(KUSB, Kern::Printf("DoCancel ERequestEndpointStatusNotify: 0x%x", aReqNo)); - CancelNotifyEndpointStatus(); - if (iEndpointStatusChangeReq->IsReady()) - { - iRequestStatus[aReqNo] = NULL; - Kern::QueueRequestComplete(iClient, iEndpointStatusChangeReq, KErrCancel); - } - return KErrNone; - } - else if (aReqNo == RDevUsbcClient::ERequestOtgFeaturesNotify) - { - __KTRACE_OPT(KUSB, Kern::Printf("DoCancel ERequestOtgFeaturesNotify: 0x%x", aReqNo)); - CancelNotifyOtgFeatures(); - if (iOtgFeatureChangeReq->IsReady()) - { - iRequestStatus[aReqNo] = NULL; - Kern::QueueRequestComplete(iClient, iOtgFeatureChangeReq, KErrCancel); - } - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf("DoCancel Unknown! 0x%x", aReqNo)); - } - - if (r == KErrNone) - r = KErrCancel; - - CompleteBufferRequest(iClient, aReqNo, r); - return r; - } - - -void DLddUsbcChannel::CancelNotifyEndpointStatus() - { - if (iEndpointStatusChangePtr) - { - TUint epBitmap = 0; - for (TInt i = 0; i <= iNumberOfEndpoints; i++) - { - TInt v = iController->GetEndpointStatus(this, iEndpoint[i]->RealEpNumber()); - TUint b; - (v == EEndpointStateStalled) ? b = 1 : b = 0; - epBitmap |= b << i; - } - iEndpointStatusChangeReq->Data()=epBitmap; - iEndpointStatusChangePtr = NULL; - } - } - - -void DLddUsbcChannel::CancelNotifyOtgFeatures() - { - if (iOtgFeatureChangePtr) - { - TUint8 features; - iController->GetCurrentOtgFeatures(features); - iOtgFeatureChangeReq->Data()=features; - iOtgFeatureChangePtr = NULL; - } - } - -TInt DLddUsbcChannel::PinMemory(TDesC8 *aDes, TVirtualPinObject *aPinObj) - { - TInt r = KErrNone; - TInt len,mlen; - - const TUint8*p = Kern::KUDesInfo(*aDes, len,mlen); - r=Kern::PinVirtualMemory(aPinObj, (TLinAddr) p, len); - return r; - } - -//Called in Client thread context -TInt DLddUsbcChannel::SendControl(TMessageBase* aMsg) - { - TThreadMessage& m=*(TThreadMessage*)aMsg; - const TInt fn=m.iValue; - TAny *const a1=m.Ptr0(); - TAny *const a2=m.Ptr1(); - TInt kern_param; - TEndpointDescriptorInfo epi; - TUsbcIfcInfo ifc; - TCSDescriptorInfo desInfo; - TInt r = KErrNone; - - switch (fn) - { - - case RDevUsbcClient::EControlDeviceStatus: - case RDevUsbcClient::EControlGetAlternateSetting: - m.iArg[0] = &kern_param; // update message to point to kernel-side buffer - break; - - case RDevUsbcClient::EControlQueryReceiveBuffer: - case RDevUsbcClient::EControlEndpointStatus: - m.iArg[1] = &kern_param; // update message to point to kernel-side buffer - break; - - case RDevUsbcClient::EControlEndpointCaps: - case RDevUsbcClient::EControlDeviceCaps: - case RDevUsbcClient::EControlGetDeviceDescriptor: - case RDevUsbcClient::EControlSetDeviceDescriptor: - case RDevUsbcClient::EControlGetDeviceDescriptorSize: - case RDevUsbcClient::EControlGetConfigurationDescriptor: - case RDevUsbcClient::EControlGetConfigurationDescriptorSize: - case RDevUsbcClient::EControlGetDeviceQualifierDescriptor: - case RDevUsbcClient::EControlSetDeviceQualifierDescriptor: - case RDevUsbcClient::EControlGetOtherSpeedConfigurationDescriptor: - case RDevUsbcClient::EControlSetOtherSpeedConfigurationDescriptor: - case RDevUsbcClient::EControlGetStringDescriptorLangId: - case RDevUsbcClient::EControlGetManufacturerStringDescriptor: - case RDevUsbcClient::EControlSetManufacturerStringDescriptor: - case RDevUsbcClient::EControlGetProductStringDescriptor: - case RDevUsbcClient::EControlSetProductStringDescriptor: - case RDevUsbcClient::EControlGetSerialNumberStringDescriptor: - case RDevUsbcClient::EControlSetSerialNumberStringDescriptor: - case RDevUsbcClient::EControlGetConfigurationStringDescriptor: - case RDevUsbcClient::EControlSetConfigurationStringDescriptor: - case RDevUsbcClient::EControlSetOtgDescriptor: - case RDevUsbcClient::EControlGetOtgDescriptor: - case RDevUsbcClient::EControlGetOtgFeatures: - r=PinMemory((TDesC8 *) a1, iPinObj1); - if(r!=KErrNone) - { - PanicClientThread(r); - return r; - } - break; - - case RDevUsbcClient::EControlGetInterfaceDescriptor: - case RDevUsbcClient::EControlGetInterfaceDescriptorSize: - case RDevUsbcClient::EControlSetInterfaceDescriptor: - case RDevUsbcClient::EControlGetCSInterfaceDescriptor: - case RDevUsbcClient::EControlGetCSInterfaceDescriptorSize: - case RDevUsbcClient::EControlGetStringDescriptor: - case RDevUsbcClient::EControlSetStringDescriptor: - r=PinMemory((TDesC8 *) a2, iPinObj1); - if(r!=KErrNone) - { - PanicClientThread(r); - return r; - } - break; - - case RDevUsbcClient::EControlGetEndpointDescriptor: - case RDevUsbcClient::EControlGetEndpointDescriptorSize: - case RDevUsbcClient::EControlSetEndpointDescriptor: - case RDevUsbcClient::EControlGetCSEndpointDescriptor: - case RDevUsbcClient::EControlGetCSEndpointDescriptorSize: - if(a1!=NULL) - { - r=Kern::PinVirtualMemory(iPinObj1, (TLinAddr)a1, sizeof(epi)); - if(r!=KErrNone) - { - PanicClientThread(r); - return r; - } - kumemget(&epi, a1, sizeof(epi)); - r=PinMemory((TDesC8 *) epi.iArg, iPinObj2); - if(r!=KErrNone) - { - Kern::UnpinVirtualMemory(iPinObj1); - PanicClientThread(r); - return r; - } - } - break; - - case RDevUsbcClient::EControlSetInterface: - if(a2!=NULL) - { - r=Kern::PinVirtualMemory(iPinObj1, (TLinAddr)a2, sizeof(ifc)); - if(r!=KErrNone) - { - PanicClientThread(r); - return r; - } - kumemget(&ifc, a2, sizeof(ifc)); - r=PinMemory((TDesC8 *) ifc.iInterfaceData, iPinObj2); - if(r!=KErrNone) - { - Kern::UnpinVirtualMemory(iPinObj1); - PanicClientThread(r); - return r; - } - } - break; - - case RDevUsbcClient::EControlSetCSInterfaceDescriptor: - case RDevUsbcClient::EControlSetCSEndpointDescriptor: - if(a1!=NULL) - { - r=Kern::PinVirtualMemory(iPinObj1, (TLinAddr)a1, sizeof(desInfo)); - if(r!=KErrNone) - { - PanicClientThread(r); - return r; - } - kumemget(&desInfo, a1, sizeof(desInfo)); - r=PinMemory((TDesC8 *) desInfo.iArg, iPinObj2); - if(r!=KErrNone) - { - Kern::UnpinVirtualMemory(iPinObj1); - PanicClientThread(r); - return r; - } - } - break; - } - - - //Send Message and wait for synchronous complete - r = DLogicalChannel::SendMsg(aMsg); - - - - switch (fn) - { - case RDevUsbcClient::EControlDeviceStatus: - case RDevUsbcClient::EControlGetAlternateSetting: - umemput32(a1, &kern_param, sizeof(kern_param)); - break; - - case RDevUsbcClient::EControlQueryReceiveBuffer: - case RDevUsbcClient::EControlEndpointStatus: - umemput32(a2, &kern_param, sizeof(kern_param)); - break; - - case RDevUsbcClient::EControlDeviceCaps: - case RDevUsbcClient::EControlEndpointCaps: - case RDevUsbcClient::EControlGetDeviceDescriptor: - case RDevUsbcClient::EControlSetDeviceDescriptor: - case RDevUsbcClient::EControlGetDeviceDescriptorSize: - case RDevUsbcClient::EControlGetConfigurationDescriptor: - case RDevUsbcClient::EControlGetConfigurationDescriptorSize: - case RDevUsbcClient::EControlGetDeviceQualifierDescriptor: - case RDevUsbcClient::EControlSetDeviceQualifierDescriptor: - case RDevUsbcClient::EControlGetOtherSpeedConfigurationDescriptor: - case RDevUsbcClient::EControlSetOtherSpeedConfigurationDescriptor: - case RDevUsbcClient::EControlGetStringDescriptorLangId: - case RDevUsbcClient::EControlGetManufacturerStringDescriptor: - case RDevUsbcClient::EControlSetManufacturerStringDescriptor: - case RDevUsbcClient::EControlGetProductStringDescriptor: - case RDevUsbcClient::EControlSetProductStringDescriptor: - case RDevUsbcClient::EControlGetSerialNumberStringDescriptor: - case RDevUsbcClient::EControlSetSerialNumberStringDescriptor: - case RDevUsbcClient::EControlGetConfigurationStringDescriptor: - case RDevUsbcClient::EControlSetConfigurationStringDescriptor: - case RDevUsbcClient::EControlSetOtgDescriptor: - case RDevUsbcClient::EControlGetOtgDescriptor: - case RDevUsbcClient::EControlGetOtgFeatures: - if(a1!=NULL) - { - Kern::UnpinVirtualMemory(iPinObj1); - } - break; - - case RDevUsbcClient::EControlGetInterfaceDescriptor: - case RDevUsbcClient::EControlGetInterfaceDescriptorSize: - case RDevUsbcClient::EControlSetInterfaceDescriptor: - case RDevUsbcClient::EControlGetCSInterfaceDescriptor: - case RDevUsbcClient::EControlGetCSInterfaceDescriptorSize: - case RDevUsbcClient::EControlGetStringDescriptor: - case RDevUsbcClient::EControlSetStringDescriptor: - if(a2!=NULL) - { - Kern::UnpinVirtualMemory(iPinObj1); - } - break; - - case RDevUsbcClient::EControlGetEndpointDescriptor: - case RDevUsbcClient::EControlGetEndpointDescriptorSize: - case RDevUsbcClient::EControlSetEndpointDescriptor: - case RDevUsbcClient::EControlGetCSEndpointDescriptor: - case RDevUsbcClient::EControlGetCSEndpointDescriptorSize: - case RDevUsbcClient::EControlSetCSInterfaceDescriptor: - case RDevUsbcClient::EControlSetCSEndpointDescriptor: - if(a1!=NULL) - { - Kern::UnpinVirtualMemory(iPinObj1); - Kern::UnpinVirtualMemory(iPinObj2); - } - break; - - case RDevUsbcClient::EControlSetInterface: - if(a2!=NULL) - { - Kern::UnpinVirtualMemory(iPinObj1); - Kern::UnpinVirtualMemory(iPinObj2); - } - break; - } - - return r; - } - - -TInt DLddUsbcChannel::DoControl(TInt aFunction, TAny* a1, TAny* a2) - { - __KTRACE_OPT(KUSB, Kern::Printf("DoControl: %d", aFunction)); - - TInt r = KErrNone; - TInt ep; - TUsbcEndpoint* pEndpoint; - TPtrC8 pZeroDesc(NULL, 0); - TEndpointDescriptorInfo epInfo; - TUsbcIfcInfo ifcInfo; - TCSDescriptorInfo desInfo; - TUsbcEndpointResource epRes; - TInt bandwidthPriority; - - switch (aFunction) - { - case RDevUsbcClient::EControlEndpointZeroRequestError: - __KTRACE_OPT(KUSB, Kern::Printf("EControlEndpointZeroRequestError")); - r = KErrNone; - if (iOwnsDeviceControl || (iValidInterface && iDeviceState == UsbShai::EUsbPeripheralStateConfigured)) - { - iController->Ep0Stall(this); - } - else - { - if (iDeviceState != UsbShai::EUsbPeripheralStateConfigured) - r = KErrUsbDeviceNotConfigured; - else - r = KErrUsbInterfaceNotReady; - } - break; - - case RDevUsbcClient::EControlGetAlternateSetting: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetAlternateSetting")); - if (iValidInterface && iDeviceState == UsbShai::EUsbPeripheralStateConfigured) - { - r = iController->GetInterfaceNumber(this, *(TInt*)a1); - } - else - { - if (iDeviceState != UsbShai::EUsbPeripheralStateConfigured) - r = KErrUsbDeviceNotConfigured; - else - r = KErrUsbInterfaceNotReady; - } - break; - - case RDevUsbcClient::EControlDeviceStatus: - __KTRACE_OPT(KUSB, Kern::Printf("EControlDeviceStatus")); - *(TInt*)a1 = iController->GetDeviceStatus(); - break; - - case RDevUsbcClient::EControlEndpointStatus: - __KTRACE_OPT(KUSB, Kern::Printf("EControlEndpointStatus")); - if (iValidInterface && ValidEndpoint((TInt) a1)) - { - pEndpoint = iEndpoint[(TInt)a1]; - if (pEndpoint == NULL) - r = KErrNotSupported; - else - { - *(TInt*)a2 = iController->GetEndpointStatus(this, iEndpoint[(TInt)a1]->RealEpNumber()); - } - } - else - { - if (iDeviceState != UsbShai::EUsbPeripheralStateConfigured) - r = KErrUsbDeviceNotConfigured; - else - r = KErrUsbInterfaceNotReady; - } - break; - - case RDevUsbcClient::EControlQueryReceiveBuffer: - __KTRACE_OPT(KUSB, Kern::Printf("EControlQueryReceiveBuffer")); - if (iValidInterface && ValidEndpoint((TInt) a1)) - { - pEndpoint=iEndpoint[(TInt) a1]; - if (pEndpoint == NULL) - r = KErrNotSupported; - else if (pEndpoint->EndpointInfo()->iDir != UsbShai::KUsbEpDirIn) - { - __KTRACE_OPT(KUSB, Kern::Printf(" bytes = %d", pEndpoint->RxBytesAvailable())); - *(TInt*)a2 = pEndpoint->RxBytesAvailable(); - } - } - else - { - if (iDeviceState != UsbShai::EUsbPeripheralStateConfigured) - r = KErrUsbDeviceNotConfigured; - else - r = KErrUsbInterfaceNotReady; - } - break; - - case RDevUsbcClient::EControlEndpointCaps: - __KTRACE_OPT(KUSB, Kern::Printf("EControlEndpointCaps")); - r = Kern::ThreadDesWrite(iClient, a1, pZeroDesc, 0, 0, iClient); - if (r != KErrNone) - PanicClientThread(r); - iController->EndpointCaps(this, *((TDes8*) a1)); - break; - - case RDevUsbcClient::EControlDeviceCaps: - __KTRACE_OPT(KUSB, Kern::Printf("EControlDeviceCaps")); - r = Kern::ThreadDesWrite(iClient, a1, pZeroDesc, 0, 0, iClient); - if (r != KErrNone) - PanicClientThread(r); - iController->DeviceCaps(this, *((TDes8*) a1)); - break; - - case RDevUsbcClient::EControlSendEp0StatusPacket: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSendEp0StatusPacket")); - iController->SendEp0StatusPacket(this); - break; - - case RDevUsbcClient::EControlHaltEndpoint: - __KTRACE_OPT(KUSB, Kern::Printf("EControlHaltEndpoint")); - if (iValidInterface && ValidEndpoint((TInt) a1)) - { - r = iController->HaltEndpoint(this, iEndpoint[(TInt)a1]->RealEpNumber()); - } - else - { - if (iDeviceState != UsbShai::EUsbPeripheralStateConfigured) - r = KErrUsbDeviceNotConfigured; - else - r = KErrUsbInterfaceNotReady; - } - break; - - case RDevUsbcClient::EControlClearHaltEndpoint: - __KTRACE_OPT(KUSB, Kern::Printf("EControlClearHaltEndpoint")); - if (iValidInterface && ValidEndpoint((TInt) a1)) - { - r = iController->ClearHaltEndpoint(this, iEndpoint[(TInt)a1]->RealEpNumber()); - } - else - { - if (iDeviceState != UsbShai::EUsbPeripheralStateConfigured) - r = KErrUsbDeviceNotConfigured; - else - r = KErrUsbInterfaceNotReady; - } - break; - - case RDevUsbcClient::EControlDumpRegisters: - __KTRACE_OPT(KUSB, Kern::Printf("EControlDumpRegisters")); - iController->DumpRegisters(); - break; - - case RDevUsbcClient::EControlReleaseDeviceControl: - __KTRACE_OPT(KUSB, Kern::Printf("EControlReleaseDeviceControl")); - iController->ReleaseDeviceControl(this); - iOwnsDeviceControl = EFalse; - break; - - case RDevUsbcClient::EControlEndpointZeroMaxPacketSizes: - __KTRACE_OPT(KUSB, Kern::Printf("EControlEndpointZeroMaxPacketSizes")); - r = iController->EndpointZeroMaxPacketSizes(); - break; - - case RDevUsbcClient::EControlSetEndpointZeroMaxPacketSize: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetEndpointZeroMaxPacketSize")); - r = iController->SetEndpointZeroMaxPacketSize(reinterpret_cast(a1)); - break; - - case RDevUsbcClient::EControlGetEndpointZeroMaxPacketSize: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetEndpointZeroMaxPacketSize")); - r = iController->Ep0PacketSize(); - break; - - case RDevUsbcClient::EControlGetDeviceDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetDeviceDescriptor")); - r = Kern::ThreadDesWrite(iClient, a1, pZeroDesc, 0, 0, iClient); - if (r != KErrNone) - PanicClientThread(r); - r = iController->GetDeviceDescriptor(iClient, *((TDes8*) a1)); - break; - - case RDevUsbcClient::EControlSetDeviceDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetDeviceDescriptor")); - if (a1 != NULL) - r = iController->SetDeviceDescriptor(iClient, *((TDes8*) a1)); - else - r = KErrArgument; - break; - - case RDevUsbcClient::EControlGetDeviceDescriptorSize: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetDeviceDescriptorSize")); - if (a1 != NULL) - r = iController->GetDeviceDescriptorSize(iClient, *((TDes8*) a1)); - else - r = KErrArgument; - break; - - case RDevUsbcClient::EControlGetConfigurationDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetConfigurationDescriptor")); - r = Kern::ThreadDesWrite(iClient, a1, pZeroDesc, 0 , 0, iClient); - if (r != KErrNone) - PanicClientThread(r); - r = iController->GetConfigurationDescriptor(iClient, *((TDes8*) a1)); - break; - - case RDevUsbcClient::EControlGetConfigurationDescriptorSize: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetConfigurationDescriptorSize")); - if (a1 != NULL) - { - r = iController->GetConfigurationDescriptorSize(iClient, *((TDes8*) a1)); - } - else - r = KErrArgument; - break; - - case RDevUsbcClient::EControlSetConfigurationDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetConfigurationDescriptor")); - r = iController->SetConfigurationDescriptor(iClient, *((TDes8*) a1)); - break; - - case RDevUsbcClient::EControlGetInterfaceDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetInterfaceDescriptor")); - r = iController->GetInterfaceDescriptor(iClient, this, (TInt) a1, *((TDes8*) a2)); - break; - - case RDevUsbcClient::EControlGetInterfaceDescriptorSize: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetInterfaceDescriptorSize")); - r = iController->GetInterfaceDescriptorSize(iClient, this, (TInt) a1, *(TDes8*) a2); - break; - - case RDevUsbcClient::EControlSetInterfaceDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetInterfaceDescriptor")); - r = iController->SetInterfaceDescriptor(iClient, this, (TInt) a1, *((TDes8*) a2)); - break; - - case RDevUsbcClient::EControlGetEndpointDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetEndpointDescriptor")); - r = Kern::ThreadRawRead(iClient, a1, &epInfo, sizeof(epInfo)); - if (r != KErrNone) - PanicClientThread(r); - ep = EpFromAlternateSetting(epInfo.iSetting, epInfo.iEndpoint); - r = iController->GetEndpointDescriptor(iClient, this, epInfo.iSetting, - ep, *(TDes8*) epInfo.iArg); - break; - - case RDevUsbcClient::EControlGetEndpointDescriptorSize: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetEndpointDescriptorSize")); - r = Kern::ThreadRawRead(iClient, a1, &epInfo, sizeof(epInfo)); - if (r != KErrNone) - PanicClientThread(r); - ep = EpFromAlternateSetting(epInfo.iSetting, epInfo.iEndpoint); - r = iController->GetEndpointDescriptorSize(iClient, this, epInfo.iSetting, - ep, *(TDes8*) epInfo.iArg); - break; - - case RDevUsbcClient::EControlSetEndpointDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetEndpointDescriptor")); - r = Kern::ThreadRawRead(iClient, a1, &epInfo, sizeof(epInfo)); - if (r != KErrNone) - PanicClientThread(r); - ep = EpFromAlternateSetting(epInfo.iSetting, epInfo.iEndpoint); - r = iController->SetEndpointDescriptor(iClient, this, epInfo.iSetting, - ep, *(TDes8*)epInfo.iArg); - break; - - case RDevUsbcClient::EControlGetDeviceQualifierDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetDeviceQualifierDescriptor")); - r = Kern::ThreadDesWrite(iClient, a1, pZeroDesc, 0, 0, iClient); - if (r != KErrNone) - PanicClientThread(r); - r = iController->GetDeviceQualifierDescriptor(iClient, *((TDes8*) a1)); - break; - - case RDevUsbcClient::EControlSetDeviceQualifierDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetDeviceQualifierDescriptor")); - if (a1 != NULL) - r = iController->SetDeviceQualifierDescriptor(iClient, *((TDes8*) a1)); - else - r = KErrArgument; - break; - - case RDevUsbcClient::EControlGetOtherSpeedConfigurationDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetOtherSpeedConfigurationDescriptor")); - r = Kern::ThreadDesWrite(iClient, a1, pZeroDesc, 0 , 0, iClient); - if (r != KErrNone) - PanicClientThread(r); - r = iController->GetOtherSpeedConfigurationDescriptor(iClient, *((TDes8*) a1)); - break; - - case RDevUsbcClient::EControlSetOtherSpeedConfigurationDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetOtherSpeedConfigurationDescriptor")); - r = iController->SetOtherSpeedConfigurationDescriptor(iClient, *((TDes8*) a1)); - break; - - - case RDevUsbcClient::EControlGetCSInterfaceDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetCSInterfaceDescriptor")); - r = iController->GetCSInterfaceDescriptorBlock(iClient, this, (TInt) a1, *((TDes8*) a2)); - break; - - case RDevUsbcClient::EControlGetCSInterfaceDescriptorSize: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetCSInterfaceDescriptorSize")); - r = iController->GetCSInterfaceDescriptorBlockSize(iClient, this, (TInt) a1, *(TDes8*) a2); - break; - - case RDevUsbcClient::EControlGetCSEndpointDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetCSEndpointDescriptor")); - r = Kern::ThreadRawRead(iClient, a1, &epInfo, sizeof(epInfo)); - if (r != KErrNone) - PanicClientThread(r); - ep = EpFromAlternateSetting(epInfo.iSetting, epInfo.iEndpoint); - r = iController->GetCSEndpointDescriptorBlock(iClient, this, epInfo.iSetting, - ep, *(TDes8*) epInfo.iArg); - break; - - case RDevUsbcClient::EControlGetCSEndpointDescriptorSize: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetCSEndpointDescriptorSize")); - r = Kern::ThreadRawRead(iClient, a1, &epInfo, sizeof(epInfo)); - if (r != KErrNone) - PanicClientThread(r); - ep = EpFromAlternateSetting(epInfo.iSetting, epInfo.iEndpoint); - r = iController->GetCSEndpointDescriptorBlockSize(iClient, this, epInfo.iSetting, - ep, *(TDes8*) epInfo.iArg); - break; - - case RDevUsbcClient::EControlSignalRemoteWakeup: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSignalRemoteWakeup")); - r = iController->SignalRemoteWakeup(); - break; - - case RDevUsbcClient::EControlDeviceDisconnectFromHost: - __KTRACE_OPT(KUSB, Kern::Printf("EControlDeviceDisconnectFromHost")); - r = iController->UsbDisconnect(); - break; - - case RDevUsbcClient::EControlDeviceConnectToHost: - __KTRACE_OPT(KUSB, Kern::Printf("EControlDeviceConnectToHost")); - r = iController->UsbConnect(); - break; - - case RDevUsbcClient::EControlDevicePowerUpUdc: - __KTRACE_OPT(KUSB, Kern::Printf("EControlDevicePowerUpUdc")); - r = iController->PowerUpUdc(); - break; - - case RDevUsbcClient::EControlSetDeviceControl: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetDeviceControl")); - r = iController->SetDeviceControl(this); - if (r == KErrNone) - { - iOwnsDeviceControl = ETrue; - if (iEndpoint[0] == NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetDeviceControl 11")); - r = SetupEp0(); - if (r != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: SetupEp0() failed")); - iController->ReleaseDeviceControl(this); - DestroyEp0(); - iOwnsDeviceControl = EFalse; - } - iEndpoint[0]->TryToStartRead(EFalse); - } - } - else - r = KErrInUse; - break; - - case RDevUsbcClient::EControlCurrentlyUsingHighSpeed: - __KTRACE_OPT(KUSB, Kern::Printf("EControlCurrentlyUsingHighSpeed")); - r = iController->CurrentlyUsingHighSpeed(); - break; - - case RDevUsbcClient::EControlSetInterface: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetInterface")); - r = Kern::ThreadRawRead(iClient, a2, &ifcInfo, sizeof(ifcInfo)); - if (r != KErrNone) - PanicClientThread(r); - if (iValidInterface && (iDeviceState == UsbShai::EUsbPeripheralStateConfigured)) - { - r = KErrGeneral; - } - else - { - bandwidthPriority = ifcInfo.iBandwidthPriority; - if ((bandwidthPriority & 0xffffff00) || - ((bandwidthPriority & 0x0f) >= KUsbcDmaBufMaxPriorities) || - (((bandwidthPriority >> 4) & 0x0f) >= KUsbcDmaBufMaxPriorities)) - { - r = KErrArgument; - } - else - { - r = SetInterface((TInt) a1, &ifcInfo); - } - } - - break; - - case RDevUsbcClient::EControlReleaseInterface: - __KTRACE_OPT(KUSB, Kern::Printf("EControlReleaseInterface")); - r = iController->ReleaseInterface(this, (TInt) a1); - if (r == KErrNone) - { - DestroyInterface((TUint) a1); - } - else - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error in PIL: LDD interface won't be released.")); - } - break; - - case RDevUsbcClient::EControlSetCSInterfaceDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetCSInterfaceDescriptor")); - r = Kern::ThreadRawRead(iClient, a1, &desInfo, sizeof(desInfo)); - if (r != KErrNone) - PanicClientThread(r); - r = iController->SetCSInterfaceDescriptorBlock(iClient, this, desInfo.iSetting, - *reinterpret_cast(desInfo.iArg), - desInfo.iSize); - break; - - case RDevUsbcClient::EControlSetCSEndpointDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetCSEndpointDescriptor")); - r = Kern::ThreadRawRead(iClient, a1, &desInfo, sizeof(desInfo)); - if (r != KErrNone) - PanicClientThread(r); - ep = EpFromAlternateSetting(desInfo.iSetting, desInfo.iEndpoint); - r = iController->SetCSEndpointDescriptorBlock(iClient, this, desInfo.iSetting, ep, - *reinterpret_cast(desInfo.iArg), - desInfo.iSize); - break; - - case RDevUsbcClient::EControlGetStringDescriptorLangId: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetStringDescriptorLangId")); - r = iController->GetStringDescriptorLangId(iClient, *((TDes8*) a1)); - break; - - case RDevUsbcClient::EControlSetStringDescriptorLangId: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetStringDescriptorLangId")); - r = iController->SetStringDescriptorLangId(reinterpret_cast(a1)); - break; - - case RDevUsbcClient::EControlGetManufacturerStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetManufacturerStringDescriptor")); - r = iController->GetManufacturerStringDescriptor(iClient, *((TPtr8*) a1)); - break; - - case RDevUsbcClient::EControlSetManufacturerStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetManufacturerStringDescriptor")); - r = iController->SetManufacturerStringDescriptor(iClient, *((TPtr8*) a1)); - break; - - case RDevUsbcClient::EControlRemoveManufacturerStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlRemoveManufacturerStringDescriptor")); - r = iController->RemoveManufacturerStringDescriptor(); - break; - - case RDevUsbcClient::EControlGetProductStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetProductStringDescriptor")); - r = iController->GetProductStringDescriptor(iClient, *((TPtr8*) a1)); - break; - - case RDevUsbcClient::EControlSetProductStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetProductStringDescriptor")); - r = iController->SetProductStringDescriptor(iClient, *((TPtr8*) a1)); - break; - - case RDevUsbcClient::EControlRemoveProductStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlRemoveProductStringDescriptor")); - r = iController->RemoveProductStringDescriptor(); - break; - - case RDevUsbcClient::EControlGetSerialNumberStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetSerialNumberStringDescriptor")); - r = iController->GetSerialNumberStringDescriptor(iClient, *((TPtr8*) a1)); - break; - - case RDevUsbcClient::EControlSetSerialNumberStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetSerialNumberStringDescriptor")); - r = iController->SetSerialNumberStringDescriptor(iClient, *((TPtr8*) a1)); - break; - - case RDevUsbcClient::EControlRemoveSerialNumberStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlRemoveSerialNumberStringDescriptor")); - r = iController->RemoveSerialNumberStringDescriptor(); - break; - - case RDevUsbcClient::EControlGetConfigurationStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetConfigurationStringDescriptor")); - r = iController->GetConfigurationStringDescriptor(iClient, *((TPtr8*) a1)); - break; - - case RDevUsbcClient::EControlSetConfigurationStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetConfigurationStringDescriptor")); - r = iController->SetConfigurationStringDescriptor(iClient, *((TPtr8*) a1)); - break; - - case RDevUsbcClient::EControlRemoveConfigurationStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlRemoveConfigurationStringDescriptor")); - r = iController->RemoveConfigurationStringDescriptor(); - break; - - case RDevUsbcClient::EControlGetStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetStringDescriptor")); - r = iController->GetStringDescriptor(iClient, (TUint8) (TInt) a1, *((TPtr8*) a2)); - break; - - case RDevUsbcClient::EControlSetStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetStringDescriptor")); - r = iController->SetStringDescriptor(iClient, (TUint8) (TInt) a1, *((TPtr8*) a2)); - break; - - case RDevUsbcClient::EControlRemoveStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlRemoveStringDescriptor")); - r = iController->RemoveStringDescriptor((TUint8) (TInt) a1); - break; - - case RDevUsbcClient::EControlQueryEndpointResourceUse: - epRes = (TUsbcEndpointResource)((TInt) a2); - if (!ValidEndpoint((TInt)a1)) - { - r = KErrUsbEpNotInInterface; - } - else - { - r = iController->QueryEndpointResource(this, iEndpoint[(TInt)a1]->RealEpNumber(), epRes); - } - break; - - case RDevUsbcClient::EControlSetOtgDescriptor: - { - r = iController->SetOtgDescriptor(iClient, *((const TDesC8*)a1)); - } - break; - - case RDevUsbcClient::EControlGetOtgDescriptor: - { - r = iController->GetOtgDescriptor(iClient, *((TDes8*)a1)); - } - break; - - case RDevUsbcClient::EControlGetOtgFeatures: - { - r = iController->GetOtgFeatures(iClient, *((TDes8*)a1)); - } - break; - - default: - __KTRACE_OPT(KUSB, Kern::Printf("Function code not supported")); - r = KErrNotSupported; - } - - return r; - } - - -TInt DLddUsbcChannel::SetInterface(TInt aInterfaceNumber, TUsbcIfcInfo* aInfoBuf) - { - TUsbcInterfaceInfoBuf ifc_info_buf; - TUsbcInterfaceInfoBuf* const ifc_info_buf_ptr = aInfoBuf->iInterfaceData; - const TInt srcLen = Kern::ThreadGetDesLength(iClient, ifc_info_buf_ptr); - if (srcLen < ifc_info_buf.Length()) - { - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface can't copy")); - PanicClientThread(EDesOverflow); - } - - TInt r = Kern::ThreadDesRead(iClient, ifc_info_buf_ptr, ifc_info_buf, 0, KChunkShiftBy0); - if (r != KErrNone) - { - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface Copy failed reason=%d", r)); - PanicClientThread(r); - } - - TUsbcEndpointInfo* pEndpointData = ifc_info_buf().iEndpointData; - - // If an alternate interface is being asked for then do nothing, - // just pass it down to the Controller. - const TInt num_endpoints = ifc_info_buf().iTotalEndpointsUsed; - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface num_endpoints=%d", num_endpoints)); - - // [The next 4 variables have to be initialized here because of the goto's that follow.] - // Both IN and OUT buffers will be fully cached: - const TUint32 cacheAttribs = EMapAttrSupRw | EMapAttrCachedMax; - const TUint32 bandwidthPriority = aInfoBuf->iBandwidthPriority; - - // Supports ep0+5 endpoints - TInt real_ep_numbers[6] = {-1, -1, -1, -1, -1, -1}; - - // See if PIL will accept this interface - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface Calling controller")); - r = iController->SetInterface(this, - iClient, - aInterfaceNumber, - ifc_info_buf().iClass, - aInfoBuf->iString, - ifc_info_buf().iTotalEndpointsUsed, - ifc_info_buf().iEndpointData, - &real_ep_numbers, - ifc_info_buf().iFeatureWord); - - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface controller returned %d", r)); - if (r != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf("SetInterface failed reason=%d", r)); - return r; - } - - // [The next variable has to be initialized here because of the goto's that follow.] - TUsbcAlternateSettingList* alternateSettingListRec; - - // ep0 - if (iEndpoint[0] == NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface 11")); - r = SetupEp0(); - if (r != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: SetupEp0() failed")); - DestroyEp0(); - goto F1; - } - } - - alternateSettingListRec = new TUsbcAlternateSettingList; - if (!alternateSettingListRec) - { - r = KErrNoMemory; - goto F1; - } - - __KTRACE_OPT(KUSB, Kern::Printf("DLddUsbcChannel::SetInterface num_endpoints=%d", num_endpoints)); - - // other endpoints - // calculate the total buffer size - for (TInt i = 1; i <= num_endpoints; i++, pEndpointData++) - { - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface for ep=%d", i)); - if (!ValidateEndpoint(pEndpointData)) - { - r = KErrUsbBadEndpoint; - goto F2; - } - - TUsbcEndpoint* ep = new TUsbcEndpoint(this, iController, pEndpointData, i, bandwidthPriority); - alternateSettingListRec->iEndpoint[i] = ep; - if (!ep) - { - r = KErrNoMemory; - goto F2; - } - if (ep->Construct() != KErrNone) - { - r = KErrNoMemory; - goto F2; - } - - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface for ep=%d rec=0x%08x ep==0x%08x", - i, alternateSettingListRec, ep)); - } - - // buf size of each endpoint - TInt bufSizes[KMaxEndpointsPerClient + 1]; - TInt epNum[KMaxEndpointsPerClient + 1]; - - // init - for( TInt i=0;iiEndpoint[i]->BufferSize(); - } - - __KTRACE_OPT(KUSB, Kern::Printf("Sort the endpoints:")); - - // sort the endpoint number by the bufsize decreasely - for( TInt i=1;iiEpNumDeOrderedByBufSize[i] = epNum[i]; - - __KTRACE_OPT(KUSB, Kern::Printf(" %d:%d", epNum[i], bufSizes[i])); - } - alternateSettingListRec->iEpNumDeOrderedByBufSize[num_endpoints] = epNum[num_endpoints]; - __KTRACE_OPT(KUSB, Kern::Printf(" %d:%d", epNum[num_endpoints], bufSizes[num_endpoints])); - __KTRACE_OPT(KUSB, Kern::Printf("\n")); - - // chain in this alternate setting - alternateSettingListRec->iNext = iAlternateSettingList; - iAlternateSettingList = alternateSettingListRec; - alternateSettingListRec->iSetting = aInterfaceNumber; - alternateSettingListRec->iNumberOfEndpoints = num_endpoints; - - // Record the 'real' endpoint number used by the PDD in both the Ep and - // the Req callback: - for (TInt i = 1; i <= num_endpoints; i++) - { - alternateSettingListRec->iEndpoint[i]->SetRealEpNumber(real_ep_numbers[i]); - } - - r = SetupInterfaceMemory(iHwChunks, cacheAttribs ); - if( r==KErrNone ) - { - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface ready to exit")); - - if (aInterfaceNumber == 0) - { - // make sure we're ready to go with the main interface - iValidInterface = ETrue; - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface SelectAlternateSetting")); - SelectAlternateSetting(0); - } - return KErrNone; - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf("Destroying all interfaces")); - DestroyAllInterfaces(); - DestroyEp0(); - return r; - } - - F2: - delete alternateSettingListRec; - //Fall through - - F1: -#if _DEBUG - TInt r1 = iController->ReleaseInterface(this, aInterfaceNumber); - __KTRACE_OPT(KUSB, Kern::Printf("Release Interface controller returned %d", r1)); -#else - (void) iController->ReleaseInterface(this, aInterfaceNumber); -#endif - return r; - } - -// realloc the memory, and set the previous interfaces -TInt DLddUsbcChannel::SetupInterfaceMemory(RArray &aHwChunks, - TUint32 aCacheAttribs ) - { - TUsbcAlternateSettingList* asRec = iAlternateSettingList; - - // if buffers has been changed - TBool chunkChanged = EFalse; - TInt numOfEp = asRec->iNumberOfEndpoints; - - // 1, collect all bufs' sizes for the current interface - // to realloc all the chunks - __KTRACE_OPT(KUSB, Kern::Printf("Collect all buffer sizes:")); - RArray bufSizes; - for(TInt i=1;i<=numOfEp;i++) - { - TInt nextEp = asRec->iEpNumDeOrderedByBufSize[i]; - TInt epBufCount = asRec->iEndpoint[nextEp]->BufferNumber(); - __KTRACE_OPT(KUSB, Kern::Printf(" ep %d, buf count %d", nextEp, epBufCount )); - for(TInt k=0;kiEndpoint[nextEp]->BufferSize(); - TInt r = bufSizes.Append(epBufSize); - if(r!=KErrNone) - { - iController->DeRegisterClient(this); - bufSizes.Close(); - return r; - } - __KTRACE_OPT(KUSB,Kern::Printf(" %d", epBufSize )); - } - __KTRACE_OPT(KUSB, Kern::Printf("\n")); - - } - - // 2, alloc the buffer decreasely, biggest-->smallest - // 2.1 check the existing chunks - TInt bufCount = bufSizes.Count(); - __KTRACE_OPT(KUSB, Kern::Printf(" ep buf number needed %d", bufCount )); - __KTRACE_OPT(KUSB, Kern::Printf(" chunks available %d", aHwChunks.Count() )); - - TInt chunkInd = 0; - while( (chunkInd(aHwChunks[chunkInd]->LinearAddress()); - - DPlatChunkHw* chunk = ReAllocate(bufSizes[chunkInd], aHwChunks[chunkInd], aCacheAttribs); - if (chunk == NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf("Failed to alloc chunks size %d!", bufSizes[chunkInd])); - // lost all interfaces: - // Tell Controller to release Interface and h/w resources associated with this - iController->DeRegisterClient(this); - bufSizes.Close(); - return KErrNoMemory; - } - else - { - // Parcel out the memory between endpoints - TUint8* newAddr = reinterpret_cast(chunk->LinearAddress()); - __KTRACE_OPT(KUSB, Kern::Printf("SetupInterfaceMemory alloc new chunk=0x%x, size=%d", newAddr,bufSizes[chunkInd])); - // The check is important to avoid chunkChanged to be corrupted. - // This code change is to fix the problem that one chunk is used by multiple interfaces. - if(!chunkChanged) - { - chunkChanged = (newAddr != oldAddr); - } - aHwChunks[chunkInd] = chunk; - } - chunkInd++; - } - - // 2.2 in case available chunks are not enough - while( chunkIndDeRegisterClient(this); - bufSizes.Close(); - return KErrNoMemory; - } - else - { - // Parcel out the memory between endpoints - __KTRACE_OPT(KUSB, Kern::Printf("SetupInterfaceMemory alloc new chunk=0x%x, size=%d", - reinterpret_cast(chunk->LinearAddress()), bufSizes[chunkInd])); - TInt r = aHwChunks.Append(chunk); - if(r!=KErrNone) - { - ClosePhysicalChunk(chunk); - iController->DeRegisterClient(this); - bufSizes.Close(); - return r; - } - } - chunkInd++; - } - - // 3, Set the the bufs of the interfaces - - ReSetInterfaceMemory(asRec, aHwChunks); - - if(chunkChanged) - { - __KTRACE_OPT(KUSB, Kern::Printf("SetupInterfaceMemory readdressing.")); - asRec = asRec->iNext; - while (asRec) - { - // Interfaces are not concurrent so they can all start at the same logical address - __KTRACE_OPT(KUSB, Kern::Printf("SetupInterfaceMemory readdressing setting=%d", asRec->iSetting)); - ReSetInterfaceMemory(asRec, aHwChunks); - asRec = asRec->iNext; - } - } - return KErrNone; - } - -TInt DLddUsbcChannel::SetupEp0() - { - __KTRACE_OPT(KUSB, Kern::Printf("SetupEp0 entry %x", this)); - TInt ep0Size = iController->Ep0PacketSize(); - TUsbcEndpointInfo ep0Info = TUsbcEndpointInfo(UsbShai::KUsbEpTypeControl, UsbShai::KUsbEpDirBidirect, ep0Size); - TUsbcEndpoint* ep0 = new TUsbcEndpoint(this, iController, &ep0Info, 0, 0); - if (ep0 == NULL) - { - return KErrNoMemory; - } - // In case we have to return early: - iEndpoint[0] = ep0; - TInt r = ep0->Construct(); - if (r != KErrNone) - { - return KErrNoMemory; - } - - TInt bufferNum = ep0->BufferNumber(); - TInt bufferSize = ep0->BufferSize(); - TUint32 cacheAttribs = EMapAttrSupRw | EMapAttrCachedMax; - - for(TInt i=0;iLinearAddress(); - ep0->SetBufferAddr( i, buf); - __KTRACE_OPT(KUSB, Kern::Printf("SetupEp0 60 buffer number %d", i)); - __KTRACE_OPT(KUSB, Kern::Printf("SetupEp0 60 buffer size %d", bufferSize)); - } - - ep0->SetRealEpNumber(0); - return KErrNone; - } - -// Set buffer address of the interface -// Precondition: Enough chunks available. -void DLddUsbcChannel::ReSetInterfaceMemory(TUsbcAlternateSettingList* aAlternateSettingListRec, - RArray &aHwChunks) - { - TUsbcAlternateSettingList* asRec = aAlternateSettingListRec; - - // set all the interfaces - TInt chunkInd = 0; - TInt numOfEp = asRec->iNumberOfEndpoints; - - for (TInt i = 1; i <= numOfEp; i++) - { - TInt nextEp = asRec->iEpNumDeOrderedByBufSize[i]; - TInt epBufCount = asRec->iEndpoint[nextEp]->BufferNumber(); - for(TInt k=0;kiEndpoint[nextEp]; - if (ep != NULL ) - { - TUint8* pBuf = NULL; - pBuf = reinterpret_cast(aHwChunks[chunkInd]->LinearAddress()); - ep->SetBufferAddr( k, pBuf); - __KTRACE_OPT(KUSB, Kern::Printf(" ep %d, buf %d, addr 0x%x", nextEp, k, pBuf )); - chunkInd++; - __ASSERT_DEBUG(chunkInd<=aHwChunks.Count(), - Kern::Printf(" Error: available chunks %d, run out at epInd%d, bufInd%d", - aHwChunks.Count(), i, k)); - __ASSERT_DEBUG(chunkInd<=aHwChunks.Count(), - Kern::Fault("usbc.ldd", __LINE__)); - } - } - } - - } - -void DLddUsbcChannel::DestroyAllInterfaces() - { - // Removes all interfaces - TUsbcAlternateSettingList* alternateSettingListRec = iAlternateSettingList; - while (alternateSettingListRec) - { - iController->ReleaseInterface(this, alternateSettingListRec->iSetting); - TUsbcAlternateSettingList* alternateSettingListRecNext = alternateSettingListRec->iNext; - delete alternateSettingListRec; - alternateSettingListRec = alternateSettingListRecNext; - } - iNumberOfEndpoints = 0; - iAlternateSettingList = NULL; - - for(TInt i=0;iiNext; - if (alternateSettingListRec->iSetting == aInterfaceNumber) - { - // This record is to be deleted - if (alternateSettingListRecOld == NULL) - { - // The record to be deleted is at the list head - iAlternateSettingList = alternateSettingListRecNext; - } - else - { - // The record to be deleted is NOT at the list head - alternateSettingListRecOld->iNext = alternateSettingListRecNext; - } - delete alternateSettingListRec; - break; - } - alternateSettingListRecOld = alternateSettingListRec; - alternateSettingListRec = alternateSettingListRecNext; - } - - if (iAlternateSettingList == NULL) - { - // if no interfaces left destroy non-ep0 buffering - for(TInt i=0;iiChannelClosing) - return; - TUint endpointState = dUsbc->iEndpointStatusCallbackInfo.State(); - const TInt reqNo = (TInt) RDevUsbcClient::ERequestEndpointStatusNotify; - if (dUsbc->iRequestStatus[reqNo]) - { - __KTRACE_OPT(KUSB, Kern::Printf("EndpointStatusChangeCallback Notify status")); - DThread* client = dUsbc->iClient; - - dUsbc->iEndpointStatusChangeReq->Data() = endpointState; - dUsbc->iRequestStatus[reqNo] = NULL; - Kern::QueueRequestComplete(client,dUsbc->iEndpointStatusChangeReq,KErrNone); - dUsbc->iEndpointStatusChangePtr = NULL; - } - } - - -void DLddUsbcChannel::StatusChangeCallback(TAny* aDLddUsbcChannel) - { - DLddUsbcChannel* dUsbc = (DLddUsbcChannel*) aDLddUsbcChannel; - if (dUsbc->iChannelClosing) - return; - - TUsbcDeviceState deviceState; - TInt i; - for (i = 0; - (i < KUsbcDeviceStateRequests) && ((deviceState = dUsbc->iStatusCallbackInfo.State(i)) != UsbShai::EUsbPeripheralNoState); - ++i) - { - __KTRACE_OPT(KUSB, Kern::Printf("StatusChangeCallBack status=%d", deviceState)); - if (deviceState & KUsbAlternateSetting) - { - dUsbc->ProcessAlternateSetting(deviceState); - } - else - { - dUsbc->ProcessDeviceState(deviceState); - } - // Only queue if userside is interested - if (dUsbc->iDeviceStatusNeeded) - { - dUsbc->iStatusFifo->AddStatusToQueue(deviceState); - const TInt reqNo = (TInt) RDevUsbcClient::ERequestAlternateDeviceStatusNotify; - if (dUsbc->AlternateDeviceStateTestComplete()) - { - dUsbc->iRequestStatus[reqNo]=NULL; - Kern::QueueRequestComplete(dUsbc->iClient,dUsbc->iStatusChangeReq,KErrNone); - } - } - } - // We don't want to be interrupted in the middle of this: - const TInt irqs = NKern::DisableInterrupts(2); - dUsbc->iStatusCallbackInfo.ResetState(); - NKern::RestoreInterrupts(irqs); - } - - -void DLddUsbcChannel::OtgFeatureChangeCallback(TAny* aDLddUsbcChannel) - { - __KTRACE_OPT(KUSB, Kern::Printf("OtgFeatureChangeCallback")); - DLddUsbcChannel* dUsbc = (DLddUsbcChannel*) aDLddUsbcChannel; - if (dUsbc->iChannelClosing) - return; - - TUint8 features; - // No return value check. Assume OTG always supported here - dUsbc->iController->GetCurrentOtgFeatures(features); - - const TInt reqNo = (TInt) RDevUsbcClient::ERequestOtgFeaturesNotify; - if (dUsbc->iRequestStatus[reqNo]) - { - __KTRACE_OPT(KUSB, Kern::Printf("OtgFeatureChangeCallback Notify status")); - dUsbc->iOtgFeatureChangeReq->Data()=features; - dUsbc->iRequestStatus[reqNo] = NULL; - Kern::QueueRequestComplete(dUsbc->iClient,dUsbc->iOtgFeatureChangeReq,KErrNone); - dUsbc->iOtgFeatureChangePtr = NULL; - } - } - - -TInt DLddUsbcChannel::SelectAlternateSetting(TUint aAlternateSetting) - { - TInt r = KErrGeneral; // error code doesn't go userside - TUsbcAlternateSettingList* alternateSettingListRec = iAlternateSettingList; - while (alternateSettingListRec) - { - if (alternateSettingListRec->iSetting == aAlternateSetting) - { - // found the correct interface, now latch in new endpoint set - for (TInt i = 1; i <= KMaxEndpointsPerClient; i++) - { - iEndpoint[i] = NULL; - } - iNumberOfEndpoints = alternateSettingListRec->iNumberOfEndpoints; - r = KErrNone; - for (TInt i = 1; i <= KMaxEndpointsPerClient; i++) - { - iEndpoint[i] = alternateSettingListRec->iEndpoint[i]; - } - // Only after correct alternate setting has been chosen. - UpdateEndpointSizes(); - } - alternateSettingListRec = alternateSettingListRec->iNext; - } - return r; - } - - -TInt DLddUsbcChannel::EpFromAlternateSetting(TUint aAlternateSetting, TInt aEndpoint) - { - TUsbcAlternateSettingList* alternateSettingListRec = iAlternateSettingList; - while (alternateSettingListRec) - { - if (alternateSettingListRec->iSetting == aAlternateSetting) - { - if ((aEndpoint <= alternateSettingListRec->iNumberOfEndpoints) && - (aEndpoint >= 0)) - { - return alternateSettingListRec->iEndpoint[aEndpoint]->RealEpNumber(); - } - else - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: aEndpoint %d wrong for aAlternateSetting %d", - aEndpoint, aAlternateSetting)); - return -1; - } - } - alternateSettingListRec = alternateSettingListRec->iNext; - } - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no aAlternateSetting %d found", aAlternateSetting)); - return -1; - } - - -TInt DLddUsbcChannel::ProcessAlternateSetting(TUint aAlternateSetting) - { - ResetInterface(KErrUsbInterfaceChange); // kill any outstanding transfers - __KTRACE_OPT(KUSB, Kern::Printf("ProcessAlternateSetting 0x%08x", aAlternateSetting)); - TUint newSetting = aAlternateSetting&(~KUsbAlternateSetting); - __KTRACE_OPT(KUSB, Kern::Printf("ProcessAlternateSetting selecting alternate setting 0x%08x", newSetting)); - TInt r = SelectAlternateSetting(newSetting); - if (r != KErrNone) - return r; - StartEpReads(); - iAlternateSetting = newSetting; - return KErrNone; - } - - -TInt DLddUsbcChannel::ProcessDeviceState(TUsbcDeviceState aDeviceState) - { - __KTRACE_OPT(KUSB, Kern::Printf("ProcessDeviceState(%d -> %d)", iDeviceState, aDeviceState)); - if (iDeviceState == aDeviceState) - { - __KTRACE_OPT(KUSB, Kern::Printf(" No state change => nothing to be done.")); - return KErrNone; - } - if (iDeviceState == UsbShai::EUsbPeripheralStateSuspended) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Coming out of Suspend: old state = %d", iOldDeviceState)); - iDeviceState = iOldDeviceState; - if (iDeviceState == aDeviceState) - { - __KTRACE_OPT(KUSB, Kern::Printf(" New state same as before Suspend => nothing to be done.")); - return KErrNone; - } - } - TBool renumerateState = (aDeviceState == UsbShai::EUsbPeripheralStateConfigured); - TBool deconfigured = EFalse; - TInt cancellationCode = KErrNone; - if (aDeviceState == UsbShai::EUsbPeripheralStateSuspended) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Suspending...")); - iOldDeviceState = iDeviceState; - // Put PSL into low power mode here - } - else - { - deconfigured = (iDeviceState == UsbShai::EUsbPeripheralStateConfigured && - aDeviceState != UsbShai::EUsbPeripheralStateConfigured); - if (iDeviceState == UsbShai::EUsbPeripheralStateConfigured) - { - if (aDeviceState == UsbShai::EUsbPeripheralStateUndefined) - cancellationCode = KErrUsbCableDetached; - else if (aDeviceState == UsbShai::EUsbPeripheralStateAddress) - cancellationCode = KErrUsbDeviceNotConfigured; - else if (aDeviceState == UsbShai::EUsbPeripheralStateDefault) - cancellationCode = KErrUsbDeviceBusReset; - else - cancellationCode = KErrUsbDeviceNotConfigured; - } - } - __KTRACE_OPT(KUSB, Kern::Printf(" %d --> %d", iDeviceState, aDeviceState)); - iDeviceState = aDeviceState; - if (iValidInterface || iOwnsDeviceControl) - { - // This LDD may not own an interface. It could be some manager reenumerating - // after its subordinate LDDs have setup their interfaces. - if (deconfigured) - { - DeConfigure(cancellationCode); - } - else if (renumerateState) - { - // Update size of Ep0. - iEndpoint[0]->SetMaxPacketSize(iController->Ep0PacketSize()); - // First cancel transfers on all endpoints - ResetInterface(KErrUsbInterfaceChange); - // Select main interface & latch in new endpoint set - SelectAlternateSetting(0); - // Here we go - StartEpReads(); - } - } - - const TInt reqNo = (TInt) RDevUsbcClient::ERequestReEnumerate; - if (renumerateState && iRequestStatus[reqNo]) - { - // This lot must be done if we are reenumerated - CompleteBufferRequest(iClient, reqNo, KErrNone); - } - - return KErrNone; - } - - -void DLddUsbcChannel::UpdateEndpointSizes() - { - // The regular ones. - TInt i = 0; - while ((++i <= KMaxEndpointsPerClient) && iEndpoint[i]) - { - const TInt size = iController->EndpointPacketSize(this, iEndpoint[i]->RealEpNumber()); - if (size < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Packet size < 0 for ep %d", i)); - continue; - } - iEndpoint[i]->SetMaxPacketSize(size); - } - __ASSERT_DEBUG(i == iNumberOfEndpoints + 1, - Kern::Printf(" Error: iNumberOfEndpoints wrong (%d)", iNumberOfEndpoints)); - } - - -DPlatChunkHw* DLddUsbcChannel::ReAllocate(TInt aBuffersize, DPlatChunkHw* aHwChunk, TUint32 aCacheAttribs) - { - DPlatChunkHw* chunk = aHwChunk; - if ((!chunk) || (chunk->iSize < aBuffersize)) - { - if (chunk) - { - ClosePhysicalChunk(chunk); - } - __KTRACE_OPT(KUSB, Kern::Printf("ReAllocate need to get new chunk")); - chunk = Allocate(aBuffersize, aCacheAttribs); - } - return chunk; - } - - -DPlatChunkHw* DLddUsbcChannel::Allocate(TInt aBuffersize, TUint32 aCacheAttribs) - { - TUint32 physAddr = 0; - TUint32 size = Kern::RoundToPageSize(aBuffersize); - - if (Epoc::AllocPhysicalRam(size, physAddr) != KErrNone) - return NULL; - - DPlatChunkHw* HwChunk; - if (DPlatChunkHw::New(HwChunk, physAddr, aBuffersize, aCacheAttribs) != KErrNone) - { - Epoc::FreePhysicalRam(physAddr, size); - return NULL; - } - - return HwChunk; - } - - -TInt DLddUsbcChannel::DoRxComplete(TUsbcEndpoint* aTUsbcEndpoint, TInt aEndpoint, TBool aReEntrant) - { - TBool completeNow; - TInt err = aTUsbcEndpoint->CopyToClient(iClient, completeNow,iClientAsynchNotify[aEndpoint]->iClientBuffer); - if (completeNow) - { - aTUsbcEndpoint->SetClientReadPending(EFalse); - CompleteBufferRequest(iClient, aEndpoint, err); - } - aTUsbcEndpoint->TryToStartRead(aReEntrant); - return err; - } - - -void DLddUsbcChannel::DoRxCompleteNow(TUsbcEndpoint* aTUsbcEndpoint, TInt aEndpoint) - { - aTUsbcEndpoint->SetClientReadPending(EFalse); - CompleteBufferRequest(iClient, aEndpoint, KErrCancel); - } - - -void DLddUsbcChannel::DoTxComplete(TUsbcEndpoint* aTUsbcEndpoint, TInt aEndpoint, TInt aError) - { - aTUsbcEndpoint->SetClientWritePending(EFalse); - CompleteBufferRequest(iClient, aEndpoint, aError); - } - - -TBool DLddUsbcChannel::AlternateDeviceStateTestComplete() - { - TBool completeNow = EFalse; - const TInt reqNo = (TInt) RDevUsbcClient::ERequestAlternateDeviceStatusNotify; - if (iRequestStatus[reqNo]) - { - // User req is outstanding - TUint32 deviceState; - if (iStatusFifo->GetDeviceQueuedStatus(deviceState) == KErrNone) - { - // Device state waiting to be sent userside - completeNow = ETrue; - __KTRACE_OPT(KUSB, Kern::Printf("StatusChangeCallback Notify status")); - iStatusChangeReq->Data()=deviceState; - iStatusChangePtr = NULL; - } - } - return completeNow; - } - - -void DLddUsbcChannel::EmergencyCompleteDfc(TAny* aDLddUsbcChannel) - { - ((DLddUsbcChannel*) aDLddUsbcChannel)->DoEmergencyComplete(); - } - - -void DLddUsbcChannel::DeConfigure(TInt aErrorCode) - { - __KTRACE_OPT(KUSB, Kern::Printf("DLddUsbcChannel::DeConfigure()")); - // Called after deconfiguration. Cancels transfers on all endpoints. - ResetInterface(aErrorCode); - // Cancel the endpoint status notify request if it is outstanding. - const TInt KEpNotReq = RDevUsbcClient::ERequestEndpointStatusNotify; - if (iRequestStatus[KEpNotReq]) - { - CancelNotifyEndpointStatus(); - iRequestStatus[KEpNotReq]=NULL; - Kern::QueueRequestComplete(iClient,iEndpointStatusChangeReq,aErrorCode); - } - // We have to reset the alternate setting number when the config goes away. - SelectAlternateSetting(0); - iAlternateSetting = 0; - } - - -void DLddUsbcChannel::StartEpReads() - { - // Queued after enumeration. Starts reads on all endpoints. - // The endpoint itself decides if it can do a read - TInt i; - for (i = 0; i <= iNumberOfEndpoints; i++) - { - // The endpoint itself will decide if it can read - iEndpoint[i]->TryToStartRead(EFalse); - } - } - - -void DLddUsbcChannel::ResetInterface(TInt aErrorCode) - { - // Called after change in alternate setting. Cancels transfers on all endpoints - if (iValidInterface || iOwnsDeviceControl) - { - // Reset each endpoint except ep0 - for (TInt i = 1; i <= iNumberOfEndpoints; i++) - { - __KTRACE_OPT(KUSB, Kern::Printf("Cancelling transfer ep=%d", i)); - iEndpoint[i]->CancelTransfer(iClient,iClientAsynchNotify[i]->iClientBuffer); // Copies data userside - iEndpoint[i]->AbortTransfer(); // kills any ldd->pil outstanding transfers - iEndpoint[i]->iDmaBuffers->Flush(); - if (iRequestStatus[i] != NULL) - CompleteBufferRequest(iClient, i, aErrorCode); - iEndpoint[i]->SetClientWritePending(EFalse); - iEndpoint[i]->SetClientReadPending(EFalse); - } - } - } - - -void DLddUsbcChannel::AbortInterface() - { - // Called after when channel is closing - if (iValidInterface || iOwnsDeviceControl) - { - for (TInt i = 0; i <= iNumberOfEndpoints; i++) - { - if (iEndpoint[i]) - { - // kills any LDD->PDD outstanding transfers - iEndpoint[i]->AbortTransfer(); - } - } - } - } - - -void DLddUsbcChannel::ClosePhysicalChunk(DPlatChunkHw*& aHwChunk) - { - if (aHwChunk) - { - const TPhysAddr addr = aHwChunk->PhysicalAddress(); - const TInt size = aHwChunk->iSize; - aHwChunk->Close(NULL); - Epoc::FreePhysicalRam(addr, size); - } - aHwChunk = NULL; - } - - -TInt DLddUsbcChannel::DoEmergencyComplete() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcEndpoint::DoEmergencyComplete")); - // cancel any pending DFCs - // complete all client requests - for (TInt i = 0; i < KUsbcMaxRequests; i++) - { - if (iRequestStatus[i]) - { - __KTRACE_OPT(KUSB, Kern::Printf("Complete request 0x%x", iRequestStatus[i])); - - if (i == RDevUsbcClient::ERequestAlternateDeviceStatusNotify) - { - - iDeviceStatusNeeded = EFalse; - iStatusFifo->FlushQueue(); - - if (iStatusChangePtr) - { - iStatusChangeReq->Data() = iController->GetDeviceStatus(); - iStatusChangePtr = NULL; - - if (iStatusChangeReq->IsReady()) - { - iRequestStatus[i] = NULL; - Kern::QueueRequestComplete(iClient, iStatusChangeReq, - KErrDisconnected); - } - } - - } - else if (i == RDevUsbcClient::ERequestEndpointStatusNotify) - { - - if (iEndpointStatusChangePtr) - { - TUint epBitmap = 0; - for (TInt i = 0; i <= iNumberOfEndpoints; i++) - { - TInt v = iController->GetEndpointStatus(this, iEndpoint[i]->RealEpNumber()); - TUint b; - (v == EEndpointStateStalled) ? b = 1 : b = 0; - epBitmap |= b << i; - } - - iEndpointStatusChangeReq->Data() = epBitmap; - iEndpointStatusChangePtr = NULL; - } - - if (iEndpointStatusChangeReq->IsReady()) - { - iRequestStatus[i] = NULL; - Kern::QueueRequestComplete(iClient,iEndpointStatusChangeReq,KErrDisconnected); - } - - } - else if (i == RDevUsbcClient::ERequestOtgFeaturesNotify) - { - - if (iOtgFeatureChangePtr) - { - TUint8 features; - iController->GetCurrentOtgFeatures(features); - iOtgFeatureChangeReq->Data()=features; - iOtgFeatureChangePtr = NULL; - } - - if (iOtgFeatureChangeReq->IsReady()) - { - iRequestStatus[i] = NULL; - Kern::QueueRequestComplete(iClient, iOtgFeatureChangeReq, - KErrDisconnected); - } - - } - else - { - CompleteBufferRequest(iClient, i, KErrDisconnected); - } - - } - } - - iStatusCallbackInfo.Cancel(); - iEndpointStatusCallbackInfo.Cancel(); - iOtgFeatureCallbackInfo.Cancel(); - return KErrNone; - } - - -void DLddUsbcChannel::PanicClientThread(TInt aReason) - { - Kern::ThreadKill(iClient, EExitPanic, aReason, KUsbLDDKillCat); - } - - -// ===============Endpoint==================== - -// Constructor -TUsbcEndpoint::TUsbcEndpoint(DLddUsbcChannel* aLDD, DUsbClientController* aController, - const TUsbcEndpointInfo* aEndpointInfo, TInt aEndpointNum, - TInt aBandwidthPriority) - : iController(aController), - iEndpointInfo(aEndpointInfo->iType, aEndpointInfo->iDir, aEndpointInfo->iSize), - iClientReadPending(EFalse), - iClientWritePending(EFalse), - iEndpointNumber(aEndpointNum), - iRealEpNumber(-1), - iLdd(aLDD), - iError(KErrNone), - iRequestCallbackInfo(NULL), - iBytesTransferred(0), - iBandwidthPriority(aBandwidthPriority) - { - ResetTransferInfo(); - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcEndpoint::TUsbcEndpoint 2")); - } - - -TInt TUsbcEndpoint::Construct() - { - iDmaBuffers = new TDmaBuf(&iEndpointInfo, iBandwidthPriority); - if (iDmaBuffers == NULL) - { - return KErrNoMemory; - } - const TInt r = iDmaBuffers->Construct(&iEndpointInfo); - if (r != KErrNone) - { - return r; - } - iRequestCallbackInfo = new TUsbcRequestCallback(iLdd, - iEndpointNumber, - TUsbcEndpoint::RequestCallback, - this, - iLdd->iDfcQ, - KUsbRequestCallbackPriority); - if (iRequestCallbackInfo == NULL) - { - return KErrNoMemory; - } - return KErrNone; - } - - -TUsbcEndpoint::~TUsbcEndpoint() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcEndpoint::~TUsbcEndpoint(%d)", iEndpointNumber)); - AbortTransfer(); - delete iRequestCallbackInfo; - delete iDmaBuffers; - } - - -void TUsbcEndpoint::RequestCallback(TAny* aTUsbcEndpoint) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcEndpoint::RequestCallback")); - ((TUsbcEndpoint*) aTUsbcEndpoint)->EndpointComplete(); - } - - -void TUsbcEndpoint::SetMaxPacketSize(TInt aSize) - { - iEndpointInfo.iSize = aSize; - iDmaBuffers->SetMaxPacketSize(aSize); - } - - -TInt TUsbcEndpoint::EndpointComplete() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcEndpoint::EndpointComplete ep=%d %d", - iEndpointNumber, iRequestCallbackInfo->iEndpointNum)); - - if (iLdd->ChannelClosing()) - { - __KTRACE_OPT(KUSB, Kern::Printf("We're going home -> completions no longer accepted")); - return KErrNone; - } - - UsbShai::TTransferDirection transferDir = iRequestCallbackInfo->iTransferDir; - TInt error = iRequestCallbackInfo->iError; - - switch (transferDir) - { - - case UsbShai::EControllerWrite: - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcEndpoint::EndpointComplete Write 2")); - if (!iDmaBuffers->TxIsActive()) - { - __KTRACE_OPT(KUSB, Kern::Printf(" TX completion but !iDmaBuffers->TxIsActive()")); - break; - } - - iDmaBuffers->TxSetInActive(); - TBool completeNow = EFalse; - iBytesTransferred += iRequestCallbackInfo->iTxBytes; - if (iClientWritePending) - { - //Complete Outstanding Write if necessary - iError = error; - if (iError != KErrNone) - { - completeNow = ETrue; - if (iError == KErrPrematureEnd) // Previous write could not be completed - iError = KErrNone; - } - else - { - if (iBytesTransferred == (TUint32) iTransferInfo.iTransferSize) - { - completeNow = ETrue; - } - else - { - iError = ContinueWrite(); - if (iError != KErrNone) - completeNow = ETrue; - } - } - if (completeNow) - { - TxComplete(); - ResetTransferInfo(); - if (iEndpointNumber == 0) - { - iDmaBuffers->Flush(); - TryToStartRead(EFalse); - } - } - } - break; - } - - case UsbShai::EControllerRead: - { - // The first packet always contains the total #of bytes - const TInt byteCount = iRequestCallbackInfo->iPacketSize[0]; - const TInt packetCount = iRequestCallbackInfo->iRxPackets; - iDmaBuffers->ReadXferComplete(byteCount, packetCount, error); - - // We queue the dfc if we can complete the read, i.e. if we are reading a packet, - // or if we have enough data to satisfy a read data request. - if (iClientReadPending) - { - //Complete outstanding read - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcEndpoint::EndpointComplete Read 3 (bytes " - "available=%d)", iDmaBuffers->RxBytesAvailable())); - TInt bytesReqd = iTransferInfo.iTransferSize - iBytesTransferred; - TBool completeNow = EFalse; - - if (iTransferInfo.iTransferType == ETransferTypeReadPacket || - iTransferInfo.iTransferType == ETransferTypeReadOneOrMore) - { - // Always complete on a packet read - completeNow = ETrue; - } - else if (iTransferInfo.iTransferType == ETransferTypeReadData) - { - // Complete only if enough data is present - if (iDmaBuffers->RxBytesAvailable() >= bytesReqd) - completeNow = ETrue; - } - else if (iTransferInfo.iTransferType == ETransferTypeReadUntilShort) - { - // Complete if enough data is present or if a short packet has been delivered - const TInt maxPacketSize = iEndpointInfo.iSize; - const TInt lastPacketSize = iRequestCallbackInfo->iPacketSize[packetCount - 1]; - if (lastPacketSize < maxPacketSize) - completeNow = ETrue; - else if (iDmaBuffers->RxBytesAvailable() >= bytesReqd) - completeNow = ETrue; - else - { - const TUint type = iEndpointInfo.iType; - if ((type == UsbShai::KUsbEpTypeBulk) && (lastPacketSize & (maxPacketSize - 1))) - { - completeNow = ETrue; - } - else if ((type != UsbShai::KUsbEpTypeBulk) && - (lastPacketSize > maxPacketSize) && - (lastPacketSize % maxPacketSize)) - { - completeNow = ETrue; - } - } - } - if (completeNow) - { - iError = error; - RxComplete(EFalse); - iClientReadPending = EFalse; - } - } - iDmaBuffers->RxSetInActive(); - if (error != KErrNone) - { - return error; - } - if (TryToStartRead(EFalse) != KErrNone) - { -// if (iEndpointNumber != 0) -// Kern::Printf("EndpointComplete couldn't start read on ep=%d", iEndpointNumber); - } - break; - } - - default: - // shouldn't get here - break; - } - - return KErrNone; - } - - -void TUsbcEndpoint::TxComplete() - { - iLdd->DoTxComplete(this, iEndpointNumber, iError); - } - - -TInt TUsbcEndpoint::RxComplete(TBool aReEntrant) - { - return iLdd->DoRxComplete(this, iEndpointNumber, aReEntrant); - } - - -void TUsbcEndpoint::RxCompleteNow() - { - iLdd->DoRxCompleteNow(this, iEndpointNumber); - } - - -TInt TUsbcEndpoint::CopyToClient(DThread* aClient, TClientBuffer *aTcb) - { - TBool completeNow; - return CopyToClient(aClient, completeNow,aTcb); - } - - -TInt TUsbcEndpoint::CopyToClient(DThread* aClient, TBool& aCompleteNow, TClientBuffer *aTcb) - { - TInt err; - const TInt length = iTransferInfo.iTransferSize; - const TBool KReadData = EFalse; - const TBool KReadUntilShort = ETrue; - - __KTRACE_OPT(KUSB, Kern::Printf("CopyToClient: length = %d", length)); - - if (iTransferInfo.iTransferType == ETransferTypeReadPacket) - { - err = iDmaBuffers->RxCopyPacketToClient(aClient, aTcb, length); - aCompleteNow = ETrue; - } - else if (iTransferInfo.iTransferType == ETransferTypeReadOneOrMore) - { - err = iDmaBuffers->RxCopyDataToClient(aClient, aTcb, length, iBytesTransferred, - KReadData, aCompleteNow); - aCompleteNow = ETrue; - } - else if (iTransferInfo.iTransferType == ETransferTypeReadUntilShort) - { - err = iDmaBuffers->RxCopyDataToClient(aClient, aTcb, length, iBytesTransferred, - KReadUntilShort, aCompleteNow); - } - else - { - err = iDmaBuffers->RxCopyDataToClient(aClient, aTcb, length, iBytesTransferred, - KReadData, aCompleteNow); - } - - if (aCompleteNow) - { - ResetTransferInfo(); - SetClientReadPending(EFalse); - } - - return err; - } - - -TInt TUsbcEndpoint::TryToStartRead(TBool aReEntrant) - { - __KTRACE_OPT(KUSB, Kern::Printf("TryToStartRead 1 ep=%d", iEndpointNumber)); - TInt r = KErrNone; - if (iEndpointInfo.iDir != UsbShai::KUsbEpDirOut && - iEndpointInfo.iDir != UsbShai::KUsbEpDirBidirect) - { - // Verify ep direction - __KTRACE_OPT(KUSB, Kern::Printf("TryToStartRead wrong direction ep=%d", iEndpointNumber)); - return KErrUsbEpBadDirection; - } - - if (iEndpointNumber == 0) - { - // Can't issue an Ep0 read if reader or writer is active - if (iDmaBuffers->TxIsActive()) - { - __KTRACE_OPT(KUSB, Kern::Printf("TryToStartRead ep0 Tx already active FATAL")); - return KErrUsbEpNotReady; - } - if (iDmaBuffers->RxIsActive()) - { - __KTRACE_OPT(KUSB, Kern::Printf("TryToStartRead ep0 Rx already active non-FATAL")); - } - } - - if (!(iDmaBuffers->RxIsActive())) - { - TUint8* bufferAddr; - TPhysAddr physAddr; - TUsbcPacketArray* indexArray; - TUsbcPacketArray* sizeArray; - TInt length; - r = iDmaBuffers->RxGetNextXfer(bufferAddr, indexArray, sizeArray, length, physAddr); - if (r == KErrNone) - { - iDmaBuffers->RxSetActive(); - iRequestCallbackInfo->SetRxBufferInfo(bufferAddr, physAddr, indexArray, sizeArray, length); - - __KTRACE_OPT(KUSB, Kern::Printf("TryToStartRead 2 bufferAddr=0x%08x", bufferAddr)); - - r = iController->SetupReadBuffer(*iRequestCallbackInfo); - if (r != KErrNone) - { - iDmaBuffers->RxSetInActive(); - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: TryToStartRead controller rejects read")); - } - } - else - { - if (iClientReadPending) - { - // Deadlock, try to resolve it by draining buffer into descriptor - if (!aReEntrant) - { - RxComplete(ETrue); - } - else - { - // we are stuck, better complete userside otherwise the userside request will hang - RxCompleteNow(); - } - } - } - } - return r; - } - - -TInt TUsbcEndpoint::TryToStartWrite(TEndpointTransferInfo* pTfr) - { - __KTRACE_OPT(KUSB, Kern::Printf("TryToStartWrite 1 ep=%d", iEndpointNumber)); - if (iEndpointInfo.iDir != UsbShai::KUsbEpDirIn && - iEndpointInfo.iDir != UsbShai::KUsbEpDirBidirect) - { - // Verify ep direction - return KErrUsbEpBadDirection; - } - if (iEndpointNumber == 0) - { - // Can't issue an Ep0 write if unread data is available or writer is active - if (iDmaBuffers->TxIsActive() || !iDmaBuffers->IsReaderEmpty()) - { - return KErrUsbEpNotReady; - } - if (iDmaBuffers->RxIsActive()) - { - // if a reader is active then cancel the read - iDmaBuffers->RxSetInActive(); - iController->CancelReadBuffer(iLdd, iRealEpNumber); - } - } - SetTransferInfo(pTfr); - ContinueWrite(); - return KErrNone; - } - - -TInt TUsbcEndpoint::ContinueWrite() - { - __KTRACE_OPT(KUSB, Kern::Printf("ContinueWrite 2")); - TUint8* bufferAddr; - TPhysAddr physAddr; - TInt bufferLength; - TInt r = iDmaBuffers->TxGetNextXfer(bufferAddr, bufferLength, physAddr); - if (r != KErrNone) // probably already active - return r; - __KTRACE_OPT(KUSB, Kern::Printf("ContinueWrite 3")); - iDmaBuffers->TxSetActive(); - TBool zlpReqd = EFalse; - TUint32 transferSize = iTransferInfo.iTransferSize; - TInt length = Min(transferSize - iBytesTransferred, (TUint32) bufferLength); - if (iBytesTransferred+length>=transferSize) - { - // only send a zlp if this is the last buffer of the transfer - zlpReqd = iTransferInfo.iZlpReqd; - } - r = iDmaBuffers->TxStoreData(iLdd->Client(), iLdd->GetClientBuffer(iEndpointNumber), length, iBytesTransferred); - if (r != KErrNone) - return r; - iDmaBuffers->TxSetActive(); - iRequestCallbackInfo->SetTxBufferInfo(bufferAddr, physAddr, length); - iRequestCallbackInfo->iZlpReqd = zlpReqd; -#if 0 - for (TInt i = 0; i < iRequestCallbackInfo->iLength; i++) - { - __KTRACE_OPT(KUSB, Kern::Printf("Buffer[%d] = 0x%02x", i, iRequestCallbackInfo->iBufferStart[i])); - } -#endif - r = iController->SetupWriteBuffer(*iRequestCallbackInfo); - return r; - } - - -void TUsbcEndpoint::CancelTransfer(DThread* aThread, TClientBuffer *aTcb) - { - __KTRACE_OPT(KUSB, Kern::Printf("CancelTransfer")); - if (iDmaBuffers != NULL) - { - if (iClientWritePending) - { - __KTRACE_OPT(KUSB, Kern::Printf(" (iClientWritePending)")); - iClientWritePending = EFalse; - iController->CancelWriteBuffer(iLdd, iRealEpNumber); - iDmaBuffers->TxSetInActive(); - } - if (iClientReadPending) - { - __KTRACE_OPT(KUSB, Kern::Printf(" (iClientReadPending)")); - iClientReadPending = EFalse; - CopyToClient(aThread,aTcb); - } - } - } - - -void TUsbcEndpoint::AbortTransfer() - { - __KTRACE_OPT(KUSB, Kern::Printf("Abort Transfer")); - if (iDmaBuffers != NULL) - { - if (iDmaBuffers->TxIsActive()) - { - __KTRACE_OPT(KUSB, Kern::Printf(" (iClientWritePending)")); - iController->CancelWriteBuffer(iLdd, iRealEpNumber); - iDmaBuffers->TxSetInActive(); - } - if (iDmaBuffers->RxIsActive()) - { - __KTRACE_OPT(KUSB, Kern::Printf(" (iClientReadPending)")); - iController->CancelReadBuffer(iLdd, iRealEpNumber); - iDmaBuffers->RxSetInActive(); - } - iRequestCallbackInfo->iDfc.Cancel(); - } - } - - -TUsbcAlternateSettingList::TUsbcAlternateSettingList() - : iNext(NULL), - iNumberOfEndpoints(0), - iSetting(0) - { - for (TInt i = 0; i <= KMaxEndpointsPerClient; i++) - { - iEpNumDeOrderedByBufSize[i] = -1; - iEndpoint[i] = NULL; - } - } - - -TUsbcAlternateSettingList::~TUsbcAlternateSettingList() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcAlternateSettingList::~TUsbcAlternateSettingList()")); - for (TInt i = 0; i <= KMaxEndpointsPerClient; i++) - { - delete iEndpoint[i]; - } - } - - -TUsbcDeviceStatusQueue::TUsbcDeviceStatusQueue() - { - FlushQueue(); - } - - -void TUsbcDeviceStatusQueue::FlushQueue() - { - for (TInt i = 0; i < KUsbDeviceStatusQueueDepth; i++) - { - iDeviceStatusQueue[i] = KUsbDeviceStatusNull; - } - iStatusQueueHead = 0; - } - - -void TUsbcDeviceStatusQueue::AddStatusToQueue(TUint32 aDeviceStatus) - { - // Only add a new status if it is not a duplicate of the one at the head of the queue - if (!(iStatusQueueHead != 0 && - iDeviceStatusQueue[iStatusQueueHead - 1] == aDeviceStatus)) - { - if (iStatusQueueHead == KUsbDeviceStatusQueueDepth) - { - // Discard item at tail of queue - TUint32 status; - GetDeviceQueuedStatus(status); - } - iDeviceStatusQueue[iStatusQueueHead] = aDeviceStatus; - iStatusQueueHead++; - } - } - - -TInt TUsbcDeviceStatusQueue::GetDeviceQueuedStatus(TUint32& aDeviceStatus) - { - TInt r = KErrNone; - if (iStatusQueueHead <= 0) - { - r = KErrGeneral; - aDeviceStatus = KUsbDeviceStatusNull; - } - else - { - aDeviceStatus = iDeviceStatusQueue[0]; - for(TInt i = 1; i < KUsbDeviceStatusQueueDepth; i++) - { - TUint32 s = iDeviceStatusQueue[i]; - iDeviceStatusQueue[i - 1] = s; - } - iStatusQueueHead--; - iDeviceStatusQueue[KUsbDeviceStatusQueueDepth - 1] = KUsbDeviceStatusNull; - } - return r; - } - -void TClientAsynchNotify::Reset() -{ - iBufferRequest->Reset(); - iClientBuffer=NULL; -} - -//--- diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/ldd/perildd/src/usbdma.cpp --- a/usbdrv/peripheral/ldd/perildd/src/usbdma.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,983 +0,0 @@ -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32\drivers\usbc\usbdma.cpp -// LDD for USB Device driver stack: -// Management of DMA-capable data buffers. -// -// - -/** - @file usbdma.cpp - @internalTechnology -*/ - -#include - - -#if defined(_DEBUG) -static const char KUsbPanicLdd[] = "USB LDD"; -#endif - - -TDmaBuf::TDmaBuf(TUsbcEndpointInfo* aEndpointInfo, TInt aBandwidthPriority) - : iBufBasePtr(NULL), - iCurrentDrainingBuffer(NULL), - iCurrentPacket(0), - iCurrentPacketIndexArray(NULL), - iCurrentPacketSizeArray(NULL) - { - iMaxPacketSize = aEndpointInfo->iSize; - iEndpointType = aEndpointInfo->iType; - - switch (aEndpointInfo->iType) - { - case UsbShai::KUsbEpTypeControl: - iBufSz = KUsbcDmaBufSzControl; - iNumberofBuffers = KUsbcDmaBufNumControl; - break; - case UsbShai::KUsbEpTypeIsochronous: - iBufSz = KUsbcDmaBufSzIsochronous; - iNumberofBuffers = KUsbcDmaBufNumIsochronous; - break; - case UsbShai::KUsbEpTypeBulk: - { - if (aEndpointInfo->iDir == UsbShai::KUsbEpDirOut) - { - const TInt priorityOUT = aBandwidthPriority & 0x0f; - iBufSz = KUsbcDmaBufSizesBulkOUT[priorityOUT]; - } - else - { - const TInt priorityIN = (aBandwidthPriority >> 4) & 0x0f; - iBufSz = KUsbcDmaBufSizesBulkIN[priorityIN]; - } - iNumberofBuffers = KUsbcDmaBufNumBulk; - } - break; - case UsbShai::KUsbEpTypeInterrupt: - iBufSz = KUsbcDmaBufSzInterrupt; - iNumberofBuffers = KUsbcDmaBufNumInterrupt; - break; - default: - iBufSz = 0; - iNumberofBuffers = 0; - } - - if (aEndpointInfo->iDir == UsbShai::KUsbEpDirIn) - { - iNumberofBuffers = 1; // IN endpoints only have 1 buffer - } - - for (TInt i = 0; i < KUsbcDmaBufNumMax; i++) - { - // Buffer logical addresses (pointers) - iBuffers[i] = NULL; - // Buffer physical addresses - iBufferPhys[i] = 0; - // Packet indexes base array - iPacketIndex[i] = NULL; - // Packet sizes base array - iPacketSize[i] = NULL; - } - } - - -TInt TDmaBuf::Construct(TUsbcEndpointInfo* aEndpointInfo) - { - if (aEndpointInfo->iDir != UsbShai::KUsbEpDirIn) - { - // IN endpoints don't need a packet array - - // At most 2 packets (clump of max packet size packets) + possible zlp - TUsbcPacketArray* bufPtr = iPacketInfoStorage; - // this divides up the packet indexing & packet size array over the number of buffers - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::Construct() array base=0x%08x", bufPtr)); - for (TInt i = 0; i < iNumberofBuffers; i++) - { - iPacketIndex[i] = bufPtr; - bufPtr += KUsbcDmaBufMaxPkts; - iPacketSize[i] = bufPtr; - bufPtr += KUsbcDmaBufMaxPkts; - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::Construct() packetIndex[%d]=0x%08x packetSize[%d]=0x%08x", - i, iPacketIndex[i], i, iPacketSize[i])); - } - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::Construct() IN endpoint")); - } - Flush(); - return KErrNone; - } - - -TDmaBuf::~TDmaBuf() - { - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::~TDmaBuf()")); - } - -TInt TDmaBuf::BufferTotalSize() const - { - return iBufSz * iNumberofBuffers; - } - -TInt TDmaBuf::BufferSize() const - { - return iBufSz; - } - -TInt TDmaBuf::SetBufferAddr(TInt aBufInd, TUint8* aBufAddr) - { - __ASSERT_DEBUG((aBufInd < iNumberofBuffers), - Kern::Fault(KUsbPanicLdd, __LINE__)); - iDrainable[aBufInd] = iCanBeFreed[aBufInd] = EFalse; - iBuffers[aBufInd] = aBufAddr; - iBufferPhys[aBufInd] = Epoc::LinearToPhysical((TLinAddr)aBufAddr); - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::SetBufferAddr() iBuffers[%d]=0x%08x", aBufInd, iBuffers[aBufInd])); - return KErrNone; - } - -TInt TDmaBuf::BufferNumber() const - { - return iNumberofBuffers; - } - -void TDmaBuf::SetMaxPacketSize(TInt aSize) - { - iMaxPacketSize = aSize; - } - - -void TDmaBuf::Flush() - { - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::Flush %x", this)); - iRxActive = EFalse; - iTxActive = EFalse; - iExtractOffset = 0; - iTotalRxBytesAvail = 0; - iTotalRxPacketsAvail = 0; - iCurrentDrainingBufferIndex = KUsbcInvalidBufferIndex; - iCurrentFillingBufferIndex = 0; - iDrainQueueIndex = KUsbcInvalidDrainQueueIndex; - for (TInt i = 0; i < KUsbcDmaBufNumMax; i++) - { - iDrainable[i] = EFalse; - iCanBeFreed[i] = EFalse; - iNumberofBytesRx[i] = 0; - iNumberofPacketsRx[i] = 0; - iError[i] = KErrGeneral; - iDrainQueue[i] = KUsbcInvalidBufferIndex; -#if defined(USBC_LDD_BUFFER_TRACE) - iFillingOrderArray[i] = 0; - iNumberofBytesRxRemain[i] = 0; - iNumberofPacketsRxRemain[i] = 0; -#endif - } - // Drain queue is 1 oversized - iDrainQueue[KUsbcDmaBufNumMax] = KUsbcInvalidBufferIndex; - -#if defined(USBC_LDD_BUFFER_TRACE) - iFillingOrder = 0; - iDrainingOrder = 0; -#endif - } - - -void TDmaBuf::RxSetActive() - { - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::RxSetActive %x", this)); - iRxActive = ETrue; - } - - -void TDmaBuf::RxSetInActive() - { - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::RxSetInActive %x", this)); - iRxActive = EFalse; - } - - -TBool TDmaBuf::RxIsActive() - { - return iRxActive; - } - - -void TDmaBuf::TxSetActive() - { - iTxActive = ETrue; - } - - -void TDmaBuf::TxSetInActive() - { - iTxActive = EFalse; - } - - -TBool TDmaBuf::TxIsActive() - { - return iTxActive; - } - - -/**************************** Rx DMA Buffer Access *************************/ - -void TDmaBuf::ModifyTotalRxBytesAvail(TInt aVal) - { - iTotalRxBytesAvail += aVal; - } - - -void TDmaBuf::ModifyTotalRxPacketsAvail(TInt aVal) - { - iTotalRxPacketsAvail += aVal; - } - - -TBool TDmaBuf::AdvancePacket() - { - ModifyTotalRxPacketsAvail(-1); - TBool r = ETrue; - __ASSERT_DEBUG((iCurrentDrainingBufferIndex >= 0), - Kern::Fault(KUsbPanicLdd, __LINE__)); - if (++iCurrentPacket >= iNumberofPacketsRx[iCurrentDrainingBufferIndex]) - { - r = NextDrainableBuffer(); - } - iExtractOffset = 0; - __ASSERT_DEBUG((iCurrentDrainingBufferIndex == KUsbcInvalidBufferIndex) || - (iCurrentPacket < KUsbcDmaBufMaxPkts), - Kern::Fault(KUsbPanicLdd, __LINE__)); - return r; - } - - -TInt TDmaBuf::PeekNextPacketSize() - { - TUint pkt = iCurrentPacket; - TInt index = iCurrentDrainingBufferIndex; - TInt size = -1; - if (pkt >= iNumberofPacketsRx[index]) - { - index = PeekNextDrainableBuffer(); - pkt = 0; - } - - if ((index != KUsbcInvalidBufferIndex) && iNumberofPacketsRx[index]) - { - const TUsbcPacketArray* sizeArray = iPacketSize[index]; - size = (TInt)sizeArray[pkt]; - } - - __ASSERT_DEBUG((iCurrentDrainingBufferIndex == KUsbcInvalidBufferIndex) || - (iCurrentPacket < KUsbcDmaBufMaxPkts), - Kern::Fault(KUsbPanicLdd, __LINE__)); - return size; - } - - -inline TInt TDmaBuf::GetCurrentError() - { - // USB bus errors are v.rare. To avoid having an error code attached to every packet since - // almost every errorcode will be KErrNone, we have a single error code per buffer - // If the error code is != KErrNone then it refers to the LAST packet in the buffer - TInt errorCode = KErrNone; - //Check the index, it's not equal to negative (-1) value defined in - //KUsbcInvalidBufferIndex. - __ASSERT_DEBUG((iCurrentDrainingBufferIndex >= 0), - Kern::Fault(KUsbPanicLdd, __LINE__)); - - if (iError[iCurrentDrainingBufferIndex] != KErrNone) - { - // See if we are at the last packet - if ((iCurrentPacket + 1) == iNumberofPacketsRx[iCurrentDrainingBufferIndex]) - { - errorCode = iError[iCurrentDrainingBufferIndex]; - } - } - return errorCode; - } - - -// used to decide whether a client read can complete straight away -TBool TDmaBuf::IsReaderEmpty() - { - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::IsReaderEmpty iTotalRxPacketsAvail=%d", - iTotalRxPacketsAvail)); - return (iTotalRxPacketsAvail == 0); - } - - -void TDmaBuf::ReadXferComplete(TInt aNoBytesRecv, TInt aNoPacketsRecv, TInt aErrorCode) - { - // Adjust pending packet - if ((aNoBytesRecv == 0) && (aErrorCode != KErrNone)) - { - // Make the buffer available for reuse - iDrainable[iCurrentFillingBufferIndex] = EFalse; - return; - } - - ModifyTotalRxBytesAvail(aNoBytesRecv); - ModifyTotalRxPacketsAvail(aNoPacketsRecv); - iNumberofBytesRx[iCurrentFillingBufferIndex] = aNoBytesRecv; - iNumberofPacketsRx[iCurrentFillingBufferIndex] = aNoPacketsRecv; - -#if defined(USBC_LDD_BUFFER_TRACE) - iNumberofBytesRxRemain[iCurrentFillingBufferIndex] = aNoBytesRecv; - iNumberofPacketsRxRemain[iCurrentFillingBufferIndex] = aNoPacketsRecv; -#endif - - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::ReadXferComplete 2 # of bytes=%d # of packets=%d", - iTotalRxBytesAvail, iTotalRxPacketsAvail)); - iDrainable[iCurrentFillingBufferIndex] = ETrue; - iError[iCurrentFillingBufferIndex] = aErrorCode; - AddToDrainQueue(iCurrentFillingBufferIndex); - if (iCurrentDrainingBufferIndex == KUsbcInvalidBufferIndex) - { - NextDrainableBuffer(); - } - } - - -TInt TDmaBuf::RxGetNextXfer(TUint8*& aBufferAddr, TUsbcPacketArray*& aIndexArray, - TUsbcPacketArray*& aSizeArray, TInt& aLength, TPhysAddr& aBufferPhys) - { - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::RxGetNextXfer 1")); - if (RxIsActive()) - { - __KTRACE_OPT(KUSB, Kern::Printf(" ---> RxIsActive, returning")); - return KErrInUse; - } - - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::RxGetNextXfer Current buffer=%d", - iCurrentFillingBufferIndex)); - if (iDrainable[iCurrentFillingBufferIndex]) - { - // If the controller refused the last read request, then the current buffer will still be marked - // as !Drainable, because the controller never completed the read to the ldd. and therefore the buffer - // can be reused. - if (!NextFillableBuffer()) - { - return KErrNoMemory; - } - } - - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::RxGetNextXfer New buffer=%d", - iCurrentFillingBufferIndex)); - aBufferAddr = iBuffers[iCurrentFillingBufferIndex]; - aBufferPhys = iBufferPhys[iCurrentFillingBufferIndex]; - aIndexArray = iPacketIndex[iCurrentFillingBufferIndex]; - aSizeArray = iPacketSize[iCurrentFillingBufferIndex]; - aLength = iBufSz; - -#if defined(USBC_LDD_BUFFER_TRACE) - iFillingOrderArray[iCurrentFillingBufferIndex] = ++iFillingOrder; -#endif - - return KErrNone; - } - - -TInt TDmaBuf::RxCopyPacketToClient(DThread* aThread, TClientBuffer *aTcb, TInt aLength) - { - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::RxCopyPacketToClient 1")); - -#if defined(USBC_LDD_BUFFER_TRACE) - const TInt numPkts = NoRxPackets(); - const TInt numPktsAlt = NoRxPacketsAlt(); - const TInt numBytes = RxBytesAvailable(); - const TInt numBytesAlt = NoRxBytesAlt(); - - if (numPkts != numPktsAlt) - { - Kern::Printf( - "TDmaBuf::RxCopyPacketToClient: Error: #pkts mismatch global=%d actual=%d", - numPkts, numPktsAlt); - } - if (numBytes != numBytesAlt) - { - Kern::Printf( - "TDmaBuf::RxCopyPacketToClient: Error: #bytes mismatch global=%d actual=%d", - numBytes, numBytesAlt); - } - if ((numPkts == 0) && (numBytes !=0)) - { - Kern::Printf( - "TDmaBuf::RxCopyPacketToClient: Error: global bytes & pkts mismatch pkts=%d bytes=%d", - numPkts, numBytes); - } - if ((numPktsAlt == 0) && (numBytesAlt !=0)) - { - Kern::Printf( - "TDmaBuf::RxCopyPacketToClient: Error: actual bytes & pkts mismatch pkts=%d bytes=%d", - numPktsAlt, numBytesAlt); - } -#endif - - if (!NoRxPackets()) - return KErrNotFound; - - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::RxCopyPacketToClient 2")); - // the next condition should be true because we have some packets available - // coverity[var_tested_neg] - if (iCurrentDrainingBufferIndex == KUsbcInvalidBufferIndex) - { - // Marked as Coverity "Intentional" as the member variable - // iCurrentDrainingBufferIndex is attentionaly negative, from previous - // initialization to KUsbcInvalidBufferIndex (which equals -1). - if (!NextDrainableBuffer()) - return KErrNotFound; - } - - __ASSERT_DEBUG((iCurrentDrainingBufferIndex >= 0 ), - Kern::Fault(KUsbPanicLdd, __LINE__)); - - if (!iDrainable[iCurrentDrainingBufferIndex]) - return KErrNotFound; - - // Calculate copy-from address & adjust for the fact that - // some data may have already been read from the packet - TUint8* logicalSrc = iCurrentDrainingBuffer + iCurrentPacketIndexArray[iCurrentPacket] + iExtractOffset; - TInt packetSz = iCurrentPacketSizeArray[iCurrentPacket]; - TInt thisPacketSz = packetSz - iExtractOffset; - TInt errorCode; - // try and sort out what a "packet" might mean. - // in a multi-packet dma environment, we might see super-packets - // i.e. we might just see one packet, maybe 4K or so long, made of lots of small packets - // Since we don't know where the packet boundaries will be, we have to assume that - // any 'packet' larger than the max packet size of the ep is, in fact, a conglomeration - // of smaller packets. However, for the purposes of the packet count, this is still regarded - // as a single packet and the packet count only decremented when it is consumed. - // As before, if the user fails to read an entire packet out then the next packet is moved onto anyway - // To be safe the user must always supply a buffer of at least max packet size bytes. - if (thisPacketSz > iMaxPacketSize) - { - // Multiple packets left in buffer - // calculate number of bytes to end of packet - if (iEndpointType == UsbShai::KUsbEpTypeBulk) - { - thisPacketSz = iMaxPacketSize - (iExtractOffset & (iMaxPacketSize - 1)); - } - else - { - thisPacketSz = iMaxPacketSize - (iExtractOffset % iMaxPacketSize); - } - errorCode = KErrNone; - } - else - { - errorCode = GetCurrentError(); // single packet left - } - - iExtractOffset += thisPacketSz; // iExtractOffset is now at the end of the real or notional packet - - ModifyTotalRxBytesAvail(-thisPacketSz); -#if defined(USBC_LDD_BUFFER_TRACE) - iNumberofBytesRxRemain[iCurrentDrainingBufferIndex] -= thisPacketSz; -#endif - // this can only be untrue if the "packet" is a conglomeration of smaller packets: - if (iExtractOffset == packetSz) - { - // packet consumed, advance to next packet in buffer -#if defined(USBC_LDD_BUFFER_TRACE) - iNumberofPacketsRxRemain[iCurrentDrainingBufferIndex] -= 1; -#endif - AdvancePacket(); - } - - TPtrC8 des(logicalSrc, thisPacketSz); - TInt r=Kern::ThreadBufWrite(aThread, aTcb, des, 0, 0, aThread); - if (r == KErrNone) - { - r = errorCode; - } - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::RxCopyPacketToClient 3")); - - FreeDrainedBuffers(); - - // Use this error code to complete client read request: - return r; - } - - -TInt TDmaBuf::RxCopyDataToClient(DThread* aThread, TClientBuffer *aTcb, TInt aLength, TUint32& aDestOffset, - TBool aRUS, TBool& aCompleteNow) - { - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::RxCopyDataToClient 1")); - aCompleteNow = ETrue; - -#if defined(USBC_LDD_BUFFER_TRACE) - const TInt numPkts = NoRxPackets(); - const TInt numPktsAlt = NoRxPacketsAlt(); - const TInt numBytes = RxBytesAvailable(); - const TInt numBytesAlt = NoRxBytesAlt(); - - if (numPkts != numPktsAlt) - { - Kern::Printf( - "TDmaBuf::RxCopyDataToClient: Error: #pkts mismatch global=%d actual=%d", - numPkts, numPktsAlt); - } - if (numBytes != numBytesAlt) - { - Kern::Printf( - "TDmaBuf::RxCopyDataToClient: Error: #bytes mismatch global=%d actual=%d", - numBytes, numBytesAlt); - } - if ((numPkts == 0) && (numBytes != 0)) - { - Kern::Printf( - "TDmaBuf::RxCopyDataToClient: Error: global bytes & pkts mismatch pkts=%d bytes=%d", - numPkts, numBytes); - } - if ((numPktsAlt == 0) && (numBytesAlt != 0)) - { - Kern::Printf( - "TDmaBuf::RxCopyDataToClient: Error: actual bytes & pkts mismatch pkts=%d bytes=%d", - numPktsAlt, numBytesAlt); - } -#endif - - if (!NoRxPackets()) - { - return KErrNotFound; - } - - // coverity[var_tested_neg] - if (iCurrentDrainingBufferIndex == KUsbcInvalidBufferIndex) - { - // Marked as Coverity "Inentional" as the member variable - // iCurrentDrainingBufferIndex is attentionaly negative, from previous - // initialization to KUsbcInvalidBufferIndex (which equals -1). - - if (!NextDrainableBuffer()) - { -#if defined(USBC_LDD_BUFFER_TRACE) - Kern::Printf("TDmaBuf::RxCopyDataToClient: Error: No buffer draining=%d, packets=%d", - iCurrentDrainingBufferIndex, iTotalRxPacketsAvail); -#endif - return KErrNotFound; - } - } -#if defined(USBC_LDD_BUFFER_TRACE) - - __ASSERT_DEBUG((iCurrentDrainingBufferIndex >= 0 ), - Kern::Fault(KUsbPanicLdd, __LINE__)); - - if (iDrainingOrder != iFillingOrderArray[iCurrentDrainingBufferIndex]) - { - Kern::Printf("!!! Out of Order Draining TDmaBuf::RxCopyDataToClient 10 draining=%d", - iCurrentDrainingBufferIndex); - } -#endif - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::RxCopyDataToClient 2")); - - TUint8* blockStartAddr = iCurrentDrainingBuffer + iCurrentPacketIndexArray[iCurrentPacket] + iExtractOffset; - TUint8* lastEndAddr = blockStartAddr; // going to track the contiguity of the memory - TUint8* thisStartAddr = blockStartAddr; - TInt toDo = Min(aLength - (TInt)aDestOffset, iTotalRxBytesAvail); -#if defined(USBC_LDD_BUFFER_TRACE) - TInt bufnum = iCurrentDrainingBufferIndex; -#endif - TInt errorCode = KErrNone; - TBool isShortPacket = EFalse; - const TInt maxPacketSizeMask = iMaxPacketSize - 1; - do - { -#if defined(USBC_LDD_BUFFER_TRACE) - if (bufnum != iCurrentDrainingBufferIndex) - { - bufnum = iCurrentDrainingBufferIndex; - if (iDrainingOrder != iFillingOrderArray[iCurrentDrainingBufferIndex]) - { - Kern::Printf("!!! Out of Order Draining TDmaBuf::RxCopyDataToClient 20 draining=%d", - iCurrentDrainingBufferIndex); - } - } -#endif - if (errorCode == KErrNone) - { - errorCode = GetCurrentError(); - } - thisStartAddr = iCurrentDrainingBuffer + iCurrentPacketIndexArray[iCurrentPacket] + iExtractOffset; - const TInt thisPacketSize = iCurrentPacketSizeArray[iCurrentPacket]; - const TInt size = thisPacketSize - iExtractOffset; - if (aRUS) - { - if (iEndpointType == UsbShai::KUsbEpTypeBulk) - { - isShortPacket = (size < iMaxPacketSize) || (size & maxPacketSizeMask); - } - else - { - // this 'if' block is arranged to avoid a division on packet sizes <= iMaxPacketSize - isShortPacket = (size < iMaxPacketSize) || - ((size > iMaxPacketSize) && (size % iMaxPacketSize)); - } - } - TInt copySize = Min(size, toDo); - iExtractOffset += copySize; - toDo -= copySize; - if (thisStartAddr != lastEndAddr) - { - TInt bytesToCopy = lastEndAddr - blockStartAddr; - TInt r=CopyToUser(aThread, blockStartAddr, bytesToCopy, aTcb, aDestOffset); - if(r != KErrNone) - Kern::ThreadKill(aThread, EExitPanic, r, KUsbLDDKillCat); - blockStartAddr = thisStartAddr; - } - - ModifyTotalRxBytesAvail(-copySize); -#if defined(USBC_LDD_BUFFER_TRACE) - iNumberofBytesRxRemain[iCurrentDrainingBufferIndex] -= copySize; -#endif - lastEndAddr = thisStartAddr + copySize; - if (iExtractOffset == thisPacketSize) - { - // More data to copy, so need to access new packet -#if defined(USBC_LDD_BUFFER_TRACE) - iNumberofPacketsRxRemain[iCurrentDrainingBufferIndex] -= 1; -#endif - if (!AdvancePacket()) - { - break; // no more packets left - } - } - } while (toDo > 0 && !isShortPacket); - - if (thisStartAddr != lastEndAddr) - { - TInt bytesToCopy = lastEndAddr - blockStartAddr; - TInt r=CopyToUser(aThread, blockStartAddr, bytesToCopy, aTcb, aDestOffset); - if(r != KErrNone) - Kern::ThreadKill(aThread, EExitPanic, r, KUsbLDDKillCat); - } - - // If we have transferred the requested amount of data it is still possible that - // the next packet is a zlp which needs to be bumped over - - if (aRUS && (toDo == 0) && (iExtractOffset == 0) && (!isShortPacket) && (!IsReaderEmpty()) && - (PeekNextPacketSize() == 0)) - { - // swallow a zlp - isShortPacket = ETrue; -#if defined(USBC_LDD_BUFFER_TRACE) - iNumberofPacketsRxRemain[iCurrentDrainingBufferIndex] -= 1; -#endif - AdvancePacket(); - } - aCompleteNow = isShortPacket || (((TInt)aDestOffset) == aLength) || (errorCode != KErrNone); - - FreeDrainedBuffers(); - - // Use this error code to complete client read request - return errorCode; - } - - -inline TInt TDmaBuf::CopyToUser(DThread* aThread, const TUint8* aSourceAddr, - TInt aLength, TClientBuffer *aTcb, TUint32& aDestOffset) - { - TPtrC8 des(aSourceAddr, aLength); - TInt errorCode = Kern::ThreadBufWrite(aThread, aTcb, des, aDestOffset, KChunkShiftBy0, aThread); - if (errorCode == KErrNone) - { - aDestOffset += aLength; - } - return errorCode; - } - - -inline TInt TDmaBuf::NoRxPackets() const - { - return iTotalRxPacketsAvail; - } - - -inline void TDmaBuf::IncrementBufferIndex(TInt& aIndex) - { - if (++aIndex == iNumberofBuffers) - aIndex = 0; - } - - -TBool TDmaBuf::NextDrainableBuffer() - { - TBool r = EFalse; - if (iCurrentDrainingBufferIndex != KUsbcInvalidBufferIndex) - { - iCanBeFreed[iCurrentDrainingBufferIndex] = ETrue; - iNumberofPacketsRx[iCurrentDrainingBufferIndex] = 0; // Current buffer is empty - iNumberofBytesRx[iCurrentDrainingBufferIndex] = 0; // Current buffer is empty - -#if defined(USBC_LDD_BUFFER_TRACE) - TUint& bytesRemain = iNumberofBytesRxRemain[iCurrentDrainingBufferIndex]; - TUint& pktsRemain = iNumberofPacketsRxRemain[iCurrentDrainingBufferIndex]; - if ((bytesRemain != 0) || (pktsRemain != 0)) - { - Kern::Printf( - "TDmaBuf::NextDrainableBuffer: Error: data discarded buffer=%d pkts=%d bytes=%d", - iCurrentDrainingBufferIndex, pktsRemain, bytesRemain); - bytesRemain = 0; - pktsRemain = 0; - } -#endif - - iCurrentDrainingBufferIndex = KUsbcInvalidBufferIndex; - iCurrentPacket = KUsbcInvalidPacketIndex; - } - - if (iDrainQueueIndex != KUsbcInvalidDrainQueueIndex) - { - r = ETrue; - const TInt index = iDrainQueue[0]; - iDrainQueueIndex--; - for (TInt i = 0; i < iNumberofBuffers; i++) - { - iDrainQueue[i] = iDrainQueue[i+1]; - } - -#if defined(USBC_LDD_BUFFER_TRACE) - if (index != KUsbcInvalidBufferIndex) - iDrainingOrder++; -#endif - - iCurrentDrainingBufferIndex = index; - iCurrentDrainingBuffer = iBuffers[index]; - iCurrentPacketIndexArray = iPacketIndex[index]; - iCurrentPacketSizeArray = iPacketSize[index]; - iCurrentPacket = 0; - } - return r; - } - - -TInt TDmaBuf::PeekNextDrainableBuffer() - { - TInt r = KUsbcInvalidBufferIndex; - if (iDrainQueueIndex != KUsbcInvalidDrainQueueIndex) - { - r = iDrainQueue[0]; - } - return r; - } - - -TBool TDmaBuf::NextFillableBuffer() - { - TBool r = EFalse; - TInt index = iCurrentFillingBufferIndex; - IncrementBufferIndex(index); - // the sequence will restart at 0 if a buffer can't be found this time - iCurrentFillingBufferIndex = 0; - for (TInt i = 0; i < iNumberofBuffers; i++) - { - if (!iDrainable[index]) - { - iCurrentFillingBufferIndex = index; - r = ETrue; - break; - } - IncrementBufferIndex(index); - } - return r; - } - - -void TDmaBuf::FreeDrainedBuffers() - { - for (TInt i = 0; i < iNumberofBuffers; i++) - { - if (iDrainable[i] && iCanBeFreed[i]) - { - iDrainable[i] = iCanBeFreed[i] = EFalse; - } - } - } - - -TBool TDmaBuf::ShortPacketExists() - { - // Actually, a short packet or residue data - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::ShortPacketExists 1")); - TInt index = iCurrentDrainingBufferIndex; - TUsbcPacketArray* pktSizeArray = iCurrentPacketSizeArray; - - if (iMaxPacketSize > 0) - { - // No buffers available for draining - if ((iCurrentDrainingBufferIndex == KUsbcInvalidBufferIndex) || - (iCurrentPacket == KUsbcInvalidPacketIndex)) - return EFalse; - - // Zlp waiting at tail - if ((iTotalRxBytesAvail == 0) && (NoRxPackets() == 1)) - return ETrue; - - if (iEndpointType == UsbShai::KUsbEpTypeBulk) - { - const TInt mask = iMaxPacketSize - 1; - if (iTotalRxBytesAvail & mask) - return ETrue; - - // residue==0; this can be because - // zlps exist, or short packets combine to n * max_packet_size - // This means spadework - const TInt s = iCurrentPacketSizeArray[iCurrentPacket] - iExtractOffset; - if ((s == 0) || (s & mask)) - { - return ETrue; - } - - for (TInt i = 0; i < iNumberofBuffers; i++) - { - if (index == KUsbcInvalidBufferIndex) - break; - if (iDrainable[index]) - { - const TInt packetCount = iNumberofPacketsRx[index]; - const TInt lastPacketSize=pktSizeArray[packetCount - 1]; - if ((lastPacketSize < iMaxPacketSize) || (lastPacketSize & mask)) - { - return ETrue; - } - } - index = iDrainQueue[i]; - pktSizeArray = iPacketSize[index]; - } - } - else - { - if (iTotalRxBytesAvail % iMaxPacketSize) - return ETrue; - - // residue==0; this can be because - // zlps exist, or short packets combine to n * max_packet_size - // This means spadework - const TInt s = iCurrentPacketSizeArray[iCurrentPacket] - iExtractOffset; - if ((s == 0) || (s % iMaxPacketSize)) - { - return ETrue; - } - - for (TInt i = 0; i < iNumberofBuffers; i++) - { - if (index == KUsbcInvalidBufferIndex) - break; - if (iDrainable[index]) - { - const TInt packetCount = iNumberofPacketsRx[index]; - const TInt lastPacketSize = pktSizeArray[packetCount - 1]; - if ((lastPacketSize < iMaxPacketSize) || (lastPacketSize % iMaxPacketSize)) - { - return ETrue; - } - } - index = iDrainQueue[i]; - pktSizeArray = iPacketSize[index]; - } - } - } - - return EFalse; - } - - -void TDmaBuf::AddToDrainQueue(TInt aBufferIndex) - { - if (iDrainQueue[iDrainQueueIndex + 1] != KUsbcInvalidBufferIndex) - { -#if defined(USBC_LDD_BUFFER_TRACE) - Kern::Printf("TDmaBuf::AddToDrainQueue: Error: invalid iDrainQueue[x]"); -#endif - } - iDrainQueue[++iDrainQueueIndex] = aBufferIndex; - } - - -#if defined(USBC_LDD_BUFFER_TRACE) -TInt TDmaBuf::NoRxPacketsAlt() const - { - TInt pktCount = 0; - for(TInt i = 0; i < iNumberofBuffers; i++) - { - if (iDrainable[i]) - { - pktCount += iNumberofPacketsRxRemain[i]; - } - } - return pktCount; - } - - -TInt TDmaBuf::NoRxBytesAlt() const - { - TInt byteCount = 0; - for(TInt i = 0; i < iNumberofBuffers; i++) - { - if (iDrainable[i]) - { - byteCount += iNumberofBytesRxRemain[i]; - } - } - return byteCount; - } -#endif - - -// We only store 1 transaction, no other buffering is done -TInt TDmaBuf::TxStoreData(DThread* aThread, TClientBuffer *aTcb, TInt aTxLength, TUint32 aBufferOffset) - { - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::TxStoreData 1")); - if (!IsReaderEmpty()) - return KErrInUse; - - __KTRACE_OPT(KUSB, Kern::Printf("TDmaBuf::TxStoreData 2")); - - TInt remainTxLength = aTxLength; - TUint32 bufferOffset = aBufferOffset; - // Store each buffer separately - for( TInt i=0;(i0);i++) - { - TUint8* logicalDest = iBuffers[i]; - TInt xferSz = Min(remainTxLength, iBufSz); - TPtr8 des(logicalDest, xferSz, xferSz); - TInt r = Kern::ThreadBufRead(aThread, aTcb, des, bufferOffset, KChunkShiftBy0); - if(r != KErrNone) - { - Kern::ThreadKill(aThread, EExitPanic, r, KUsbLDDKillCat); - return r; - } - remainTxLength -= iBufSz; - bufferOffset += iBufSz; - } - - return KErrNone; - } - - -TInt TDmaBuf::TxGetNextXfer(TUint8*& aBufferAddr, TInt& aTxLength, TPhysAddr& aBufferPhys) - { - if (iTxActive) - return KErrInUse; - - aBufferAddr = iBuffers[0]; // only 1 tx buffer - aBufferPhys = iBufferPhys[0]; - aTxLength = BufferTotalSize(); - - return KErrNone; - } - diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/ldd/perilddsc/appifwrapper/eabi/usbcscu.def --- a/usbdrv/peripheral/ldd/perilddsc/appifwrapper/eabi/usbcscu.def Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -EXPORTS - _ZN15TEndpointBuffer11WriteBufferEPvjiR14TRequestStatus @ 1 NONAME - _ZN15TEndpointBuffer11WriteBufferEjjiR14TRequestStatus @ 2 NONAME - _ZN15TEndpointBuffer16GetInBufferRangeERPvRj @ 3 NONAME - _ZN15TEndpointBuffer16GetInBufferRangeERjS0_ @ 4 NONAME - _ZN15TEndpointBuffer5CloseEv @ 5 NONAME - _ZN15TEndpointBuffer9GetBufferERPvRjRiR14TRequestStatusj @ 6 NONAME - _ZN15TEndpointBufferC1Ev @ 7 NONAME - _ZN15TEndpointBufferC2Ev @ 8 NONAME - _ZN16RDevUsbcScClient12OpenEndpointER15TEndpointBufferi @ 9 NONAME - _ZN16RDevUsbcScClient17FinalizeInterfaceERP6RChunk @ 10 NONAME - _ZN16RDevUsbcScClient17FinalizeInterfaceEv @ 11 NONAME - _ZN16RDevUsbcScClient20GetDataTransferChunkERP6RChunk @ 12 NONAME - _ZN16RDevUsbcScClient28StartNextOutAlternateSettingEi @ 13 NONAME - _ZN18TUsbcScChunkHeader20GetNumberOfEndpointsEi @ 14 NONAME - _ZN18TUsbcScChunkHeader9GetBufferEiiRP24TUsbcScHdrEndpointRecord @ 15 NONAME - _ZN18TUsbcScChunkHeaderC1E6RChunk @ 16 NONAME - _ZN18TUsbcScChunkHeaderC2E6RChunk @ 17 NONAME - _ZN15TEndpointBuffer4DumpEv @ 18 NONAME - _ZN15TEndpointBuffer10TakeBufferERPvRjRiR14TRequestStatusj @ 19 NONAME - _ZN15TEndpointBuffer6ExpireEv @ 20 NONAME - _ZN15TEndpointBuffer6ExpireEPv @ 21 NONAME - diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/ldd/perilddsc/appifwrapper/group/bld.inf --- a/usbdrv/peripheral/ldd/perilddsc/appifwrapper/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// bld.inf -// USB Client Driver -// -// - -/** - @file -*/ -PRJ_PLATFORMS - -BASEDEFAULT - -PRJ_MMPFILES - -#if defined(GENERIC_MARM) || defined(WINS) || defined(GENERIC_X86) -#if !defined(MARM_THUMB) && !defined(MARM_ARMI) - -#if !defined(WINS) -#if !defined(X86) -usbcsc_bil -#endif -#endif - - -#endif -#endif diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/ldd/perilddsc/appifwrapper/group/usbcsc_bil.mmp --- a/usbdrv/peripheral/ldd/perilddsc/appifwrapper/group/usbcsc_bil.mmp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32/drivers/usbcsc/usbcsc_bil.mmp -// -// -USERINCLUDE ../../include - -OS_LAYER_SYSTEMINCLUDE - -target usbcsc_bilshai.dll -targettype dll -sourcepath ../src -source usbcsc_bil.cpp - -library euser.lib - -deffile ../~/usbcsc.def - -VENDORID 0x70000001 -capability all diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/ldd/perilddsc/appifwrapper/src/usbcsc_bil.cpp --- a/usbdrv/peripheral/ldd/perilddsc/appifwrapper/src/usbcsc_bil.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,633 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32\drivers\usbcsc\usbcsc_bil.cpp -// -// - -#include -#include -#include -#include - -/** @file usbcsc_bil.cpp - - Buffer Interface Layer for USB Client Device driver stack, using shared chunks. - - @internalTechnology -*/ - -EXPORT_C TInt RDevUsbcScClient::FinalizeInterface() - { - TInt errorOrhandle = DoControl(EControlRealizeInterface); //returns a error value or chunk handle - TInt r = iSharedChunk.SetReturnedHandle(errorOrhandle); - iEndpointStatus = 0x00; //all endpoints are closed at the moment - iAlternateSetting = 0; - iNewAltSetting = 0; - iAltSettingSeq = 0; - return r; - } - - -EXPORT_C TInt RDevUsbcScClient::FinalizeInterface(RChunk*& aChunk) - { - TInt errorOrhandle = DoControl(EControlRealizeInterface); - iSharedChunk.SetReturnedHandle(errorOrhandle); - iEndpointStatus = 0x00; //all endpoints are closed at the moment - iAlternateSetting = 0; - return aChunk->SetReturnedHandle(errorOrhandle); - } - - -EXPORT_C TInt RDevUsbcScClient::OpenEndpoint(TEndpointBuffer& aEpB, TInt aEpI) - { - TUsbcScHdrEndpointRecord* endpointInf = NULL; - TBuf8 descriptor; - TUsbcScChunkHeader chunkHeader(iSharedChunk); - //Do some validity checks - if((aEpB.iInState != TEndpointBuffer::ENotValid) && (aEpB.iOutState != TEndpointBuffer::ENotValid)) - return KErrArgument; - - TInt nEndpoints = chunkHeader.GetNumberOfEndpoints(iAlternateSetting); - if ((aEpI < KEp0Number) && (aEpI > nEndpoints)) // Check endpoint number range - return KErrNotFound; - - if(iEndpointStatus & (1 << aEpI)) // Check that endpoint isn't already opene - return KErrInUse; - - if(aEpI == KEp0Number) //endpoint 0 - { - TUsbcScHdrEndpointRecord ep0= TUsbcScHdrEndpointRecord(KUsbcScEndpointZero, KUsbScHdrEpDirectionBiDir | KUsbScHdrEpTypeControl); - aEpB.Construct(this,iSharedChunk.Base(), &ep0 ,aEpI, - (SUsbcScBufferHeader*) ((TUint)iSharedChunk.Base() + (chunkHeader.iBuffers)->Ep0Out()->Offset())); - - aEpB.iBufferStartAddr = (TUint8*) ((TUint)iSharedChunk.Base() + (chunkHeader.iBuffers)->Ep0In()->Offset()); - aEpB.iSize = chunkHeader.iBuffers->Ep0In()->Size(); - } - else // If normal endpoint (!ep0) - { - TUsbcScBufferRecord* buf = chunkHeader.GetBuffer(iAlternateSetting,aEpI,endpointInf); - if (!buf) - return KErrGeneral; - // Set up endpoint members - aEpB.iBufferStartAddr = (TUint8*) (buf->Offset() + (TUint)iSharedChunk.Base()); - aEpB.iSize = buf->Size(); - TInt r = GetEndpointDescriptor(iAlternateSetting, aEpI, descriptor); - if(r != KErrNone) // We need this to be able to calculate alignment - { - return r; - } - - if (endpointInf->Direction()&KUsbScHdrEpDirectionIn) - { //in case of IN endpoints, first endpoint buffer location points to end offset - aEpB.Construct(this,iSharedChunk.Base(),endpointInf,aEpI); - if (iInAltSetting==KErrEof) - aEpB.iInState=TEndpointBuffer::EEOF; - - } - else - { - SUsbcScBufferHeader *endpointHdr = (SUsbcScBufferHeader *) aEpB.iBufferStartAddr; - //In this case,SUsbcScBufferHeader points to full OUT endpoint header - aEpB.Construct(this,iSharedChunk.Base(),endpointInf,aEpI, endpointHdr); - } - } - iEndpointStatus |= (1 << aEpI); - -#ifdef _DEBUG - aEpB.Dump(); - RDebug::Printf("iEndpointStatus: %x \n",iEndpointStatus); -#endif - return KErrNone; - } - - -//Internal, used by RDevUsbcScClient::StartNextOutAlternateSetting(...) -//This drains any old data from an OUT buffer, and gets it ready for reading an ep. -//aBufferOffset - The offset, into the chunk, that the buffer in question, may be found. - -TInt RDevUsbcScClient::Drain(TUint aBufferOffset) -{ - TUint8* base = iSharedChunk.Base(); - SUsbcScBufferHeader* endpointHdr = (SUsbcScBufferHeader*) (aBufferOffset+base); - TUint localTail = endpointHdr->iBilTail; - TUsbcScTransferHeader* currentTransfer; - TUint16 next = (iAltSettingSeq+1)&0xFFFF; - TInt err=KErrNone; - - while (ETrue) - { - if (localTail == (TUint) endpointHdr->iHead) - { - err = KErrNotReady; - break; - } - currentTransfer = (TUsbcScTransferHeader*) (base + localTail); - - if (currentTransfer->iAltSettingSeq == next) - { - iNewAltSetting=currentTransfer->iAltSetting; // record new alt setting - break; - } - else - { - localTail = currentTransfer->iNext; - } - } // end while - endpointHdr->iBilTail = localTail; - endpointHdr->iTail = localTail; - return err; -} - -//Internal, used by RDevUsbcScClient::StartNextOutAlternateSetting(...) -//This method checks that the OUT buffer is ready for reading an ep. -//aBufferOffset - The offset, into the chunk, that the buffer in question, may be found. - -TInt RDevUsbcScClient::Peek(TUint aBufferOffset) -{ - TUint8* base = iSharedChunk.Base(); - SUsbcScBufferHeader* endpointHdr = (SUsbcScBufferHeader*) (aBufferOffset+base); - TUint localTail = endpointHdr->iBilTail; - TUsbcScTransferHeader* currentTransfer = (TUsbcScTransferHeader*) (base + localTail); - - if ((localTail == (TUint)endpointHdr->iHead) || (currentTransfer->iAltSettingSeq != (iAltSettingSeq+1)&0xFFFF)) - // if alternate setting has not changed - return KErrNotReady; - else - { - iNewAltSetting=currentTransfer->iAltSetting; - return KErrNone; - } -} - -//Internal, used by RDevUsbcScClient::StartNextOutAlternateSetting(...) -//This method is called if an alternate setting change happens from a set of ONLY IN endpoints. -//Used to find the least possible alternate setting it can return to the user, stored in iNewAltSetting -//Returns the sequence number of the 'latest' alternate setting it can switch to - -TInt RDevUsbcScClient::FindNextAlternateSetting() - { - TUsbcScChunkHeader chunkHeader(iSharedChunk); - TUsbcScHdrEndpointRecord* endpointInf = NULL; - TUint bufOff; - TInt altSet; - TInt ep; - TInt bufNum; - - RArray bufferOffset; // Array to contain all OUT enpoint buffer offsets - // Populate array - for (altSet = 0; altSet < chunkHeader.iAltSettings->iNumOfAltSettings ; altSet++) - { - TInt numEndpoints = chunkHeader.GetNumberOfEndpoints(altSet); - for (ep = 1; ep <= numEndpoints ; ep ++) - { - bufOff = chunkHeader.GetBuffer(altSet, ep, endpointInf)->Offset(); - if ((endpointInf->Direction() & KUsbScHdrEpDirectionOut) && (bufferOffset.Find(bufOff) == KErrNotFound)) - { - bufferOffset.Append(bufOff); - } - } - } - - TInt err = KErrNotFound; - TUint16 altSetSeqDelta = 0; - TUint16 currentaltSetSeqDelta = 0; - TBool noNewSettingFound = ETrue; - TInt altSetSeq = iAltSettingSeq; - TUint8* base = iSharedChunk.Base(); - - for (bufNum = 0; bufNum < bufferOffset.Count(); bufNum++) // Scan all OUT buffers - { - SUsbcScBufferHeader* endpointHdr = (SUsbcScBufferHeader*) (bufferOffset[bufNum] + base); - TUint localTail = endpointHdr->iBilTail; - TUsbcScTransferHeader* currentTransfer; - TUint16 next = (iAltSettingSeq+1)&0xFFFF; - - while (ETrue) - { - if (localTail == (TUint) endpointHdr->iHead) - { - break; // This OUT endpoint buffer has no data, proceed checking with other OUT endpoint buffers - } - currentTransfer = (TUsbcScTransferHeader*) (base + localTail); - - if (currentTransfer->iAltSettingSeq != iAltSettingSeq) - { - if (currentTransfer->iAltSettingSeq == next) - { - altSetSeq = currentTransfer->iAltSettingSeq; - iNewAltSetting = currentTransfer->iAltSetting; // record new alt setting - err = KErrNone; - break; - } - - if (noNewSettingFound) - { - altSetSeqDelta = Abs(iAltSettingSeq - currentTransfer->iAltSettingSeq); - altSetSeq = currentTransfer->iAltSettingSeq; - iNewAltSetting = currentTransfer->iAltSetting; // record new alt setting - noNewSettingFound = EFalse; - } - else - { - currentaltSetSeqDelta = Abs(iAltSettingSeq - currentTransfer->iAltSettingSeq); - if (currentaltSetSeqDelta < altSetSeqDelta) - { - altSetSeqDelta = currentaltSetSeqDelta; - altSetSeq = currentTransfer->iAltSettingSeq; - iNewAltSetting = currentTransfer->iAltSetting; - } - } - break; - } - - localTail = currentTransfer->iNext; - } // end while - - if (!err) // Found an alt set sequence one after iAltSettingSeq - { - break; // found 'the next' alternate setting, exit for loop - } - - }// for loop - - return altSetSeq; - } - -EXPORT_C TInt RDevUsbcScClient::StartNextOutAlternateSetting(TBool aFlush) - { - TUsbcScChunkHeader chunkHeader(iSharedChunk); - - //if endpoints are still open, return KErrInUse - if((iEndpointStatus&~1) != 0) - { - return KErrInUse; - } - - TInt r; - TInt ep; - TInt noEp; - TUint bufOff; - TBool inEndpointSet = ETrue; - TUsbcScHdrEndpointRecord* endpointInf = NULL; - - // check if alternate setting contains all IN endpoints - noEp = chunkHeader.GetNumberOfEndpoints(iAlternateSetting); - - // for each used buffer. - for (ep=1;ep<=noEp;ep++) - { - bufOff = chunkHeader.GetBuffer(iAlternateSetting,ep,endpointInf)->Offset(); - - if (endpointInf->Direction() & KUsbScHdrEpDirectionOut) - { - inEndpointSet = EFalse; - if (aFlush) - r = Drain(bufOff); // we need to remove anythng in the way, and get it ready for reading. - else - r = Peek(bufOff); // we need to check it is ready for reading! - if (r) - return r; - } - } - - - TInt altSeq = 0; - if (inEndpointSet) // If all endpoints in the current alternate setting are IN endpoints - { // go through all OUT buffers for alternate setting change - altSeq = FindNextAlternateSetting(); - } - - if((iNewAltSetting == iAlternateSetting) && (!inEndpointSet)) - { - return KErrNotReady; - } - - // Find/Set IN alternate setting - TInt ret = StartNextInAlternateSetting(); - SUsbcScAlternateSetting* altrec = ((SUsbcScAlternateSetting*) (&ret)); - - if (altrec->iSequence==iAltSettingSeq+1) - { - if (altrec->iSetting!=iNewAltSetting) - return KErrGeneral; - iInAltSetting=iNewAltSetting; - } - else - { - if (inEndpointSet) - { - if ((altSeq == iAltSettingSeq) || (iAltSettingSeq == altrec->iSequence)) - { - return KErrNotReady; - } - else if (altSeq != altrec->iSequence) - { - iInAltSetting=KErrEof; - } - } - iInAltSetting=KErrEof; - } - - iAlternateSetting = iNewAltSetting; - iAltSettingSeq += 1; - - return iAlternateSetting; - } - - -EXPORT_C TInt RDevUsbcScClient::GetDataTransferChunk(RChunk* & aChunk) - { - aChunk = &iSharedChunk; - return KErrNone; - } - -// Constructor - -EXPORT_C TEndpointBuffer::TEndpointBuffer() - :iInState(ENotValid), - iOutState(ENotValid), - iEndpointNumber(-1), - iBufferNum(-1), - iBufferStartAddr(0), - iSize(0) - { - } - -// Internal, called by RDevUsbcScClient::OpenEndpoint. -void TEndpointBuffer::Construct(RDevUsbcScClient* aClient, TUint8* aBaseAddr, const TUsbcScHdrEndpointRecord* aEpType , TInt aEndpointNumber,SUsbcScBufferHeader* aEndpointHdr) - { - iClient = aClient; - iBaseAddr = (TUint) aBaseAddr; - iInState = (((aEpType->Direction())&KUsbScHdrEpDirectionIn) ? EValid : ENotValid); - iOutState = (((aEpType->Direction())&KUsbScHdrEpDirectionOut) ? EValid : ENotValid); - iBufferNum = (aEpType->iBufferNo==(KUsbcScEndpointZero&0xFF))?KUsbcScEndpointZero:aEpType->iBufferNo; - iEndpointNumber = aEndpointNumber; - - iEndpointHdr = aEndpointHdr; - }; - -EXPORT_C TInt TEndpointBuffer::GetInBufferRange(TAny*& aStart, TUint& aSize) - { - if ((iInState)) - { - return iInState; - } - aStart= iBufferStartAddr; - aSize= iSize; - return KErrNone; - }; - -EXPORT_C TInt TEndpointBuffer::GetInBufferRange(TUint& aStart, TUint& aSize) - { - if ((iInState)) - return iInState; - aStart= (TUint) iBufferStartAddr - iBaseAddr; - aSize= iSize; - return KErrNone; - } - - -EXPORT_C TInt TEndpointBuffer::GetBuffer(TAny*& aBuffer,TUint& aSize,TBool& aZLP,TRequestStatus& aStatus,TUint aLength) - { - if (iOutState) - return iOutState; - - TUsbcScTransferHeader* currentTransfer; - TInt r; - do // until we have a transfer with data. - { - iEndpointHdr->iTail = iEndpointHdr->iBilTail; - if(iEndpointHdr->iBilTail == iEndpointHdr->iHead) //If no new data, create request - { - r = iClient->ReadDataNotify(iBufferNum,aStatus); - if (r!=KErrCompletion) // Data could arrive since we checked. - return r; - } - currentTransfer = (TUsbcScTransferHeader*) (iBaseAddr + iEndpointHdr->iBilTail); - - iEndpointHdr->iBilTail = currentTransfer->iNext; - aZLP = (currentTransfer->iFlags & KUsbcScShortPacket)!=EFalse; - - if(currentTransfer->iAltSettingSeq != (iClient->iAltSettingSeq)) // if alternate setting has changed - { - if (currentTransfer->iAltSettingSeq == (iClient->iAltSettingSeq+1)) //Note- KIS ATM, if multiple alternate setting changes happen - iClient->iNewAltSetting = currentTransfer->iAltSetting; //before StartNextOutAlternateSetting is called, - //this variable will reflect the latest requested AlternateSetting - - - if (iEndpointNumber != KEp0Number) - { -// iOutState = EEOF; - return KErrEof; - } - else if ((currentTransfer->iBytes==0) && (!aZLP)) - { - return KErrAlternateSettingChanged; - } - } - - } - while ((currentTransfer->iBytes==0) && (!aZLP)); // ignore empty transfers - - aBuffer = currentTransfer->iData.i; - aSize = currentTransfer->iBytes; - return (currentTransfer->iFlags & KUsbcScStateChange)?KStateChange:KErrCompletion; - } - -EXPORT_C TInt TEndpointBuffer::TakeBuffer(TAny*& aBuffer,TUint& aSize,TBool& aZLP,TRequestStatus& aStatus,TUint aLength) - { - if (iOutState) - return iOutState; - - TUsbcScTransferHeader* currentTransfer; - TInt r; - do // until we have a transfer with data. - { - if(iEndpointHdr->iBilTail == iEndpointHdr->iHead) //If no new data, create request - { - r = iClient->ReadDataNotify(iBufferNum,aStatus); - if (r!=KErrCompletion) // Data could arrive since we checked. - { - return r; - } - } - - currentTransfer = (TUsbcScTransferHeader*) (iBaseAddr + iEndpointHdr->iBilTail); - iEndpointHdr->iBilTail = currentTransfer->iNext; - aZLP = (currentTransfer->iFlags & KUsbcScShortPacket)!=EFalse; // True if short packet else false - - if(currentTransfer->iAltSettingSeq != (iClient->iAltSettingSeq)) // if alternate setting has changed - { - if (currentTransfer->iAltSettingSeq == (iClient->iAltSettingSeq+1)) //Note- KIS ATM, if multiple alternate setting changes happen - iClient->iNewAltSetting = currentTransfer->iAltSetting; //before StartNextOutAlternateSetting is called, - //this variable will reflect the latest requested AlternateSetting - Expire(currentTransfer->iData.i); - if (iEndpointNumber != KEp0Number) - { -// iOutState = EEOF; - return KErrEof; - } - else if ((currentTransfer->iBytes==0) && (!aZLP)) - { - return KErrAlternateSettingChanged; - } - - } - - if ((currentTransfer->iBytes==0) && (!aZLP)) // here , if empty transfer with alt setting information, Call expire - { - Expire(currentTransfer->iData.i); - } - } - while ((currentTransfer->iBytes==0) && (!aZLP)); // ignore empty transfers - - aBuffer = currentTransfer->iData.i; - aSize = currentTransfer->iBytes; - return (currentTransfer->iFlags & KUsbcScStateChange)?KStateChange:KErrCompletion; - } - -EXPORT_C TInt TEndpointBuffer::Expire() - { - if (!(iOutState != ENotValid)) - return iOutState; - - if (iEndpointHdr->iTail != iEndpointHdr->iBilTail) - { - TUsbcScTransferHeader* currentTransfer = (TUsbcScTransferHeader*) (iBaseAddr + iEndpointHdr->iTail); - iEndpointHdr->iTail = currentTransfer->iNext; - } - return KErrNone; - } - -EXPORT_C TInt TEndpointBuffer::Expire(TAny* aAddress) - { - if (!(iOutState != ENotValid)) - return iOutState; - - TUint headerSize = sizeof(TUsbcScTransferHeader)-4; // TransferHeader includes 4 bytes of data. - TInt transferToExpire = ((TUint) aAddress - headerSize); - TInt offsetToExpire = transferToExpire - iBaseAddr; - - TInt currentTail = iEndpointHdr->iTail; - - TInt prevTail = NULL; - TBool found = EFalse; - while (currentTail != iEndpointHdr->iBilTail) - { - TUsbcScTransferHeader* currentTransfer = (TUsbcScTransferHeader*) (iBaseAddr + currentTail); - if (currentTail == offsetToExpire) // found which to expire - { - found = ETrue; - // This offset is to be expired - if (prevTail == NULL) - { - // The offset is at the list head - iEndpointHdr->iTail = currentTransfer->iNext; - } - else - { - // The offset is NOT at the list head - // This leaves a GAP in the buffer which will not be filled unless the 'transfers' before 'currentTail' are expired - currentTail = currentTransfer->iNext; - TUsbcScTransferHeader* prevTransfer = (TUsbcScTransferHeader*) (iBaseAddr + prevTail); - prevTransfer->iNext = currentTail; - } - break; - } - prevTail = currentTail; - currentTail = currentTransfer->iNext; - } - return found ? KErrNone : KErrNotFound; - } - - -EXPORT_C TInt TEndpointBuffer::WriteBuffer(TAny* aBuffer,TUint aSize,TBool aZLP,TRequestStatus& aStatus) - { - if (iInState) - return iInState; - - iClient->WriteData(iBufferNum, ((TUint)aBuffer - (TUint)iBaseAddr),aSize,aZLP,aStatus); - return KErrNone; - } - - -EXPORT_C TInt TEndpointBuffer::WriteBuffer(TUint aOffset,TUint aSize,TBool aZLP,TRequestStatus& aStatus) - { - if (iInState) - return iInState; - - iClient->WriteData(iBufferNum,aOffset,aSize,aZLP,aStatus); - return KErrNone; - } - - -/** -Closes the endpoint buffer -@return KErrNone if close is successfull -*/ -EXPORT_C TInt TEndpointBuffer::Close() - { - if ((iInState == ENotValid) && (iOutState == ENotValid)) - return KErrNotFound; - if (iOutState != ENotValid) - { - TUsbcScTransferHeader* currentTransfer = (TUsbcScTransferHeader*) (iBaseAddr + iEndpointHdr->iTail); - //Incase of AlternateSetting changes and using TEndpointBuffer::GetBuffer, iTail is always one 'transfer' behind iBilTail - //Incase of AlternateSetting changes and using TEndpointBuffer::TakeBuffer, this shuold force the user to update iTail & only then closes the endpoint buffer - if (((TInt) currentTransfer->iNext != iEndpointHdr->iBilTail) && (iEndpointHdr->iTail != iEndpointHdr->iBilTail)) - return KErrNotReady; - } - iClient->iEndpointStatus &= ~(1 << iEndpointNumber); //reset the bit corresponding to endpoint - iInState = ENotValid; - iOutState = ENotValid; - return KErrNone; - } - - - -EXPORT_C TUsbcScChunkHeader::TUsbcScChunkHeader(RChunk aChunk) - { - iChunk = aChunk; - iBuffers = (TUsbcScChunkBuffersHeader*) (aChunk.Base()+((TUsbcScChunkHdrOffs*)iChunk.Base())->iBuffers); - iAltSettings = (TUsbcScChunkAltSettingHeader*) (aChunk.Base()+((TUsbcScChunkHdrOffs*)iChunk.Base())->iAltSettings); - } - -EXPORT_C TInt TUsbcScChunkHeader::GetNumberOfEndpoints(TInt aAltSetting) - { - if ((aAltSetting<0) || (aAltSetting>=iAltSettings->iNumOfAltSettings)) - return KErrArgument; - return *((TInt*) (iAltSettings->iAltTableOffset[aAltSetting] + (TInt) iChunk.Base())); - } - - -EXPORT_C TUsbcScBufferRecord* TUsbcScChunkHeader::GetBuffer(TInt aAltSetting, TInt aEndpoint, TUsbcScHdrEndpointRecord*& aEndpointInf) - { - if ((aAltSetting<0) || (aAltSetting>=iAltSettings->iNumOfAltSettings)) - return NULL; - TInt8* iEndpoint = (TInt8*) (iAltSettings->iAltTableOffset[aAltSetting] + (TInt) iChunk.Base()); - if ((aEndpoint<=0) || (aEndpoint>*iEndpoint)) - return NULL; - aEndpointInf = (TUsbcScHdrEndpointRecord*) &(iEndpoint[aEndpoint*iAltSettings->iEpRecordSize]); - return iBuffers->Buffers(aEndpointInf->iBufferNo); - } - - -/* Debug functions */ - -EXPORT_C void TEndpointBuffer::Dump() - { - RDebug::Printf("TEndpointBuffer::Dump iBufferStart: 0x%x, iSize: 0x%x, iEndpointNumber: 0x%x, iBufferNum: %d, iInState: 0x%x iOutState: 0x%x\n", - iBufferStartAddr,iSize,iEndpointNumber,iBufferNum,iInState,iOutState); - } - diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/ldd/perilddsc/group/bld.inf --- a/usbdrv/peripheral/ldd/perilddsc/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// bld.inf -// USB Client Driver -// -// - -/** - @file -*/ -#include "../appifwrapper/group/bld.inf" - -PRJ_PLATFORMS - -BASEDEFAULT - -PRJ_EXPORTS - -PRJ_MMPFILES - -#if defined(GENERIC_MARM) || defined(WINS) || defined(GENERIC_X86) -#if !defined(MARM_THUMB) && !defined(MARM_ARMI) - -#if !defined(WINS) -#if !defined(X86) -usbcsc -#endif -#endif - - -#endif -#endif diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/ldd/perilddsc/group/usbcsc.mmp --- a/usbdrv/peripheral/ldd/perilddsc/group/usbcsc.mmp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32/drivers/usbcsc/usbcsc.mmp -// -// -#include - - -OS_LAYER_SYSTEMINCLUDE - -target usbcscshai.ldd -targettype ldd - -sourcepath ../src -source d_usbcsc.cpp - -library usbperipheralpil.lib - -uid 0 0x101F8928 -VENDORID 0x70000001 -capability all diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/ldd/perilddsc/src/d_usbcsc.cpp --- a/usbdrv/peripheral/ldd/perilddsc/src/d_usbcsc.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3663 +0,0 @@ -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32\drivers\usbcsc\d_usbcsc.cpp -// LDD for USB Device driver stack, using shared chunks: -// The channel object. -// -// - -/** - @file d_usbcsc.cpp - @internalTechnology -*/ - -// #include -#include -#include "platform.h" - -/*****************************************************************************\ -* DUsbcScLogDevice * -* * -* Inherits from DLogicalDevice, the USB Shared Chunk LDD factory class * -* * -\*****************************************************************************/ - -_LIT(KUsbScLddName, "Usbcsc"); - -static const TInt KUsbRequestCallbackPriority = 2; - -/** Real entry point from the Kernel: return a new driver. - */ -DECLARE_STANDARD_LDD() - { - return new DUsbcScLogDevice; - } - -/** Create a channel on the device. - - @internalComponent -*/ -TInt DUsbcScLogDevice::Create(DLogicalChannelBase*& aChannel) - { - aChannel = new DLddUsbcScChannel; - return aChannel ? KErrNone : KErrNoMemory; - } - - -DUsbcScLogDevice::DUsbcScLogDevice() - { - iParseMask = KDeviceAllowUnit; - iUnitsMask = 0xffffffff; // Leave units decision to the Controller - iVersion = TVersion(KUsbcScMajorVersion, KUsbcScMinorVersion, KUsbcScBuildVersion); - } - - -TInt DUsbcScLogDevice::Install() - { - // Only proceed if we have the Controller underneath us - if (!DUsbClientController::UsbcControllerPointer()) - { - __KTRACE_OPT(KPANIC, Kern::Printf("LDD Install: USB Controller Not Present")); - return KErrGeneral; - } - return SetName(&KUsbScLddName); - } - - -// -// Return the USB controller capabilities. -// -void DUsbcScLogDevice::GetCaps(TDes8& aDes) const - { - TPckgBuf b; - b().version = iVersion; - Kern::InfoCopy(aDes, b); - } - -// End DUsbcScLogDevice - -/*****************************************************************************\ -* TUsbcScChunkInfo * -* * -* Where Chunk information is stored for the channel, and preseved for the * -* life of the chunk. * -* * -\*****************************************************************************/ - -void DfcChunkCleanup(TAny*); - -TUsbcScChunkInfo::TUsbcScChunkInfo(DLogicalDevice* aLdd) - : iChunk(NULL), - iCleanup((TDfcFn)&DfcChunkCleanup,this,Kern::SvMsgQue(),0), - iChunkMem(NULL), - iLdd(aLdd) - { - iPageNtz = (TInt8)__e32_find_ls1_32(Kern::RoundToPageSize(1)); - } - -TInt TUsbcScChunkInfo::CreateChunk(TInt aTotalSize) - { - // First, reserve an TUint of memory for each of pages needed to hold aTotalSize of memory. - // This will form the chunk map, so that we can look up the memory geometry. - iAllocatedSize = (aTotalSize>>iPageNtz)*sizeof(TUint); - iPhysicalMap = (TUint*) Kern::AllocZ(iAllocatedSize); - TInt r; - if (iPhysicalMap==NULL) - r = KErrNoMemory; - else - { - TChunkCreateInfo chunkInfo; - chunkInfo.iType = TChunkCreateInfo::ESharedKernelMultiple; - chunkInfo.iMaxSize = aTotalSize; - chunkInfo.iMapAttr = EMapAttrCachedMax; - chunkInfo.iOwnsMemory = EFalse; - chunkInfo.iDestroyedDfc = &iCleanup; - - TLinAddr chunkMem; - r = Kern::ChunkCreate(chunkInfo, iChunk, chunkMem, iChunkMapAttr); - iChunkMem = (TInt8*) chunkMem; - if (r==KErrNone) - iLdd->Open(); - } - - return r; -} - - -// This method requests closing the chunk. -// Note that nothing may happen immediately, as something else may have the chunk open. -void TUsbcScChunkInfo::Close() -{ - Kern::ChunkClose(iChunk); -} - - -TInt TUsbcScChunkInfo::ChunkAlloc(TInt aOffset, TInt aSize) - { - TUint pageMask = (~0)<>iPageNtz); rle>0; rle--, i++,physAddr+=pageSize) - { - __KTRACE_OPT(KUSB, Kern::Printf("::phys offset 0x%x = 0x%x", - (aOffset>>iPageNtz)+i, (physAddr & pageMask) | ((rle>(TInt)rleMask)?(TInt)rleMask:rle))); - iPhysicalMap[(aOffset>>iPageNtz)+i] = (physAddr & pageMask) | ((rle>(TInt)rleMask)?(TInt)rleMask:rle); - } - } - } - else if (r==KErrNoMemory) - r = -KErrNoMemory; // Semi-expected error. - return r; - } - -/** -This method retrieves the physical address of a given offset into the Chunk, and returns -the length of contiguous physical memory from this point. - -@param aOffset the offset from the start of the chunk, to be queried. -@param aPhysical a pointer to a TPhysAddr, to be filled with the physical - address of the memory at the given offset. - -@returns the length of contiguous physical memory from the given offset. -*/ - -TInt TUsbcScChunkInfo::GetPhysical(TInt aOffset, TPhysAddr* aPhysical) - { - // Use masks, to retrieve the two components from the physical map, we created of the memory. - TUint pageMask = (~0)<>iPageNtz]; - *aPhysical=(val & pageMask)+(aOffset & ~pageMask); - return ((val & ~pageMask)<ChunkCleanup(); - } - - -void TUsbcScChunkInfo::ChunkCleanup() -{ - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScChunkInfo::ChunkCleanup()")); - TUint physAddr; - TInt length; - TInt offset = 0; - - // The part of the field used for the physical page address. - TUint pageMask = (~0)<>2); - - while (offset < records) - { - physAddr = iPhysicalMap[offset] & pageMask; - length = iPhysicalMap[offset] & rleMask; - - if (physAddr>0) - Epoc::FreePhysicalRam(physAddr, length); - - offset += (length>0)?length:1; - } - Kern::Free(iPhysicalMap); - - DLogicalDevice* ldd = iLdd; - delete this; - ldd->Close(NULL); -} - -TInt TUsbcScChunkInfo::New(TUsbcScChunkInfo*& aChunk, TInt aSize, DLogicalDevice* aLdd) -{ - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScChunkInfo::New totalSize %d", aSize)); - - aChunk = new TUsbcScChunkInfo(aLdd); - if (aChunk==NULL) - { - return KErrNoMemory; - } - - TInt r = aChunk->CreateChunk(aSize); - if (r!=KErrNone) - { - delete aChunk; - aChunk=NULL; - return r; - } - - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScChunkInfo::New Created at 0x%x", aChunk->iChunkMem )); - return KErrNone; -} - -// End TUsbcScChunkInfo - -/*****************************************************************************\ -* TUsbcScBuffer * -* * -* Represents a buffer, within a chunk. Each buffers can be used by * -* differt endpoint on differnt alt settings * -* * -\*****************************************************************************/ - - -TInt TUsbcScBuffer::Construct(TInt aDirection, DLddUsbcScChannel* aLdd, TInt aBufferOffset, TInt aBufferEndOffset, TInt aMinReadSize, TInt aMaxPacketSize, TInt aMaxReadSize) - { - TInt r; -#ifdef _DEBUG - iSequence = aBufferOffset; // Initialized at this, so that each buffer starts with a diffrent sequence number -#endif - iMinReadSize = aMinReadSize; - TInt size = (aBufferEndOffset - aBufferOffset); - TInt pageSize = Kern::RoundToPageSize(1); - if (aMaxReadSize > 0) - iMaxReadSize = aMaxReadSize; - else - iMaxReadSize = pageSize + ((size/3) & ~(pageSize -1)); - iLdd = aLdd; - iDirection = aDirection; - iMode=0; - iChunkInfo = aLdd->iChunkInfo; - iChunkAddr = (TLinAddr) (aLdd->iChunkInfo->iChunkMem); //aChunkAddr; - - TInt headerSize = sizeof(TUsbcScTransferHeader)-4; // TransferHeader includes 4 bytes of data. - - - TUint maxAlignment; // Note: This is a mask for max Alignment, - - if (aMaxPacketSize) - { // EP0 packets are not DMAed, and so dont need ialignment. - iAlignMask = ~3; - maxAlignment = 3; - } - else - maxAlignment = 1023; // We don't know what the alignment requirement will be until enumeration, so assume worse case. - - iFirstPacket = aBufferOffset + sizeof(SUsbcScBufferHeader) + headerSize; - iFirstPacket = (iFirstPacket + maxAlignment) & ~maxAlignment; - - iBufferStart = (SUsbcScBufferHeader *) (iChunkAddr+aBufferOffset); - iBufferEnd = aBufferEndOffset; - - if ((iDirection&1)==KUsbcScOut) - iHead = iFirstPacket-headerSize;//aBufferOffset + sizeof(SUsbcScBufferHeader); - else - iSent = 0; - - iStalled=0; - iMaxPacketSize=0; - - r = iStatusList.Construct((aDirection==KUsbcScIn)?KUsbcScInRequests:KUsbcScOutRequests, iLdd->iClient); - if (!r) - { - iMaxPacketSize = aMaxPacketSize; // Indicates configured if ep0, otherwise not. - } - return r; - } - - -void TUsbcScBuffer::CreateChunkBufferHeader() -{ - if ((iDirection&1)==KUsbcScOut) - { - iBufferStart->iHead= iHead; - iBufferStart->iTail= iHead; // Initially no data! - iBufferStart->iBilTail=iHead; - __KTRACE_OPT(KUSB, Kern::Printf("Realize: iHead 0x%x bufferHeader 0x%x", iHead,iBufferStart )); - - // Dont need to round here, as we will round it up on endpoint change. (configuration) - } -} - -/* -TUsbcScBuffer::StartEndpoint - -This method sets the nessesary paramenters to the buffer, for use for a particular endpoint. - -*/ -void TUsbcScBuffer::StartEndpoint(TUsbcRequestCallback* aRequestInfo, TUint aFlags) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::StartEndpoint (0x%x) : ep %d(%d)",this,aRequestInfo->iEndpointNum, aRequestInfo->iRealEpNum)); - - iCallback=aRequestInfo; - iMaxPacketSize = iLdd->iController->EndpointPacketSize(iLdd, aRequestInfo->iRealEpNum); - iAlignMask = ~(((iMaxPacketSize+1) & 0xFFFFFFF8)-1); - iMode = aFlags; - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::StartEndpoint : max Packets %d, mask 0x%x flags 0x%x", iMaxPacketSize, iAlignMask, iMode)); - if ((iDirection&1)==KUsbcScOut) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::UsbcScOut\n")); - // Add dummy packet (doesnt have to be aligned, which avoids what if it changes issue) - // And Start next read. - iNeedsPacket=KEpIsStarting; - } - } - - - -void TUsbcScBuffer::Destroy() -{ - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::Destroy()")); - Cancel(KErrCancel); - if (iLdd->iController && ((iDirection&1)==KUsbcScOut)) - { // Me must cancel reads to LDD to, an there will be no list for the callbacks to look into. - iLdd->iController->CancelReadBuffer(iLdd, iCallback->iRealEpNum); - } - iStatusList.Destroy(); -} - - - -TInt TUsbcScBuffer::StartDataRead() -{ - if (!iMaxPacketSize) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::StartDataRead() - Not Configured")); - return KErrNone; - } - if (iStatusList.iState!=ENotRunning) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::StartDataRead() - Already Stated! (%d)",iStatusList.iState)); - return KErrNone; - } - - TInt maxLength; - TInt freeSpace; - TPhysAddr physAddr; - - // get next request - TUsbcScStatusElement* nextJob = iStatusList.Next(); - if (nextJob == NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf("No more jobs")); - if (iMode && KUsbScCoupledRead) - return KErrEof; - iStatusList.iState=EReadingAhead; - } - else - iStatusList.iState=EInProgress; - - TInt tail = iBufferStart->iTail; - TInt headerSize = sizeof(TUsbcScTransferHeader)-4; // TransferHeader includes 4 bytes of data. - maxLength = iChunkInfo->GetPhysical(iHead + headerSize, &physAddr); //returns all the bytes available after iHead + headerSize) - - __ASSERT_DEBUG(maxLength>0,Kern::Fault("TUsbcScBuffer::StartDataRead(", __LINE__)); - - - if (tail>iHead) // # # # H _ _ _ T # # # # - { - __KTRACE_OPT(KUSB,Kern::Printf("TUsbcScBuffer::StartDataRead() - tail 0x%x>head 0x%x, maxlength 0x%x", tail, iHead, maxLength)); - - freeSpace = (tail & iAlignMask) - (iHead +headerSize + (~iAlignMask+1) ); // Cant read right up to last buffer, or head/tail will cross. - - if (freeSpace iMaxReadSize) - maxLength = iMaxReadSize; - // else tail=iMinReadSize,Kern::Fault("TUsbcScBuffer::StartDataRead(", __LINE__)); - - TUint8* data = ((TUsbcScTransferHeader *) (iHead + iChunkAddr))->iData.b; - // set up callback stucture - - iCallback->SetRxBufferInfo(data, physAddr, iIndexArray, iSizeArray,maxLength); - TInt r; - // Go!! - r = iLdd->iController->SetupReadBuffer(*iCallback); - if (r!=KErrNone) - { - __KTRACE_OPT(KUSB,Kern::Printf("SetupReadBuffer Error: %d, RT %d",r, iStatusList.iState)); - iStatusList.Complete(r); - } - // After this, TUsbcScEndpoint::RequestCallback is called in a DFC. - // This in turn calls either TUsbcScBuffer::CompleteRead. - return KErrNone; -} - - -void TUsbcScBuffer::CompleteRead(TBool aStartNextRead) -{ - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::CompleteRead buff=%x",this)); - - // The first packet always contains the total #of bytes - const TInt byteCount = iCallback->iPacketSize[0]; - const TInt packetCount = iCallback->iRxPackets; - iCallback->iRxPackets=0; - TUint flags = 0; - - if (iCallback->iPacketSize[packetCount - 1] < (TUint) iMaxPacketSize) - flags = KUsbcScShortPacket; - - UpdateBufferList(byteCount, flags, aStartNextRead); -} - - -// This method "submits" the current transfer, and starts off the next read. - -void TUsbcScBuffer::UpdateBufferList(TInt aByteCount,TUint aFlags, TBool aStartNextRead) - { - - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::UpdateBUfferLIst aByteCount %d, flags 0x%x iHead 0x%x", aByteCount, aFlags, iHead)); - - TInt headerSize = sizeof(TUsbcScTransferHeader)-4; // TransferHeader includes 4 bytes of data. - TLinAddr dummy; - __KTRACE_OPT(KUSB, Kern::Printf("iHead 0x%x headerSize 0x%x",iHead, headerSize)); - - // Find iNext - - TInt next = iHead + headerSize + aByteCount; // next unused byte in buffer. - TInt maxLength; - - // This may take a few loops before we settle on a value. - do - { - // round up. - next = (next + headerSize + ~iAlignMask) & iAlignMask; - maxLength = iChunkInfo->GetPhysical(next, &dummy); - - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::UpdateBUfferLIst next %x buffer end %x min-read: %x maxRun %x", next, iBufferEnd, iMinReadSize, maxLength)); - // At the end of the buffer - wrap it if needbe. - if ((TUint)(next + iMinReadSize) > iBufferEnd) - { - next = iFirstPacket; - continue; - } - // Not enough space, move onto next block. - if (maxLengthiHashId=59*(iLdd->iAlternateSetting+1)+iCallback->iRealEpNum; // Alt setting realated.... - header->iSequence=iSequence; - iSequence++; -#endif - header->iBytes=aByteCount; - header->iNext=next; - header->iAltSettingSeq=iLdd->iAsSeq; - header->iAltSetting=iLdd->iAlternateSetting; - header->iFlags=aFlags; - __KTRACE_OPT(KUSB, Kern::Printf("We set next to 0x%x", next)); - - iStatusList.iState=ENotRunning; - if (next==iBufferStart->iTail) //or (othwise is as good as full) - { - iStalled=next; - } - else - { - - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::UpdateBUfferLIst StartRead?? ")); - TInt oldHead=iHead; - iHead = next; - - if ((aStartNextRead) && (StartDataRead() == KErrOverflow)) - { // Oh crumbs, set state as slalled. - if (oldHead != iBufferStart->iBilTail) - // If user has not read everything in the buffer - // then set up a stall, so that ldd get to be woken early - { - iStalled=next; - iHead=oldHead; - } - else // otherwise if everything is read - // no choice but to return what we have - { - iBufferStart->iHead = iHead; - } - } - else - { - iBufferStart->iHead = next; - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::UpdateBUfferLIst Compleating\n")); - } - // Complete userside - iStatusList.Complete(); - } - } - -void TUsbcScBuffer::PopStall() - { - if (iStalled==iBufferStart->iTail) - return; // Still stalled. - - if (iStalled!=-1) // If not Alt packet only stall - { - // pop off packet - iHead = iStalled; - } - iStalled=0; - // If Alt setting of the popped packet is different to now - // Add alt setting change packet. - - - if (StartDataRead() == KErrOverflow) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::PopStall Warning: Transfer was freed, but still no space!\n")); - } - - iBufferStart->iHead = iHead; - } - - - -void TUsbcScBuffer::StartDataWrite() - { - - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::StartDataWrite()")); - TUsbcScStatusElement* nextJob = iStatusList.Next(); - TBool zlpReqd; - TInt length; - TUint start; - TUint8* startAddr; - TInt maxLength; - TPhysAddr physAddr; - TInt r; - if (!iMaxPacketSize) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::StartDataWrite() - Not Configured")); - return; - } - - if (nextJob == NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::StartDataWrite() - No more jobs d=%d", iDirection)); - if (iDirection==KUsbcScBiIn) // assume this is EP0, if this is true. - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::StartDataWrite() Queue Read on EP0.")); - // Start other read again. - iLdd->iBuffers[iLdd->iEP0OutBuff].StartDataRead(); - } - } - else - { - if (iStatusList.iState==ENotRunning) - iSent=0; - iStatusList.iState=EInProgress; - - start = nextJob->iStart; - startAddr = (TUint8*) (start + ((TUint) (iChunkInfo->iChunkMem))); - - length = nextJob->iLength; - zlpReqd = (nextJob->iFlags & KUsbcScWriteFlagsZlp) !=0; - // get max read length - maxLength = iChunkInfo->GetPhysical( start, &physAddr); - - if (maxLength < length) - { - // modify request. - nextJob->iStart += maxLength; - nextJob->iLength -= maxLength; - // start this request. - iStatusList.iState=EFramgementInProgress; - zlpReqd=EFalse; - length = maxLength; - } - - if (iDirection==KUsbcScBiIn) // this is for EP0 - { - iLdd->iController->CancelReadBuffer(iLdd, iCallback->iRealEpNum); - iLdd->iBuffers[iLdd->iEP0OutBuff].iStatusList.iState=ENotRunning; - } - - iCallback->SetTxBufferInfo(startAddr, physAddr, length); - iCallback->iZlpReqd = zlpReqd; - r = iLdd->iController->SetupWriteBuffer(*iCallback); - if (r!=KErrNone) - { - __KTRACE_OPT(KUSB, Kern::Printf("SetupWriteBUffer Error: %d",r)); - iStatusList.Complete(r); - } - } - - } - -void TUsbcScBuffer::CompleteWrite() - { - TInt error = iCallback->iError; - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::CompleteWrite buff=%x, err=%d",this, error)); - iSent+= iCallback->iTxBytes; - - // More to send? - if (error || iStatusList.iState!=EFramgementInProgress) - { - // complete request with error (if one). - // Some data could have been transmitted, even with an error. - iStatusList.Complete(error); - } - - // Start next request, or next part of this one. - StartDataWrite(); - - } - -// Cancels the current request's callback. -// This is not to say it will cancel the actual operation, -// However it will cancel any further sections of the user perceived operation -// that are not yet started. -void TUsbcScBuffer::Cancel(TInt aErrorCode) - { - iStatusList.CancelQueued(); - if (iLdd->iController && ((iDirection&1)==KUsbcScIn)) - { - iLdd->iController->CancelWriteBuffer(iLdd, iCallback->iRealEpNum); - } - - iStatusList.Complete(aErrorCode); - } - -void TUsbcScBuffer::Ep0CancelLddRead() - { - // Stopping a read isn't as easy as one might think. - // We cancel the callback, but then check if any data was received (but not returned to us). - // If so, we must de-queue the request, and call the completion code. - - iLdd->iController->CancelReadBuffer(iLdd, iCallback->iRealEpNum); - if (iCallback->iRxPackets) // received data? - { - // remove DFC (if infact sent) - iCallback->iDfc.Cancel(); - - // process the callback now, but dont start another - CompleteRead(EFalse); - } - } - -void TUsbcScBuffer::SendEp0StatusPacket(TInt aState) -{ - __KTRACE_OPT(KUSB, Kern::Printf(" TUsbcScBuffer::SendEp0StatusPacket(%d)", aState)); - - // We need to add a packet to the buffer, so we must stop the pending read, and start - // another after we have added out packet. - Ep0CancelLddRead(); - - TUint* state = ((TUsbcScTransferHeader *) (iHead + iChunkAddr))->iData.i; - *state = aState; - UpdateBufferList(4,KUsbcScStateChange); -} - -// End TUsbcScBuffer - -/*****************************************************************************\ -* TUsbcScStatusList * -* * -* This is a list of read or write requests, containing user status * -* requests, that should later be completed. * -* * -\*****************************************************************************/ - -/** -Constructor for TUsbcScStatusList. - -@param aSize is the number of requests to allow at any one time. This value - must be a power of two, for correct operation. - -@returns KErrNoMemory if memory allocation failure, otherwise KErrNone. -*/ - -TInt TUsbcScStatusList::Construct(TInt aSize, DThread* aClient) - { - iSize=aSize; - iHead = 0; - iLength = 0; - iClient = aClient; - iElements=(TUsbcScStatusElement *) Kern::AllocZ(sizeof(TUsbcScStatusElement)*aSize); - return (iElements==NULL)?KErrNoMemory:KErrNone; - }; - - -// StatusList must be inactive before destroying. -void TUsbcScStatusList::Destroy() - { - if (iState!=ENotRunning) - Kern::Fault("TUsbcScStatusList::Destroy", __LINE__); - if (iElements) - { - Kern::Free(iElements); - iElements=NULL; - } - iClient=NULL; -} - -void TUsbcScStatusList::Pop() - { - if (iLength>0) - { - iLength--; - iHead = ((iHead+1) & (iSize-1)); - } - } - -TUsbcScStatusElement* TUsbcScStatusList::Next() - { - return (iLength==0)?NULL:&(iElements[iHead]); - } - -TInt TUsbcScStatusList ::Add(TRequestStatus* aStatus, TInt aLength, TUint aStart, TUint aFlags) - { - __KTRACE_OPT(KUSB,Kern::Printf("Adding request. iLength %d iSize %d", iLength, iSize)); - if (iLength0; elements2Complete--) - { - Kern::RequestComplete(iClient, iElements[head].iStatus, aError); - head = ((head+1) & (iSize-1)); - } - -} - - -/* This method Completes the head status request, and pops it from its list. -This version of Complete is to be used in cases where the next request is not -chained - usually because of an error. - -@Param aError - the code to complete with. - -returns KErrNotFound if there was no request to complete -*/ - - -TInt TUsbcScStatusList::Complete(TInt aError) - { - if (iState==ENotRunning) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScStatusList::Complete() - iState == ENotRunning!")); - } - else - { - iState=ENotRunning; - if (iLength==0) - return KErrNotFound; - - Kern::RequestComplete(iClient, iElements[iHead].iStatus, aError); - - iLength--; - iHead = ((iHead+1) & (iSize-1)); - } - return KErrNone; - } - - -/* This method Completes the head status request, and pops it from its list. (If found.) -This version of Complete is to be used in cases where the request is successful, and - next request after this has (if present) been chained. -*/ - -void TUsbcScStatusList::Complete() - { - if (iLength==0) - return; - __KTRACE_OPT(KUSB, Kern::Printf("Completing request. iLength %d", iLength)); - - Kern::RequestComplete(iClient, iElements[iHead].iStatus, KErrNone); - - iLength--; - iHead = ((iHead+1) & (iSize-1)); - } - -// End TUsbcScStatusList - -/*****************************************************************************\ -* TRealizeInfo * -* * -* Used by DLddUsbcScChannel::RealizeInterface to set up the chunk * -* * -\*****************************************************************************/ - -// Init -// -// This method works out the number potential maximum number of endpoints -// and the number of alt settings. With this information it allocs -// the necessary space for the given stucture to store information about -// the endpoints. -// This is intended to be called by RealizeInterface. This stucture is -// intended to be only temporary, and the space will be freed with Free() -// before RealizeInteface has finished. - -void TRealizeInfo::Init(TUsbcScAlternateSettingList* aAlternateSettingList) -{ - iAlternateSettingList = aAlternateSettingList; - iMaxEndpoints=0; - iTotalSize =0; - iTotalBuffers=0; - iAltSettings =0; - __KTRACE_OPT(KUSB, Kern::Printf("Realize: work out max endpoint")); - // Work out max endpoints and number of alternate settings. - - if (iAlternateSettingList) - { - TUsbcScAlternateSetting* alt = iAlternateSettingList->iHead; - while (alt != NULL) - { - iAltSettings++; - if (alt->iNumberOfEndpoints>iMaxEndpoints) - iMaxEndpoints = alt->iNumberOfEndpoints; - // could work out in/out specifics, but unnecessary. - alt = alt->iNext; - }; - } - - // Alloc some temporary working space for temp endpoint metadata - __KTRACE_OPT(KUSB, Kern::Printf("Realize: Alloc temp. Maxendpoints %d", iMaxEndpoints)); - TInt inout; - for (inout=KUsbcScIn; inoutiHead;alt!=NULL;alt = alt->iNext ) - { - __KTRACE_OPT(KUSB, Kern::Printf("Realize: AlternateSetting %x", alt)); - - iBufs[KUsbcScIn].iEps =0; - iBufs[KUsbcScOut].iEps =0; - - // For alt setting, iterate eps - for (altEp=1; altEp <= alt->iNumberOfEndpoints; altEp++) - { - __KTRACE_OPT(KUSB, Kern::Printf("Realize: Endpoint to add: %d",altEp)); - - TUsbcScEndpoint* nextEp = alt->iEndpoint[altEp]; - - __KTRACE_OPT(KUSB, Kern::Printf("Realize: ep Buffer Size: %d",nextEp->EndpointInfo()->iBufferSize)); - - inout = (nextEp->EndpointInfo()->iDir==UsbShai::KUsbEpDirIn)?KUsbcScIn: - (nextEp->EndpointInfo()->iDir==UsbShai::KUsbEpDirOut)?KUsbcScOut:KUsbcScUnknown; - if (inout==KUsbcScUnknown) - { - __KTRACE_OPT(KUSB, Kern::Printf("Realize: KUsbcScUnknown %x",nextEp->EndpointInfo()->iDir)); - return KErrArgument; - } - - bufsd = &(iBufs[inout]); - __KTRACE_OPT(KUSB, Kern::Printf("Realize: ep direction: %x # endpoints %d", inout, bufsd->iEps)); - - - // find and position ep, and insert. - - if (bufsd->iEps==0) // First entry. - { - __KTRACE_OPT(KUSB, Kern::Printf("Realize: Add first endpoint")); - endpointOffs = altSetting*iMaxEndpoints; - bufsd->iEp[endpointOffs] = nextEp; - } - else - { - placed = EFalse; - // Move down the list, until we find the right place. - for (endpoint=bufsd->iEps-1; endpoint>-1; endpoint--) - { - endpointOffs = altSetting*iMaxEndpoints + endpoint; - if (bufsd->iEp[endpointOffs]->EndpointInfo()->iBufferSize < nextEp->EndpointInfo()->iBufferSize) - { - __KTRACE_OPT(KUSB, Kern::Printf("Realize: Shift Endpoint %d", endpoint)); - - bufsd->iEp[endpointOffs+1] = bufsd->iEp[endpointOffs]; - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf("Realize: Insert After Endpoint %d", endpoint)); - - bufsd->iEp[endpointOffs+1] = nextEp; - placed = ETrue; - break; - } - } // end for endpoint - if (!placed) // if we didn't place it, it must be the biggest so far, so goes at the top. - bufsd->iEp[0] = nextEp; - } // endif - bufsd->iEps++; - } // for altEp - altSetting++; - } // for alt - }// if iAltsettingList - return KErrNone; - } - -// CalcBuffSizes -// -// This works out the sizes of all the buffers, and stores the result in aBufInfo -// based on the buffer information provided in the same structure. -// Realize_CopyAndSortEndpoints is used to fill the structure with the informaition -// required. - -void TRealizeInfo::CalcBuffSizes() - { - __KTRACE_OPT(KUSB, Kern::Printf("Realize: Calculate Buffers")); - - TInt endpoint; - TInt inout; - TInt altSetting; - TUsbcScEndpoint* nextEp; - TInt bufferSize; - TEndpointSortBufs* bufsd; - - for (inout=KUsbcScIn; inoutiEp[altSetting* iMaxEndpoints + endpoint]; - if (nextEp!=NULL) - { - bufferSize = nextEp->EndpointInfo()->iBufferSize; - __KTRACE_OPT(KUSB, Kern::Printf("Realize: comparing size %d", bufferSize)); - if (bufferSize> bufMaxSize) - bufMaxSize = bufferSize; - } - } // for altsetting - __KTRACE_OPT(KUSB, Kern::Printf("Realize: bufMaxSize %d", bufMaxSize)); - bufsd->iSizes[endpoint] = bufMaxSize; - if (bufMaxSize>0) - { - iTotalSize += bufsd->iSizes[endpoint]; - iTotalBuffers++; - } - } // for endpoint - } // for in/out -} - -// Free -// -// Cleans up after Init() - -void TRealizeInfo::Free() - { - TInt inout; - for (inout=KUsbcScIn; inoutiChunkMem; - - chkHdr->iBuffers = sizeof(TUsbcScChunkHdrOffs); // First struct just after this one. - iChunkStuct = (TUsbcScChunkBuffersHeader*) ( (TInt) aChunkInfo->iChunkMem + chkHdr->iBuffers); - - // Store number of buffers in chunk - iChunkStuct->iRecordSize = sizeof(TUsbcScBufferRecord); - iChunkStuct->iNumOfBufs=iTotalBuffers; - - iAltSettingsTbl = (TUsbcScChunkAltSettingHeader*) &(iChunkStuct->iBufferOffset[(iTotalBuffers+2)*sizeof(TUsbcScBufferRecord)]); // 2 extra for EP0 in and out. - - chkHdr->iAltSettings = (TUint) iAltSettingsTbl - (TUint) aChunkInfo->iChunkMem; - - iAltSettingsTbl->iEpRecordSize = sizeof(TUint); - iAltSettingsTbl->iNumOfAltSettings = iAltSettings; - - - TInt tableOffset = (TUint) iAltSettingsTbl->iAltTableOffset - (TUint) aChunkInfo->iChunkMem + iAltSettings*sizeof(TInt); - __KTRACE_OPT(KUSB, Kern::Printf("Realize: table offset: 0x%x, altTble %x iChnkMem %x altSettings %x",tableOffset, iAltSettingsTbl, aChunkInfo->iChunkMem, iAltSettings )); - - __KTRACE_OPT(KUSB, Kern::Printf("Realize: populate chunk - create alt settings table")); - - // Create alt settings table. Set each element of altsettings table, to each induivatual alt setting table. - // then fill in the number of endpoints for that alt setting, in the table. - - TInt* noEpForAlt; - TInt altSetting; - TUsbcScAlternateSetting* alt; - if (iAlternateSettingList) - { - alt = iAlternateSettingList->iHead; - for (altSetting=0; altSettingiAltTableOffset[altSetting] = tableOffset; - noEpForAlt = (TInt*) &aChunkInfo->iChunkMem[tableOffset]; - - *noEpForAlt = alt->iNumberOfEndpoints; // Set NumberofEndpoints field in Altsetting table - tableOffset+= sizeof(TInt)+ alt->iNumberOfEndpoints*sizeof(TUsbcScHdrEndpointRecord); - alt = alt->iNext; - } - } - -} // end LayoutChunkHeader - - - -/*****************************************************************************\ -* DLddUsbcScChannel * -* * -* Inherits from DLogicalDevice, the USB Shared Chunk LDD factory class * -* * -\*****************************************************************************/ - -// -// Constructor -// -DLddUsbcScChannel::DLddUsbcScChannel() - : iValidInterface(EFalse), - iAlternateSettingList(NULL), - iEndpoint(NULL), - iCompleteAllCallbackInfo(this, DLddUsbcScChannel::EmergencyCompleteDfc, KUsbRequestCallbackPriority), - iStatusChangePtr(NULL), - iStatusCallbackInfo(this, DLddUsbcScChannel::StatusChangeCallback, KUsbRequestCallbackPriority), - iEndpointStatusChangePtr(NULL), - iEndpointStatusCallbackInfo(this, DLddUsbcScChannel::EndpointStatusChangeCallback, - KUsbRequestCallbackPriority), - iOtgFeatureChangePtr(NULL), - iOtgFeatureCallbackInfo(this, DLddUsbcScChannel::OtgFeatureChangeCallback, KUsbRequestCallbackPriority), - iNumberOfEndpoints(0), - iDeviceState(UsbShai::EUsbPeripheralStateUndefined), - iOwnsDeviceControl(EFalse), - iAlternateSetting(0), - iAsSeq(0), - iStatusFifo(NULL), - iUserKnowsAltSetting(ETrue), - iDeviceStatusNeeded(EFalse), - iChannelClosing(EFalse), - iRealizeCalled(EFalse), - iChunkInfo(NULL), - iNumBuffers(-1), - iBuffers(NULL), - iEp0Endpoint(NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf("DLddUsbcScChannel::DLddUsbcScChannel()")); - iClient = &Kern::CurrentThread(); - iClient->Open(); - for (TInt i = 1; i < KUsbcMaxRequests; i++) - { - iRequestStatus[i] = NULL; - } - } - - -// -// Destructor -// - -DLddUsbcScChannel::~DLddUsbcScChannel() - { - __KTRACE_OPT(KUSB, Kern::Printf("DLddUsbcScChannel::~DLddUsbcScChannel()")); - if (iController) - { - iController->DeRegisterClient(this); - iStatusCallbackInfo.Cancel(); - iEndpointStatusCallbackInfo.Cancel(); - iOtgFeatureCallbackInfo.Cancel(); - iCompleteAllCallbackInfo.Cancel(); - DestroyAllInterfaces(); - if (iOwnsDeviceControl) - { - iController->ReleaseDeviceControl(this); - iOwnsDeviceControl = EFalse; - } - iController=NULL; - DestroyEp0(); - if (iStatusFifo!=NULL) - { - delete iStatusFifo; - } - } - __KTRACE_OPT(KUSB, Kern::Printf("Closing buffers")); - if (iBuffers) - { - TInt i; - for (i=0; i<(iNumBuffers+2); i++) - { - iBuffers[i].Destroy(); - } - Kern::Free(iBuffers); - } - - if (iRealizeCalled) - { - // Close Chunk - iChunkInfo->Close(); - // ChunkInfo will delete itself with DFC, but the pointer here is no longer needed. - iChunkInfo=NULL; - } - __KTRACE_OPT(KUSB, Kern::Printf("about to SafeClose")); - Kern::SafeClose((DObject*&)iClient, NULL); - } - - -// -// DoCreate - Create channel -// - -TInt DLddUsbcScChannel::DoCreate(TInt /*aUnit*/, const TDesC8* /*aInfo*/, const TVersion& aVer) - { - __KTRACE_OPT(KUSB, Kern::Printf("LDD DoCreateL 1 Ver = %02d %02d %02d", - aVer.iMajor, aVer.iMinor, aVer.iBuild)); - if (!Kern::CurrentThreadHasCapability(ECapabilityCommDD, - __PLATSEC_DIAGNOSTIC_STRING("Checked by USBCSC.LDD (USB Driver)"))) - { - return KErrPermissionDenied; - } - - iController = DUsbClientController::UsbcControllerPointer(); - - if (!iController) - { - return KErrGeneral; - } - - iStatusFifo = new TUsbcDeviceStatusQueue; - if (iStatusFifo == NULL) - { - return KErrNoMemory; - } - - if (!Kern::QueryVersionSupported(TVersion(KUsbcScMajorVersion, KUsbcScMinorVersion, KUsbcScBuildVersion), aVer)) - { - return KErrNotSupported; - } - - // set up the correct DFC queue - SetDfcQ(iController->DfcQ(0)); // sets the channel's dfc queue - iCompleteAllCallbackInfo.SetDfcQ(iDfcQ); - 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); - if (r != KErrNone) - return r; - - return r; - } -// end DoCreate. - - -// -// HandleMsg -// -// Events from userside arrive here, and delegated to either DoRequest, DoControl or DoCancel. -// - -void DLddUsbcScChannel::HandleMsg(TMessageBase* aMsg) - { - TThreadMessage& m = *(TThreadMessage*)aMsg; - TInt id = m.iValue; - __KTRACE_OPT(KUSB, Kern::Printf("HandleMsg 0x%x", id)); - - if (id == (TInt) ECloseMsg) - { - iChannelClosing = ETrue; - m.Complete(KErrNone, EFalse); - return; - } - - TInt r; - if (id < 0) - { - // DoRequest - TRequestStatus* pS = (TRequestStatus*) m.Ptr0(); - r = DoRequest(~id, pS, m.Ptr1(), m.Ptr2()); - m.Complete(r, ETrue); - } - else if (id & RDevUsbcScClient::ERequestCancel) - { - // DoCancel - r = DoCancel(id, (TUint) m.Ptr0(), (TUint) m.Ptr1()); - m.Complete(r, ETrue); - } - else - { - // DoControl - r = DoControl(id, m.Ptr0(), m.Ptr1()); - m.Complete(r, ETrue); - } - } -// end HandleMsg. - - -#define BREAK_IF_NULL_ARG(a,r) if (a==NULL) { r = KErrArgument; __KTRACE_OPT(KUSB,Kern::Printf("NULL Argument")); break; } - -// -// DoRequest - Asynchronous requests -// -// Overrides pure virtual, called by HandleMsg. (Above) -// -TInt DLddUsbcScChannel::DoRequest(TInt aReqNo, TRequestStatus* aStatus, TAny* a1, TAny* a2) - { - TInt reqNo = aReqNo & RDevUsbcScClient::KFieldIdMask; - TInt r = KErrNone; // return via request notify - TBool needsCompletion =EFalse; - - __KTRACE_OPT(KUSB, Kern::Printf("DoRequest 0x%08x", aReqNo)); - - if ((reqNo>RDevUsbcScClient::ERequestReadDataNotify) && - (reqNo>RDevUsbcScClient::KFieldBuffPos)&RDevUsbcScClient::KFieldBuffMask; - __KTRACE_OPT(KUSB, Kern::Printf("ERequestWriteData")); - BREAK_IF_NULL_ARG(a2,r); - - r = DoWriteData( aStatus, buffer, (TInt) a1 /*Start*/, (TInt) a2 /* Length */, - aReqNo>>RDevUsbcScClient::KFieldFlagsPos ); // Flags - break; - } - case RDevUsbcScClient::ERequestReadDataNotify: - { - __KTRACE_OPT(KUSB, Kern::Printf("ERequestReadDataNotify")); - return DoReadDataNotify(aStatus, (TInt) a1, (TInt) a2); // a1 = aBufferNumber, a2 - aLength; - } - - case RDevUsbcScClient::ERequestAlternateDeviceStatusNotify: - { - __KTRACE_OPT(KUSB, Kern::Printf("ERequestAlternateDeviceStatusNotify")); - BREAK_IF_NULL_ARG(a1,r); - iDeviceStatusNeeded = ETrue; - iStatusChangePtr = a1; - needsCompletion = AlternateDeviceStateTestComplete(); - break; - } - case RDevUsbcScClient::ERequestReEnumerate: - { - __KTRACE_OPT(KUSB, Kern::Printf("ERequestReEnumerate")); - // If successful, this will complete via the status notification. - r = iController->ReEnumerate(); - break; - } - case RDevUsbcScClient::ERequestEndpointStatusNotify: - { - __KTRACE_OPT(KUSB, Kern::Printf("ERequestEndpointStatusNotify")); - BREAK_IF_NULL_ARG(a1,r); - - iEndpointStatusChangePtr = a1; - break; - } - case RDevUsbcScClient::ERequestOtgFeaturesNotify: - { - __KTRACE_OPT(KUSB, Kern::Printf("ERequestOtgFeaturesNotify")); - BREAK_IF_NULL_ARG(a1,r); - - iOtgFeatureChangePtr = a1; - break; - } - default: - r = KErrNotSupported; - } - - if ((needsCompletion) || (r != KErrNone)) - { - iRequestStatus[reqNo] = aStatus; - Kern::RequestComplete(iClient, iRequestStatus[reqNo], r); - } - return KErrNone; - } -// end DoRequest. - - -// -// DoReadDataNotify -// -// This method sets up the request to facilitate the userside being notifed when new data has been read. -// -TInt DLddUsbcScChannel::DoReadDataNotify(TRequestStatus* aStatus, TInt aBufferNum, TInt aLength) - { - __KTRACE_OPT(KUSB, Kern::Printf(" DLddUsbcScChannel::DoReadDataNotify(x, %d, 0x%x)", aBufferNum, aLength)); - TInt r = KErrNone; - // check range - if ((aBufferNum<0) || (aBufferNum>=iNumBuffers)) // Indirectly checks that we are set up. - { - if (aBufferNum!=KUsbcScEndpointZero) - { - __KTRACE_OPT(KUSB, Kern::Printf(" DLddUsbcScChannel::DoReadDataNotify : Bad Buffer Number!")); - return KErrArgument; - } - else - { - aBufferNum = iEP0OutBuff; - } - } - else - { - // check direction - if (iBuffers[aBufferNum].iDirection!=KUsbcScOut) - { - __KTRACE_OPT(KUSB, Kern::Printf(" DLddUsbcScChannel::DoReadDataNotify : Bad Buffer Direction!")); - return KErrNotSupported; - } - if (!Configured()) - return KErrUsbInterfaceNotReady; - } - SUsbcScBufferHeader* scBuffer = (SUsbcScBufferHeader*) iBuffers[aBufferNum].iBufferStart; - - __KTRACE_OPT(KUSB, Kern::Printf(" DLddUsbcScChannel::DoReadDataNotify head %x tail %x", iBuffers[aBufferNum].iHead , scBuffer->iTail )); - - if (iBuffers[aBufferNum].iHead != scBuffer->iBilTail) - r = KErrCompletion; - else - if (iBuffers[aBufferNum].iStalled) - { - iBuffers[aBufferNum].PopStall(); - return KErrCompletion; - } - else - r = iBuffers[aBufferNum].iStatusList.Add(aStatus, aLength, 0,0); - - if (iBuffers[aBufferNum].iStatusList.iState==ENotRunning) - { - iBuffers[aBufferNum].StartDataRead(); - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf("Job in Progress!")); - } - return r; - } -// end DoReadDataNotify. - - - -// -// DoWriteData -// -// This method sets up the request to write data to USB from userside. -// -TInt DLddUsbcScChannel::DoWriteData(TRequestStatus* aStatus,TInt aBufferNum, TUint aStart, TUint aLength, TUint aFlags) - { - __KTRACE_OPT(KUSB, Kern::Printf(" DLddUsbcScChannel::DoWriteData(%d, 0x%x, 0x%x, 0x%x)", aBufferNum, aStart, aLength, aFlags)); - if (!iUserKnowsAltSetting) - return KErrEof; - // Check Buffer Number - if ((aBufferNum<0) || (aBufferNum>=iNumBuffers)) - { - if ((TUint)aBufferNum!=RDevUsbcScClient::KFieldBuffMask) // KUsbcScEndpointZero & KFieldBuffMas = KFieldBuffMas; - { - __KTRACE_OPT(KUSB, Kern::Printf(" DLddUsbcScChannel::DoWriteData : Bad Buffer Number!")); - return KErrArgument; - } - else - { - aBufferNum = iEP0InBuff; - } - } - else - { - // check direction - if (iBuffers[aBufferNum].iDirection!=KUsbcScIn) - { - __KTRACE_OPT(KUSB, Kern::Printf(" DLddUsbcScChannel::DoWriteData Bad endpoint Direction")); - return KErrArgument; - } - } - - TUsbcScBuffer& buf=iBuffers[aBufferNum]; - - if ((aStart< (((TLinAddr) buf.iBufferStart)-buf.iChunkAddr)) || ((aStart+aLength)>iBuffers[aBufferNum].iBufferEnd)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" DLddUsbcScChannel::DoWriteData Bad Range aStart or aLength 0x%x > 0x%x + 0x%x < 0x%x", (((TLinAddr) buf.iBufferStart)-buf.iChunkAddr),aStart, aLength, iBuffers[aBufferNum].iBufferEnd )); - return KErrArgument; - } - - if ( (aBufferNum != iEP0InBuff) && !Configured()) - return KErrUsbInterfaceNotReady; - - if (aStart & ~buf.iAlignMask) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScBuffer::DoDataWrite: address 0x%x unaligned.",aStart)); - return KErrArgument; - } - - TInt r = iBuffers[aBufferNum].iStatusList.Add(aStatus, aLength, aStart, aFlags); //update - - if (iBuffers[aBufferNum].iStatusList.iState==ENotRunning) - { - iBuffers[aBufferNum].StartDataWrite(); - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf("Job in Progress!")); - } - - - return r; - } -// end DoWriteData. - - -// -// Cancel an outstanding request // Cancel need reworking. -// -TInt DLddUsbcScChannel::DoCancel(TInt aReqNo, TUint aBuff, TUint aSpair) - { - TInt r = KErrNone; - TInt direction=KUsbcScOut; - - __KTRACE_OPT(KUSB, Kern::Printf("DoCancel: 0x%x aBuff 0x%x", aReqNo, aBuff)); - switch (aReqNo) - { - case RDevUsbcScClient::ERequestCancel: - TInt buffer; - TInt mask; - - for (buffer=1, mask=1; bufferAbortTransfer(); - if (direction==KUsbcScIn) - aBuff=iEP0InBuff; - else - aBuff=iEP0OutBuff; - } - else if ((TInt)aBuff >= iNumBuffers) // check buff no range. - { - __KTRACE_OPT(KUSB, Kern::Printf("DoCancel Error: Bad buffer number")); - return KErrArgument; - } - - if ((iBuffers[aBuff].iDirection&1)!=direction) // Does direction match call type? - { - __KTRACE_OPT(KUSB, Kern::Printf("DoCancel Error: Bad buffer direction")); - return KErrArgument; - } - iBuffers[aBuff].iStatusList.CancelQueued(); - iBuffers[aBuff].Cancel(KErrCancel); - - return KErrNone; - - case RDevUsbcScClient::ERequestAlternateDeviceStatusNotifyCancel: - __KTRACE_OPT(KUSB, Kern::Printf("DoCancel: ERequestAlternateDeviceStatusNotify 0x%x", aReqNo)); - iDeviceStatusNeeded = EFalse; - iStatusFifo->FlushQueue(); - if (iStatusChangePtr) - { - TInt deviceState = iController->GetDeviceStatus(); - r = Kern::ThreadRawWrite(iClient, iStatusChangePtr, &deviceState, sizeof(deviceState), iClient); - if (r != KErrNone) - PanicClientThread(r); - iStatusChangePtr = NULL; - } - break; - - case RDevUsbcScClient::ERequestReEnumerateCancel: - __KTRACE_OPT(KUSB, Kern::Printf("DoCancel ERequestReEnumerate: 0x%x", aReqNo)); - break; - - case RDevUsbcScClient::ERequestEndpointStatusNotifyCancel: - __KTRACE_OPT(KUSB, Kern::Printf("DoCancel ERequestEndpointStatusNotify: 0x%x", aReqNo)); - CancelNotifyEndpointStatus(); - break; - - case RDevUsbcScClient::ERequestOtgFeaturesNotifyCancel: - __KTRACE_OPT(KUSB, Kern::Printf("DoCancel ERequestOtgFeaturesNotify: 0x%x", aReqNo)); - CancelNotifyOtgFeatures(); - break; - - default: - __KTRACE_OPT(KUSB, Kern::Printf("DoCancel Unknown! 0x%x", aReqNo)); - return KErrArgument; - } - - Kern::RequestComplete(iClient,iRequestStatus[aReqNo & ~RDevUsbcScClient::ERequestCancel], KErrCancel); - return r; - } - - -void DLddUsbcScChannel::CancelNotifyEndpointStatus() - { - if (iEndpointStatusChangePtr) - { - TUint epBitmap = 0; - for (TInt i = 1; i <= iNumberOfEndpoints; i++) - { - TInt v = iController->GetEndpointStatus(this, iEndpoint[i]->RealEpNumber()); - TUint b; - (v == EEndpointStateStalled) ? b = 1 : b = 0; - epBitmap |= b << i; - } - TInt r=Kern::ThreadRawWrite(iClient, iEndpointStatusChangePtr, (TUint8*) &epBitmap, sizeof(epBitmap), iClient); - if (r != KErrNone) - PanicClientThread(r); - iEndpointStatusChangePtr = NULL; - } - } - -void DLddUsbcScChannel::CancelNotifyOtgFeatures() - { - if (iOtgFeatureChangePtr) - { - TUint8 features; - iController->GetCurrentOtgFeatures(features); - TInt r=Kern::ThreadRawWrite(iClient, iOtgFeatureChangePtr, (TUint8*)&features, sizeof(features), iClient); - if (r != KErrNone) - PanicClientThread(r); - iOtgFeatureChangePtr = NULL; - } - } - - - -// -// DoControl - Synchronous requests -// -// Called from HandleMsg. - -TInt DLddUsbcScChannel::DoControl(TInt aFunction, TAny* a1, TAny* a2) - { - __KTRACE_OPT(KUSB, Kern::Printf("DoControl: %d", aFunction)); - - TInt r = KErrNone; - TInt ep, param; - TUsbcScEndpoint* pEndpoint; - TPtrC8 pZeroDesc(NULL, 0); - TEndpointDescriptorInfo epInfo; - TUsbcScIfcInfo ifcInfo; - TCSDescriptorInfo desInfo; - TUsbcEndpointResource epRes; - - switch (aFunction) - { - case RDevUsbcScClient::EControlEndpointZeroRequestError: - __KTRACE_OPT(KUSB, Kern::Printf("EControlEndpointZeroRequestError")); - r = KErrNone; - if (iOwnsDeviceControl || (iValidInterface && iDeviceState == UsbShai::EUsbPeripheralStateConfigured)) - { - iController->Ep0Stall(this); - } - else - { - if (iDeviceState != UsbShai::EUsbPeripheralStateConfigured) - r = KErrUsbDeviceNotConfigured; - else - r = KErrUsbInterfaceNotReady; - } - break; - - case RDevUsbcScClient::EControlGetAlternateSetting: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetAlternateSetting")); - if (iValidInterface && iDeviceState == UsbShai::EUsbPeripheralStateConfigured) - { - r = iController->GetInterfaceNumber(this, param); - if (r == KErrNone) - { - r = Kern::ThreadRawWrite(iClient, a1, ¶m, sizeof(param), iClient); - if (r != KErrNone) - PanicClientThread(r); - } - } - else - { - if (iDeviceState != UsbShai::EUsbPeripheralStateConfigured) - r = KErrUsbDeviceNotConfigured; - else - r = KErrUsbInterfaceNotReady; - } - break; - - case RDevUsbcScClient::EControlDeviceStatus: - __KTRACE_OPT(KUSB, Kern::Printf("EControlDeviceStatus")); - param = iController->GetDeviceStatus(); - r = Kern::ThreadRawWrite(iClient, a1, ¶m, sizeof(param), iClient); - if (r != KErrNone) - PanicClientThread(r); - break; - - case RDevUsbcScClient::EControlEndpointStatus: - __KTRACE_OPT(KUSB, Kern::Printf("EControlEndpointStatus")); - if (iValidInterface && ValidEndpoint((TInt) a1)) - { - pEndpoint = iEndpoint[(TInt)a1]; - if (pEndpoint == NULL) - r = KErrNotSupported; - else - { - param = iController->GetEndpointStatus(this, iEndpoint[(TInt)a1]->RealEpNumber()); - r = Kern::ThreadRawWrite(iClient, a2, ¶m, sizeof(param), iClient); - if (r != KErrNone) - PanicClientThread(r); - } - } - else - { - if (iDeviceState != UsbShai::EUsbPeripheralStateConfigured) - r = KErrUsbDeviceNotConfigured; - else - r = KErrUsbInterfaceNotReady; - } - break; - - case RDevUsbcScClient::EControlEndpointCaps: - __KTRACE_OPT(KUSB, Kern::Printf("EControlEndpointCaps")); - r = Kern::ThreadDesWrite(iClient, a1, pZeroDesc, 0, 0, iClient); - if (r != KErrNone) - PanicClientThread(r); - iController->EndpointCaps(this, *((TDes8*) a1)); - break; - - case RDevUsbcScClient::EControlDeviceCaps: - __KTRACE_OPT(KUSB, Kern::Printf("EControlDeviceCaps")); - r = Kern::ThreadDesWrite(iClient, a1, pZeroDesc, 0, 0, iClient); - if (r != KErrNone) - PanicClientThread(r); - iController->DeviceCaps(this, *((TDes8*) a1)); - break; - - case RDevUsbcScClient::EControlSendEp0StatusPacket: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSendEp0StatusPacket")); - iController->SendEp0StatusPacket(this); - break; - - case RDevUsbcScClient::EControlHaltEndpoint: - __KTRACE_OPT(KUSB, Kern::Printf("EControlHaltEndpoint")); - if (iValidInterface && ValidEndpoint((TInt) a1)) - { - r = iController->HaltEndpoint(this, iEndpoint[(TInt)a1]->RealEpNumber()); - } - else - { - if (iDeviceState != UsbShai::EUsbPeripheralStateConfigured) - r = KErrUsbDeviceNotConfigured; - else - r = KErrUsbInterfaceNotReady; - } - break; - - case RDevUsbcScClient::EControlClearHaltEndpoint: - __KTRACE_OPT(KUSB, Kern::Printf("EControlClearHaltEndpoint")); - if (iValidInterface && ValidEndpoint((TInt) a1)) - { - r = iController->ClearHaltEndpoint(this, iEndpoint[(TInt)a1]->RealEpNumber()); - } - else - { - if (iDeviceState != UsbShai::EUsbPeripheralStateConfigured) - r = KErrUsbDeviceNotConfigured; - else - r = KErrUsbInterfaceNotReady; - } - break; - - case RDevUsbcScClient::EControlDumpRegisters: - __KTRACE_OPT(KUSB, Kern::Printf("EControlDumpRegisters")); - iController->DumpRegisters(); - break; - - case RDevUsbcScClient::EControlReleaseDeviceControl: - __KTRACE_OPT(KUSB, Kern::Printf("EControlReleaseDeviceControl")); - iController->ReleaseDeviceControl(this); - iOwnsDeviceControl = EFalse; - break; - - case RDevUsbcScClient::EControlEndpointZeroMaxPacketSizes: - __KTRACE_OPT(KUSB, Kern::Printf("EControlEndpointZeroMaxPacketSizes")); - r = iController->EndpointZeroMaxPacketSizes(); - break; - - case RDevUsbcScClient::EControlSetEndpointZeroMaxPacketSize: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetEndpointZeroMaxPacketSize")); - r = iController->SetEndpointZeroMaxPacketSize(reinterpret_cast(a1)); - break; - - case RDevUsbcScClient::EControlGetEndpointZeroMaxPacketSize: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetEndpointZeroMaxPacketSize")); - r = iController->Ep0PacketSize(); - break; - - case RDevUsbcScClient::EControlGetDeviceDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetDeviceDescriptor")); - r = Kern::ThreadDesWrite(iClient, a1, pZeroDesc, 0, 0, iClient); - if (r != KErrNone) - PanicClientThread(r); - r = iController->GetDeviceDescriptor(iClient, *((TDes8*) a1)); - break; - - case RDevUsbcScClient::EControlSetDeviceDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetDeviceDescriptor")); - BREAK_IF_NULL_ARG(a1,r); - r = iController->SetDeviceDescriptor(iClient, *((TDes8*) a1)); - break; - - case RDevUsbcScClient::EControlGetDeviceDescriptorSize: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetDeviceDescriptorSize")); - BREAK_IF_NULL_ARG(a1,r); - r = iController->GetDeviceDescriptorSize(iClient, *((TDes8*) a1)); - break; - - case RDevUsbcScClient::EControlGetConfigurationDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetConfigurationDescriptor")); - r = Kern::ThreadDesWrite(iClient, a1, pZeroDesc, 0 , 0, iClient); - if (r != KErrNone) - PanicClientThread(r); - r = iController->GetConfigurationDescriptor(iClient, *((TDes8*) a1)); - break; - - case RDevUsbcScClient::EControlGetConfigurationDescriptorSize: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetConfigurationDescriptorSize")); - if (a1 != NULL) - { - r = iController->GetConfigurationDescriptorSize(iClient, *((TDes8*) a1)); - } - else - r = KErrArgument; - break; - - case RDevUsbcScClient::EControlSetConfigurationDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetConfigurationDescriptor")); - r = iController->SetConfigurationDescriptor(iClient, *((TDes8*) a1)); - break; - - case RDevUsbcScClient::EControlGetInterfaceDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetInterfaceDescriptor")); - r = iController->GetInterfaceDescriptor(iClient, this, (TInt) a1, *((TDes8*) a2)); - break; - - case RDevUsbcScClient::EControlGetInterfaceDescriptorSize: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetInterfaceDescriptorSize")); - r = iController->GetInterfaceDescriptorSize(iClient, this, (TInt) a1, *(TDes8*) a2); - break; - - case RDevUsbcScClient::EControlSetInterfaceDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetInterfaceDescriptor")); - r = iController->SetInterfaceDescriptor(iClient, this, (TInt) a1, *((TDes8*) a2)); - break; - - case RDevUsbcScClient::EControlGetEndpointDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetEndpointDescriptor")); - r = Kern::ThreadRawRead(iClient, a1, &epInfo, sizeof(epInfo)); - if (r != KErrNone) - PanicClientThread(r); - ep = EpFromAlternateSetting(epInfo.iSetting, epInfo.iEndpoint); - r = (ep<0)?ep:iController->GetEndpointDescriptor(iClient, this, epInfo.iSetting, - ep, *(TDes8*) epInfo.iArg); - break; - - case RDevUsbcScClient::EControlGetEndpointDescriptorSize: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetEndpointDescriptorSize")); - r = Kern::ThreadRawRead(iClient, a1, &epInfo, sizeof(epInfo)); - if (r != KErrNone) - PanicClientThread(r); - ep = EpFromAlternateSetting(epInfo.iSetting, epInfo.iEndpoint); - r = iController->GetEndpointDescriptorSize(iClient, this, epInfo.iSetting, - ep, *(TDes8*) epInfo.iArg); - break; - - case RDevUsbcScClient::EControlSetEndpointDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetEndpointDescriptor")); - r = Kern::ThreadRawRead(iClient, a1, &epInfo, sizeof(epInfo)); - if (r != KErrNone) - PanicClientThread(r); - ep = EpFromAlternateSetting(epInfo.iSetting, epInfo.iEndpoint); - r = iController->SetEndpointDescriptor(iClient, this, epInfo.iSetting, - ep, *(TDes8*)epInfo.iArg); - break; - - case RDevUsbcScClient::EControlGetDeviceQualifierDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetDeviceQualifierDescriptor")); - r = Kern::ThreadDesWrite(iClient, a1, pZeroDesc, 0, 0, iClient); - if (r != KErrNone) - PanicClientThread(r); - r = iController->GetDeviceQualifierDescriptor(iClient, *((TDes8*) a1)); - break; - - case RDevUsbcScClient::EControlSetDeviceQualifierDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetDeviceQualifierDescriptor")); - BREAK_IF_NULL_ARG(a1,r); - r = iController->SetDeviceQualifierDescriptor(iClient, *((TDes8*) a1)); - break; - - case RDevUsbcScClient::EControlGetOtherSpeedConfigurationDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetOtherSpeedConfigurationDescriptor")); - r = Kern::ThreadDesWrite(iClient, a1, pZeroDesc, 0 , 0, iClient); - if (r != KErrNone) - PanicClientThread(r); - r = iController->GetOtherSpeedConfigurationDescriptor(iClient, *((TDes8*) a1)); - break; - - case RDevUsbcScClient::EControlSetOtherSpeedConfigurationDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetOtherSpeedConfigurationDescriptor")); - r = iController->SetOtherSpeedConfigurationDescriptor(iClient, *((TDes8*) a1)); - break; - - - case RDevUsbcScClient::EControlGetCSInterfaceDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetCSInterfaceDescriptor")); - r = iController->GetCSInterfaceDescriptorBlock(iClient, this, (TInt) a1, *((TDes8*) a2)); - break; - - case RDevUsbcScClient::EControlGetCSInterfaceDescriptorSize: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetCSInterfaceDescriptorSize")); - r = iController->GetCSInterfaceDescriptorBlockSize(iClient, this, (TInt) a1, *(TDes8*) a2); - break; - - case RDevUsbcScClient::EControlGetCSEndpointDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetCSEndpointDescriptor")); - r = Kern::ThreadRawRead(iClient, a1, &epInfo, sizeof(epInfo)); - if (r != KErrNone) - PanicClientThread(r); - ep = EpFromAlternateSetting(epInfo.iSetting, epInfo.iEndpoint); - r = iController->GetCSEndpointDescriptorBlock(iClient, this, epInfo.iSetting, - ep, *(TDes8*) epInfo.iArg); - break; - - case RDevUsbcScClient::EControlGetCSEndpointDescriptorSize: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetCSEndpointDescriptorSize")); - r = Kern::ThreadRawRead(iClient, a1, &epInfo, sizeof(epInfo)); - if (r != KErrNone) - PanicClientThread(r); - ep = EpFromAlternateSetting(epInfo.iSetting, epInfo.iEndpoint); - r = iController->GetCSEndpointDescriptorBlockSize(iClient, this, epInfo.iSetting, - ep, *(TDes8*) epInfo.iArg); - break; - - case RDevUsbcScClient::EControlSignalRemoteWakeup: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSignalRemoteWakeup")); - r = iController->SignalRemoteWakeup(); - break; - - case RDevUsbcScClient::EControlDeviceDisconnectFromHost: - __KTRACE_OPT(KUSB, Kern::Printf("EControlDeviceDisconnectFromHost")); - r = iController->UsbDisconnect(); - break; - - case RDevUsbcScClient::EControlDeviceConnectToHost: - __KTRACE_OPT(KUSB, Kern::Printf("EControlDeviceConnectToHost")); - r = iController->UsbConnect(); - break; - - case RDevUsbcScClient::EControlDevicePowerUpUdc: - __KTRACE_OPT(KUSB, Kern::Printf("EControlDevicePowerUpUdc")); - r = iController->PowerUpUdc(); - break; - - case RDevUsbcScClient::EControlSetDeviceControl: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetDeviceControl")); - r = iController->SetDeviceControl(this); - if (r == KErrNone) - { - iOwnsDeviceControl = ETrue; - if (iEp0Endpoint == NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetDeviceControl")); - r = SetupEp0(); - if (r != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: SetupEp0() failed")); - iController->ReleaseDeviceControl(this); - iOwnsDeviceControl=EFalse; - DestroyEp0(); - } - } - } - else - r = KErrInUse; - break; - - case RDevUsbcScClient::EControlCurrentlyUsingHighSpeed: - __KTRACE_OPT(KUSB, Kern::Printf("EControlCurrentlyUsingHighSpeed")); - r = iController->CurrentlyUsingHighSpeed(); - break; - - case RDevUsbcScClient::EControlSetInterface: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetInterface")); - r = Kern::ThreadRawRead(iClient, a2, &ifcInfo, sizeof(ifcInfo)); - if (r != KErrNone) - PanicClientThread(r); - r = SetInterface((TInt) a1, &ifcInfo); - break; - - case RDevUsbcScClient::EControlReleaseInterface: - __KTRACE_OPT(KUSB, Kern::Printf("EControlReleaseInterface")); - if (!iRealizeCalled) - { - r = iController->ReleaseInterface(this, (TInt) a1); - if (r == KErrNone) - { - DestroyInterface((TUint) a1); - } - else - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error in PIL: LDD interface won't be released.")); - } - } - else - r = KErrUsbAlreadyRealized; - break; - - case RDevUsbcScClient::EControlSetCSInterfaceDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetCSInterfaceDescriptor")); - r = Kern::ThreadRawRead(iClient, a1, &desInfo, sizeof(desInfo)); - if (r != KErrNone) - PanicClientThread(r); - r = iController->SetCSInterfaceDescriptorBlock(iClient, this, desInfo.iSetting, - *reinterpret_cast(desInfo.iArg), - desInfo.iSize); - break; - - case RDevUsbcScClient::EControlSetCSEndpointDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetCSEndpointDescriptor")); - r = Kern::ThreadRawRead(iClient, a1, &desInfo, sizeof(desInfo)); - if (r != KErrNone) - PanicClientThread(r); - ep = EpFromAlternateSetting(desInfo.iSetting, desInfo.iEndpoint); - r = iController->SetCSEndpointDescriptorBlock(iClient, this, desInfo.iSetting, ep, - *reinterpret_cast(desInfo.iArg), - desInfo.iSize); - break; - - case RDevUsbcScClient::EControlGetStringDescriptorLangId: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetStringDescriptorLangId")); - r = iController->GetStringDescriptorLangId(iClient, *((TDes8*) a1)); - break; - - case RDevUsbcScClient::EControlSetStringDescriptorLangId: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetStringDescriptorLangId")); - r = iController->SetStringDescriptorLangId(reinterpret_cast(a1)); - break; - - case RDevUsbcScClient::EControlGetManufacturerStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetManufacturerStringDescriptor")); - r = iController->GetManufacturerStringDescriptor(iClient, *((TPtr8*) a1)); - break; - - case RDevUsbcScClient::EControlSetManufacturerStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetManufacturerStringDescriptor")); - r = iController->SetManufacturerStringDescriptor(iClient, *((TPtr8*) a1)); - break; - - case RDevUsbcScClient::EControlRemoveManufacturerStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlRemoveManufacturerStringDescriptor")); - r = iController->RemoveManufacturerStringDescriptor(); - break; - - case RDevUsbcScClient::EControlGetProductStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetProductStringDescriptor")); - r = iController->GetProductStringDescriptor(iClient, *((TPtr8*) a1)); - break; - - case RDevUsbcScClient::EControlSetProductStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetProductStringDescriptor")); - r = iController->SetProductStringDescriptor(iClient, *((TPtr8*) a1)); - break; - - case RDevUsbcScClient::EControlRemoveProductStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlRemoveProductStringDescriptor")); - r = iController->RemoveProductStringDescriptor(); - break; - - case RDevUsbcScClient::EControlGetSerialNumberStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetSerialNumberStringDescriptor")); - r = iController->GetSerialNumberStringDescriptor(iClient, *((TPtr8*) a1)); - break; - - case RDevUsbcScClient::EControlSetSerialNumberStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetSerialNumberStringDescriptor")); - r = iController->SetSerialNumberStringDescriptor(iClient, *((TPtr8*) a1)); - break; - - case RDevUsbcScClient::EControlRemoveSerialNumberStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlRemoveSerialNumberStringDescriptor")); - r = iController->RemoveSerialNumberStringDescriptor(); - break; - - case RDevUsbcScClient::EControlGetConfigurationStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetConfigurationStringDescriptor")); - r = iController->GetConfigurationStringDescriptor(iClient, *((TPtr8*) a1)); - break; - - case RDevUsbcScClient::EControlSetConfigurationStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetConfigurationStringDescriptor")); - r = iController->SetConfigurationStringDescriptor(iClient, *((TPtr8*) a1)); - break; - - case RDevUsbcScClient::EControlRemoveConfigurationStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlRemoveConfigurationStringDescriptor")); - r = iController->RemoveConfigurationStringDescriptor(); - break; - - case RDevUsbcScClient::EControlGetStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetStringDescriptor")); - r = iController->GetStringDescriptor(iClient, (TUint8) (TInt) a1, *((TPtr8*) a2)); - break; - - case RDevUsbcScClient::EControlSetStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetStringDescriptor")); - r = iController->SetStringDescriptor(iClient, (TUint8) (TInt) a1, *((TPtr8*) a2)); - break; - - case RDevUsbcScClient::EControlRemoveStringDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlRemoveStringDescriptor")); - r = iController->RemoveStringDescriptor((TUint8) (TInt) a1); - break; - - case RDevUsbcScClient::EControlQueryEndpointResourceUse: - { - __KTRACE_OPT(KUSB, Kern::Printf("EControlQueryEndpointResourceUse")); - epRes = (TUsbcEndpointResource)((TInt) a2); - TInt realEp=-1; - r = GetRealEpForEpResource((TInt)a1, realEp); - if (r==KErrNone) - r = iController->QueryEndpointResource(this, realEp, epRes); - break; - } - case RDevUsbcScClient::EControlSetOtgDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlSetOtgDescriptor")); - r = iController->SetOtgDescriptor(iClient, *((const TDesC8*)a1)); - break; - - case RDevUsbcScClient::EControlGetOtgDescriptor: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetOtgDescriptor")); - r = iController->GetOtgDescriptor(iClient, *((TDes8*)a1)); - break; - - case RDevUsbcScClient::EControlGetOtgFeatures: - __KTRACE_OPT(KUSB, Kern::Printf("EControlGetOtgFeatures")); - r = iController->GetOtgFeatures(iClient, *((TDes8*)a1)); - break; - - case RDevUsbcScClient::EControlRealizeInterface: - __KTRACE_OPT(KUSB, Kern::Printf("EControlRealizeInterface")); - r = RealizeInterface(); - break; - case RDevUsbcScClient::EControlStartNextInAlternateSetting: - __KTRACE_OPT(KUSB, Kern::Printf("EControlStartNextInAlternateSetting")); - r = StartNextInAlternateSetting(); - break; - - default: - __KTRACE_OPT(KUSB, Kern::Printf("Function code not supported")); - r = KErrNotSupported; - } - - return r; - } -// end DoControl. - - - -// -// Overriding DObject virtual -// -TInt DLddUsbcScChannel::RequestUserHandle(DThread* aThread, TOwnerType /*aType*/) - { - __KTRACE_OPT(KUSB, Kern::Printf("DLddUsbcScChannel::RequestUserHandle")); - // The USB client LDD is not designed for a channel to be shared between - // threads. It saves a pointer to the current thread when it is opened, and - // uses this to complete any asynchronous requests. - // It is therefore not acceptable for the handle to be duplicated and used - // by another thread: - if (aThread == iClient) - { - return KErrNone; - } - else - { - return KErrAccessDenied; - } - } - -inline TInt DLddUsbcScChannel::GetRealEpForEpResource(TInt aEndpoint, TInt& aRealEp) - { - if (iEndpoint) // if we've enumerated at least once, proceed as normal. - { - if (aEndpoint <= iNumberOfEndpoints && aEndpoint >= 0) - { - aRealEp=iEndpoint[aEndpoint]->RealEpNumber(); - return KErrNone; - } - } - else // Assume alternate setting 0. - { - if (iAlternateSettingList) // Check it has been set up. - { - TUsbcScAlternateSetting* alt = iAlternateSettingList->iHead; - if (alt && (aEndpoint <= alt->iNumberOfEndpoints && aEndpoint >= 0)) - { - aRealEp= alt->iEndpoint[aEndpoint]->RealEpNumber(); - return KErrNone; - } - } - } - return KErrUsbDeviceNotConfigured; - } - - -TUsbcEndpointInfoArray::TUsbcEndpointInfoArray(const TUsbcScEndpointInfo* aData, TInt aDataSize) - { - iType = EUsbcScEndpointInfo; - iData = (TUint8*) aData; - if (aDataSize>0) - iDataSize = aDataSize; - else - iDataSize = sizeof(TUsbcScEndpointInfo); - } - - -// -// SetInterface -// -// Called from DoControl. Sets the configuration of a given Interface. // Needs changing -// All interfaces must be configured before one can be used. -// - -TInt DLddUsbcScChannel::SetInterface(TInt aInterfaceNumber, TUsbcScIfcInfo* aInfoBuf) - { - // Copy interface description. - - if (iRealizeCalled) - return KErrUsbAlreadyRealized; - - if (!iAlternateSettingList) - { - iAlternateSettingList = new TUsbcScAlternateSettingList; - if (iAlternateSettingList==NULL) - { - return KErrNoMemory; - } - } - - // Read descriptor in - TUsbcScInterfaceInfoBuf ifc_info_buf; - TUsbcScInterfaceInfoBuf* const ifc_info_buf_ptr = aInfoBuf->iInterfaceData; - const TInt srcLen = Kern::ThreadGetDesLength(iClient, ifc_info_buf_ptr); - - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface srcLen = %d len = %d", srcLen, ifc_info_buf.Length() )); - - if (srcLen < ifc_info_buf.Length()) - { - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface can't copy")); - PanicClientThread(EDesOverflow); - } - - TInt r = Kern::ThreadDesRead(iClient, ifc_info_buf_ptr, ifc_info_buf, 0, KChunkShiftBy0); - if (r != KErrNone) - { - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface Copy failed reason=%d", r)); - PanicClientThread(r); - } - - // The list of endpoints is within the interface info. - TUsbcScEndpointInfo* pEndpointData = ifc_info_buf().iEndpointData; - - const TInt num_endpoints = ifc_info_buf().iTotalEndpointsUsed; - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface num_endpoints=%d", num_endpoints)); - if (num_endpoints>KMaxEndpointsPerClient) - return KErrOverflow; - - - // Initialize real ep numbers list. - TInt i; - TInt real_ep_numbers[KMaxEndpointsPerClient+1]; // range 1->KMaxEndpointsPerClient (0 not used) - for (i=0; i<=KMaxEndpointsPerClient; i++) - real_ep_numbers[i] = -1; - - - // See if PIL will accept this interface - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface Calling controller")); - TUsbcEndpointInfoArray endpointData = TUsbcEndpointInfoArray(ifc_info_buf().iEndpointData); - - r = iController->SetInterface(this, - iClient, - aInterfaceNumber, - ifc_info_buf().iClass, - aInfoBuf->iString, - (TInt) ifc_info_buf().iTotalEndpointsUsed, - endpointData, - &real_ep_numbers[0], - ifc_info_buf().iFeatureWord); - - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface controller returned %d", r)); - if (r != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf("SetInterface failed reason=%d", r)); - return r; - } - - // create alternate setting record - TUsbcScAlternateSetting* alternateSettingListRec = new TUsbcScAlternateSetting; - if (!alternateSettingListRec) - { - r = KErrNoMemory; - goto ReleaseInterface; - } - - // other endpoints - for (TInt i = 1; i <= num_endpoints; i++, pEndpointData++) - { - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface for ep=%d", i)); - - if ((pEndpointData->iType==UsbShai::KUsbEpTypeControl) - || (pEndpointData->iDir != UsbShai::KUsbEpDirIn && pEndpointData->iDir != UsbShai::KUsbEpDirOut) - || (pEndpointData->iSize > 1024) || (pEndpointData->iSize<=0)) - { - r = KErrUsbBadEndpoint; - goto CleanUp; - } - // Check data - - TUint* bufferSize = &(pEndpointData->iBufferSize); - if (*bufferSize==0) - *bufferSize= KUsbcScDefaultBufferSize; - - TInt pageSize = Kern::RoundToPageSize(1); - // Round buffersize up to nearest pagesize. - *bufferSize = (*bufferSize+pageSize-1) & ~(pageSize-1); - - TUsbcScEndpoint* ep = new TUsbcScEndpoint(this, iController, pEndpointData, i); - alternateSettingListRec->iEndpoint[i] = ep; - if (!ep) - { - r = KErrNoMemory; - goto CleanUp; - } - if (ep->Construct() != KErrNone) - { - r = KErrNoMemory; - goto CleanUp; - } - - - __KTRACE_OPT(KUSB, Kern::Printf("SetInterface for ep=%d rec=0x%08x ep==0x%08x", - i, alternateSettingListRec, ep)); - } - - if (iAlternateSettingList->iHead) - { - iAlternateSettingList->iTail->iNext = alternateSettingListRec; - alternateSettingListRec->iPrevious = iAlternateSettingList->iTail; - iAlternateSettingList->iTail = alternateSettingListRec; - } - else - { - iAlternateSettingList->iHead = alternateSettingListRec; - iAlternateSettingList->iTail = alternateSettingListRec; - } - - alternateSettingListRec->iNext = NULL; - alternateSettingListRec->iSetting = aInterfaceNumber; - alternateSettingListRec->iNumberOfEndpoints = num_endpoints; - - // Record the 'real' endpoint number used by the PDD in both the Ep and - // the Req callback: - for (TInt i = 1; i <= num_endpoints; i++) - { - alternateSettingListRec->iEndpoint[i]->SetRealEpNumber(real_ep_numbers[i]); - } - - return KErrNone; - - CleanUp: - delete alternateSettingListRec; - //Fall Through - - ReleaseInterface: -#if _DEBUG - TInt r1 = iController->ReleaseInterface(this, aInterfaceNumber); - __KTRACE_OPT(KUSB, Kern::Printf("Release Interface controller returned %d", r1)); -#else - (void) iController->ReleaseInterface(this, aInterfaceNumber); -#endif - return r; - } -// end SetInterface - - - -#ifdef _DEBUG -void RealizeInterface_Dump(TUint* aMem) - { - TUint *mem= NULL; - __KTRACE_OPT(KUSB, mem = aMem); - if (mem!=NULL) - { - TInt j; - Kern::Printf("Final chunk header State:"); - for (j=0; j<30; j+=8) - Kern::Printf("%2x: %8x %8x %8x %8x %8x %8x %8x %8x", j, mem[j], mem[j+1], mem[j+2], mem[j+3], mem[j+4], mem[j+5], mem[j+6], mem[j+7] ); - }; - }; -#endif - - -/* -Chunk Created, filled with structure, and passed back to userside. -*/ -TInt DLddUsbcScChannel::RealizeInterface(void) -{ - if (iRealizeCalled) - return KErrUsbAlreadyRealized; - - TRealizeInfo bufInfo; - - TInt errorOrChunk = KErrNone; - TBool openedCS = EFalse; - TInt offset =0; - - // Start by creating a temporary scratchpad for endpoint calculations. - bufInfo.Init(iAlternateSettingList); - - // Fill in our scratchpad with all the required endpoints, sorting them - // in order of size required. - errorOrChunk = bufInfo.CopyAndSortEndpoints(); - if (errorOrChunk!=KErrNone) - { - goto realize_end; - } - - // We now have endpoints sorted in order of size for each altsetting. - // The very largest for each endpoint will share the first buffer, and all of - // the second largest ends points will share the second buffer, and so on. - // Find the highest buffer size for each row, to determine the buffer size, - // and keep a total of total space needed. - bufInfo.CalcBuffSizes(); - - // We now have the max sizes wanted for each endpoint buffer. - // we also have to total size for all endpoints. - // and finally we have the total number of buffers. - - // Add on size for header, then add on size for guard pages. - bufInfo.iTotalSize+= KHeaderSize + bufInfo.iTotalBuffers * KGuardSize; - - // Create shared Chunk . . . . . . . . . . - if (iChunkInfo==NULL) - { - NKern::ThreadEnterCS(); - openedCS = ETrue; - errorOrChunk = TUsbcScChunkInfo::New(iChunkInfo, bufInfo.iTotalSize, (DLogicalDevice*) iDevice); - if (errorOrChunk!=KErrNone) - { - goto realize_end; - } - } - else - { - // As of writing, the was no way for iChunk to be anything other then NULL. - // You cannot 'unrealise' and iChunk cannot be set any other way. - Kern::Fault("DLddUsbcScChannel::RealizeInterface", __LINE__); - } - - // Populate the shared chunk . . . . . . . - - - // First create chunk header. - errorOrChunk = iChunkInfo->ChunkAlloc(offset, KHeaderSize); - if (errorOrChunk!=KErrNone) - { - if (errorOrChunk==-KErrNoMemory) - errorOrChunk=KErrNoMemory; - goto realize_end; - } - - - offset+=KHeaderSize + KGuardSize; // Also any more for EP0? - - // Next, lay out the geometry of the chunk header. - - bufInfo.LayoutChunkHeader(iChunkInfo); - - - { // Scope ep0Size - TInt ep0Size=0; - - // Create K-side buffer table - if (!iBuffers) - iBuffers = (TUsbcScBuffer *) Kern::AllocZ(sizeof(TUsbcScBuffer) * (bufInfo.iTotalBuffers+2)); // +2 is for ep0. - if (!iBuffers) - { - __KTRACE_OPT(KUSB, Kern::Printf("Realize: Error: Alloc iBufers failed!")); - errorOrChunk = KErrNoMemory; - goto realize_end; - } - - - errorOrChunk = SetupEp0(); - if (errorOrChunk) - { - __KTRACE_OPT(KUSB, Kern::Printf("Realize: SetupEp0 . ERROR %d",errorOrChunk)); - goto realize_end; - } - - ep0Size = iEp0Endpoint->EndpointInfo()->iSize; - __KTRACE_OPT(KUSB, Kern::Printf("Realize: Setup EP0. max packet size %d", ep0Size)); - - // Create EP0 buffers - iEP0OutBuff=bufInfo.iTotalBuffers; - errorOrChunk = iBuffers[iEP0OutBuff].Construct(KUsbcScBiOut, this, KUsbScEP0OutBufPos, KUsbScEP0OutBufEnd, ep0Size, ep0Size, ep0Size); - if (errorOrChunk) - { - __KTRACE_OPT(KUSB, Kern::Printf("Realize: Setup EP0 Out. ERROR %d",errorOrChunk)); - goto realize_end; - } - - iBuffers[iEP0OutBuff].CreateChunkBufferHeader(); - iBuffers[iEP0OutBuff].iCallback = iEp0Endpoint->iRequestCallbackInfo; - ((TUsbcScBufferRecord*) &( - bufInfo.iChunkStuct->iBufferOffset[KUsbcScEp0OutBuff*sizeof(TUsbcScBufferRecord)] - )) ->Set(KUsbScEP0OutBufPos, KUsbScEP0OutBufEnd); - - - iEP0InBuff=bufInfo.iTotalBuffers+1; - errorOrChunk = iBuffers[iEP0InBuff].Construct( KUsbcScBiIn , this, KUsbScEP0InBufPos , KUsbScEP0InBufEnd , ep0Size, ep0Size, ep0Size); - if (errorOrChunk) - { - __KTRACE_OPT(KUSB, Kern::Printf("Realize: Setup EP0 In. ERROR %d",errorOrChunk)); - goto realize_end; - } - - iBuffers[iEP0InBuff].iCallback = iEp0Endpoint->iRequestCallbackInfo; - - ((TUsbcScBufferRecord*) &( - bufInfo.iChunkStuct->iBufferOffset[KUsbcScEp0InBuff*sizeof(TUsbcScBufferRecord)] - ))->Set(KUsbScEP0InBufPos, KUsbScEP0InBufEnd); - - - } // end ep0Size scope - - // Create resources and tables. . . . . . - __KTRACE_OPT(KUSB, Kern::Printf("Realize: Create resources tables")); - - { // scope of bufNum - // For each EP buffer - TInt buffNum=0; - TInt buffMinSize; - TInt endpointNumber; - TUsbcScEndpoint* endpointRecord; - TInt endpoint; - TInt inout; - TEndpointSortBufs* bufsd; - TUsbcScHdrEndpointRecord* epRecord; - for (endpoint=0; endpointiEp[altSetting*bufInfo.iMaxEndpoints + endpoint]; - if (endpointRecord) - { - endpointNumber = endpointRecord->EpNumber(); - endpointRecord->SetBuffer(&iBuffers[buffNum]); - - epRecord = (TUsbcScHdrEndpointRecord*) &iChunkInfo->iChunkMem[ - (bufInfo.iAltSettingsTbl->iAltTableOffset[altSetting]) // i.e. Just after altSettingsTbl - +sizeof(TInt) // after number of endpoints field - +(endpointNumber-1)*sizeof(TUsbcScHdrEndpointRecord) - ]; - epRecord->iBufferNo = (TUint8) buffNum; - - TInt epType=(endpointRecord->EndpointInfo()->iType); - epType= (epType& UsbShai::KUsbEpTypeControl)?KUsbScHdrEpTypeControl: - (epType& UsbShai::KUsbEpTypeIsochronous)?KUsbScHdrEpTypeIsochronous: - (epType& UsbShai::KUsbEpTypeBulk)?KUsbScHdrEpTypeBulk: - (epType& UsbShai::KUsbEpTypeInterrupt)?KUsbScHdrEpTypeInterrupt:KUsbScHdrEpTypeUnknown; - - epRecord->iType = (inout+1) | (epType<<2); - - if (endpointRecord->EndpointInfo()->iReadSize) - maxReadSize = (maxReadSize <= endpointRecord->EndpointInfo()->iReadSize) ? maxReadSize : endpointRecord->EndpointInfo()->iReadSize; - - __KTRACE_OPT(KUSB, Kern::Printf("Realize: endpointNum %d in altSetting %d, alt table @ %d", - endpointNumber, altSetting,bufInfo.iAltSettingsTbl->iAltTableOffset[altSetting])); - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf("Realize: endpointNum NA in altSetting %d", altSetting)); - } - - } // end for - - - // Alloc memory for buffer. - TInt grabSize = needed; - // Generally, a buffer fragmented into smaller memory regions will reduce the efficiency - // of reading or writing data, and so avoiding the allocation of very small sections - // is advantageous. - // However, if only a small amount is being allocated to start with, it is likely - // smaller amounts of data are to be sent (reducing this advantage), and 1 memory page - // is a much bigger proportion of the buffer, and so more worth allocating individually. - - TInt minimumGrab; - if (needed= minimumGrab) - { - TInt r; - r = iChunkInfo->ChunkAlloc(offset, grabSize); - if (r==KErrNone) - { - offset+=grabSize; - needed-=grabSize; - } - else - { - if (r==-KErrNoMemory) - { - grabSize>>=1; - } - if ((grabSizeiBufferOffset[(buffNum+2)*sizeof(TUsbcScBufferRecord)] - ))->Set(bufStart, offset); - - - // inc pointers for next buffer - buffNum++; - offset+=KGuardSize; - } // end if needed - - } // end for inout - } // end for each buffer - } // scope of bufNum - -#ifdef _DEBUG - RealizeInterface_Dump((TUint*) iChunkInfo->iChunkMem); // Debug only tracing -#endif - -realize_end: - __KTRACE_OPT(KUSB, Kern::Printf("Realize: cleanup. Err=%d", errorOrChunk)); - // Here we clean up after either success, or after bailing out early. - - bufInfo.Free(); - - if (iChunkInfo) - { - if (errorOrChunk==KErrNone) - { - // Everything is looking good - create RChunk for Userside. - errorOrChunk = Kern::MakeHandleAndOpen(iClient, iChunkInfo->iChunk); - iRealizeCalled = (errorOrChunk>=0); - } // endif errorOrChunk - - if (errorOrChunk<0) // If error, destroy the chunk. - { - iChunkInfo->Close(); - // ChunkInfo will delete itself with DFC, but the pointer here is no longer needed. - iChunkInfo=NULL; - - // Destroy iBuffers - if (iBuffers) - { - TInt i; - for (i=0; i<(iNumBuffers+2); i++) - { - iBuffers[i].iStatusList.Destroy(); - } - Kern::Free(iBuffers); - iBuffers=NULL; - } - - } - else - { - iNumBuffers = bufInfo.iTotalBuffers; - iValidInterface = ETrue; // Let the games commence! - } - - } // endif iChunkInfo - if (openedCS) - NKern::ThreadLeaveCS(); - - __KTRACE_OPT(KUSB, Kern::Printf("Realize: returning %x (%d)", errorOrChunk, errorOrChunk)); - return errorOrChunk; -} // End RealizeInterface - - -// -// DestroyAllInterfaces -// - -void DLddUsbcScChannel::DestroyAllInterfaces() - { - __KTRACE_OPT(KUSB, Kern::Printf("DLddUsbcScChannel::DestroyAllInterfaces")); - // Removes all interfaces - if (iAlternateSettingList) - { - if (iAlternateSettingList->iHead != NULL) - { - TUsbcScAlternateSetting* alternateSettingListRec = iAlternateSettingList->iTail; - while (alternateSettingListRec) - { - iAlternateSettingList->iTail = alternateSettingListRec->iPrevious; - // If this contains NULL now that is only possible if the record to be deleted was at the head - __KTRACE_OPT(KUSB, Kern::Printf("Release interface %d \n", alternateSettingListRec->iSetting)); - iController->ReleaseInterface(this, alternateSettingListRec->iSetting); - delete alternateSettingListRec; - if (iAlternateSettingList->iTail == NULL) //No more interfaces left - break; - else - { - iAlternateSettingList->iTail->iNext = NULL; - alternateSettingListRec = iAlternateSettingList->iTail; - } - } - } - delete iAlternateSettingList; - } - - iNumberOfEndpoints = 0; - iAlternateSettingList = NULL; - iValidInterface = EFalse; - - __KTRACE_OPT(KUSB, Kern::Printf("DLddUsbcScChannel::DestroyAllInterfaces done")); - } - - - - - -// -// DestroyInterface -// - -void DLddUsbcScChannel::DestroyInterface(TUint aInterfaceNumber) - { - __KTRACE_OPT(KUSB, Kern::Printf("DLddUsbcScChannel::DestroyInterface \n")); - - if (iAlternateSetting == aInterfaceNumber) - { - ResetInterface(KErrUsbInterfaceNotReady); - iValidInterface = EFalse; - iNumberOfEndpoints = 0; - } - if (iAlternateSettingList) - { - TUsbcScAlternateSetting* alternateSettingListRec = iAlternateSettingList->iTail; - TUsbcScAlternateSetting* alternateSettingListRecFound = NULL; - while (alternateSettingListRec) - { - if (alternateSettingListRec->iSetting == aInterfaceNumber) - { - alternateSettingListRecFound = alternateSettingListRec; - if (alternateSettingListRec->iPrevious == NULL) //Interface is at HEAD OF List, Should only be if Interface is also at Tail of list - { - iAlternateSettingList->iHead = alternateSettingListRec->iNext; // Should be NULL - if (alternateSettingListRec->iNext) - iAlternateSettingList->iHead->iPrevious = NULL; - } - else if (alternateSettingListRec->iNext == NULL) //Interface is at TAIL OF List - { - iAlternateSettingList->iTail = alternateSettingListRecFound->iPrevious; - iAlternateSettingList->iTail->iNext = NULL; - } - else //Somewhere in the middle (would not expect this in normal operation, but here for completeness) - { - __KTRACE_OPT(KUSB, Kern::Printf("DLddUsbcScChannel::DestroyInterface Middle interface!\n")); - alternateSettingListRec->iPrevious->iNext = alternateSettingListRec->iNext; - alternateSettingListRec->iNext->iPrevious = alternateSettingListRec->iPrevious; - } - - delete alternateSettingListRecFound; - break; - } - alternateSettingListRec = alternateSettingListRec->iPrevious; - } - } - } - -// -// SetupEp0 -// - -TInt DLddUsbcScChannel::SetupEp0() - { - __ASSERT_ALWAYS(iEp0Endpoint==NULL, Kern::Fault("DLddUsbcScChannel::SetupEp0", __LINE__)); - - TUsbcScEndpointInfo ep0Info = TUsbcScEndpointInfo(UsbShai::KUsbEpTypeControl, UsbShai::KUsbEpDirBidirect); - ep0Info.iSize = iController->Ep0PacketSize(); - - TUsbcScEndpoint* ep0 = new TUsbcScEndpoint(this, iController, &ep0Info, 0); - if (ep0 == NULL) - { - return KErrNoMemory; - } - - TInt r = ep0->Construct(); - if (r != KErrNone) - { - delete ep0; - return KErrNoMemory; - } - - ep0->SetRealEpNumber(0); - ep0->SetBuffer(NULL); // Cannot find it this way. - - iEp0Endpoint = ep0; - return KErrNone; - } - -// -// DestroyEp0 -// - -void DLddUsbcScChannel::DestroyEp0() - { - __KTRACE_OPT(KUSB, Kern::Printf(" DLddUsbcScChannel::DestroyEp0")); - delete iEp0Endpoint; - iEp0Endpoint = NULL; - } - - -void DLddUsbcScChannel::RequestCallbackEp0(TAny* aDLddUsbcScChannel) - { - DLddUsbcScChannel* channel = (DLddUsbcScChannel*) aDLddUsbcScChannel; - - __KTRACE_OPT(KUSB, Kern::Printf("DLddUsbcScChannel::RequestCallbackEp0")); - - if (channel->ChannelClosing()) - { - __KTRACE_OPT(KUSB, Kern::Printf("Channel Closing: Completion not accepted!")); - return; - } - - switch (channel->iEp0Endpoint->iRequestCallbackInfo->iTransferDir) - { - case UsbShai::EControllerWrite: - channel->iBuffers[channel->iEP0InBuff].CompleteWrite(); - return; - case UsbShai::EControllerRead: - channel->iBuffers[channel->iEP0OutBuff].CompleteRead(); - return; - default: - Kern::Printf("DLddUsbcScChannel::RequestCallbackEp0 - Unexpected completion direction %d",channel->iEp0Endpoint->iRequestCallbackInfo->iTransferDir); - Kern::Fault("DLddUsbcScChannel::RequestCallbackEp0", __LINE__); - } - } - - - - - - -// -// EndpointStatusChangeCallback -// - -void DLddUsbcScChannel::EndpointStatusChangeCallback(TAny* aDLddUsbcScChannel) - { - __KTRACE_OPT(KUSB, Kern::Printf("EndpointStatusChangeCallback")); - DLddUsbcScChannel* dUsbc = (DLddUsbcScChannel*) aDLddUsbcScChannel; - if (dUsbc->iChannelClosing) - return; - TUint endpointState = dUsbc->iEndpointStatusCallbackInfo.State(); - const TInt reqNo = (TInt) RDevUsbcScClient::ERequestEndpointStatusNotify; - if (dUsbc->iRequestStatus[reqNo]) - { - __KTRACE_OPT(KUSB, Kern::Printf("EndpointStatusChangeCallback Notify status")); - DThread* client = dUsbc->iClient; - // set client descriptor length to zero - TInt r = Kern::ThreadRawWrite(client, dUsbc->iEndpointStatusChangePtr, &endpointState, - sizeof(TUint), client); - if (r != KErrNone) - dUsbc->PanicClientThread(r); - Kern::RequestComplete(dUsbc->iClient, dUsbc->iRequestStatus[reqNo], r); - dUsbc->iEndpointStatusChangePtr = NULL; - } - } - - -// -// StatusChangeCallback -// - -void DLddUsbcScChannel::StatusChangeCallback(TAny* aDLddUsbcScChannel) - { - DLddUsbcScChannel* dUsbc = (DLddUsbcScChannel*) aDLddUsbcScChannel; - if (dUsbc->iChannelClosing) - return; - - TUsbcDeviceState deviceState; - TInt i; - for (i = 0; - (i < KUsbcDeviceStateRequests) && ((deviceState = dUsbc->iStatusCallbackInfo.State(i)) != UsbShai::EUsbPeripheralNoState); - ++i) - { - __KTRACE_OPT(KUSB, Kern::Printf("StatusChangeCallBack status=%d", deviceState)); - if (deviceState & KUsbAlternateSetting) - { - dUsbc->ProcessAlternateSetting(deviceState); - } - else - { - dUsbc->ProcessDeviceState(deviceState); - // Send Status to EP0 buffer. - // Before the client calls RDevUsbcScClient::FinalizeInterface(), - // this function might be called. - // So we add a guard for dUsbc->iBuffers - if( dUsbc->iBuffers ) - { - dUsbc->iBuffers[dUsbc->iEP0OutBuff].SendEp0StatusPacket(deviceState); - } - } - - // Only queue if userside is interested - if (dUsbc->iDeviceStatusNeeded) - { - dUsbc->iStatusFifo->AddStatusToQueue(deviceState); - const TInt reqNo = (TInt) RDevUsbcScClient::ERequestAlternateDeviceStatusNotify; - if (dUsbc->AlternateDeviceStateTestComplete()) - Kern::RequestComplete(dUsbc->iClient, dUsbc->iRequestStatus[reqNo], KErrNone); - } - } - // We don't want to be interrupted in the middle of this: - const TInt irqs = NKern::DisableInterrupts(2); - dUsbc->iStatusCallbackInfo.ResetState(); - NKern::RestoreInterrupts(irqs); - } - - -void DLddUsbcScChannel::OtgFeatureChangeCallback(TAny* aDLddUsbcScChannel) - { - __KTRACE_OPT(KUSB, Kern::Printf("OtgFeatureChangeCallback")); - DLddUsbcScChannel* dUsbc = (DLddUsbcScChannel*) aDLddUsbcScChannel; - if (dUsbc->iChannelClosing) - return; - - TUint8 features; - // No return value check. Assume OTG always supported here - dUsbc->iController->GetCurrentOtgFeatures(features); - - const TInt reqNo = (TInt) RDevUsbcScClient::ERequestOtgFeaturesNotify; - if (dUsbc->iRequestStatus[reqNo]) - { - __KTRACE_OPT(KUSB, Kern::Printf("OtgFeatureChangeCallback Notify status")); - TInt r = Kern::ThreadRawWrite(dUsbc->iClient, dUsbc->iOtgFeatureChangePtr, - &features, sizeof(TUint8), dUsbc->iClient); - if (r != KErrNone) - dUsbc->PanicClientThread(r); - Kern::RequestComplete(dUsbc->iClient, dUsbc->iRequestStatus[reqNo], r); - dUsbc->iOtgFeatureChangePtr = NULL; - } - } - - -// -// SelectAlternateSetting -// - -TInt DLddUsbcScChannel::SelectAlternateSetting(TUint aAlternateSetting) - { - TUsbcScEndpoint* ep; - - // First, find the alt setting record, which corresponds to the alt setting number. - TUsbcScAlternateSetting* alternateSettingListRec; - if(iAlternateSettingList) - { - for (alternateSettingListRec = iAlternateSettingList->iHead; alternateSettingListRec; alternateSettingListRec = alternateSettingListRec->iNext) - if (alternateSettingListRec->iSetting == aAlternateSetting) - { - // Record has been located. - - // Update current ep setting vars - iEndpoint = alternateSettingListRec->iEndpoint; - iNumberOfEndpoints = alternateSettingListRec->iNumberOfEndpoints; - - - - // Reset buffers for new ep set - for (TInt i = 1; i <= KMaxEndpointsPerClient; i++) - { - ep = alternateSettingListRec->iEndpoint[i]; - if (ep!=NULL) - ep->StartBuffer(); // Buffer::StartEndpoint(...) sets the necessary parameters to the buffer, for use for a perticular endpoint. - } - - return KErrNone; - } - } - return KErrGeneral; - } - -/* The user calls this to move into the next alternate setting. After this call, it is assumed the user wants to -Transmit using endpoints belonging to this alternate Setting. Writes to the IN endpoints will be allowed until -the host changed the alternate setting again -Returns a 32 int with the top 16 bits represents the sequance, and the botten, the alternatre setting no. -*/ -TInt32 DLddUsbcScChannel::StartNextInAlternateSetting() - { - iUserKnowsAltSetting = ETrue; - return iAsSeq<<16 | iAlternateSetting; - } - - -// -// EpFromAlternateSetting -// - -TInt DLddUsbcScChannel::EpFromAlternateSetting(TUint aAlternateSetting, TInt aEndpoint) - { - TUsbcScAlternateSetting* alternateSettingListRec = iAlternateSettingList->iHead; - while (alternateSettingListRec) - { - if (alternateSettingListRec->iSetting == aAlternateSetting) - { - if ((aEndpoint <= alternateSettingListRec->iNumberOfEndpoints) && - (aEndpoint > 0)) - { - return alternateSettingListRec->iEndpoint[aEndpoint]->RealEpNumber(); - } - else - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: aEndpoint %d wrong for aAlternateSetting %d", - aEndpoint, aAlternateSetting)); - return KErrNotFound; - } - } - alternateSettingListRec = alternateSettingListRec->iNext; - } - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no aAlternateSetting %d found", aAlternateSetting)); - return KErrNotFound; - } - -// -// ProcessAlternateSetting -// - -TInt DLddUsbcScChannel::ProcessAlternateSetting(TUint aAlternateSetting) - { - - TUint newSetting = aAlternateSetting&(~KUsbAlternateSetting); - __KTRACE_OPT(KUSB, Kern::Printf("ProcessAlternateSetting 0x%08x selecting alternate setting 0x%08x", aAlternateSetting, newSetting)); - iUserKnowsAltSetting=EFalse; - iAlternateSetting = newSetting; - iAsSeq++; - - ResetInterface(KErrUsbInterfaceChange); // kill any outstanding IN transfers - - TInt r = SelectAlternateSetting(newSetting); - if (r != KErrNone) - return r; - - - StartEpReads(); - return KErrNone; - } - - -// -// ProcessDeviceState -// -// Called from StatusChangeCallback. - -TInt DLddUsbcScChannel::ProcessDeviceState(TUsbcDeviceState aDeviceState) - { - __KTRACE_OPT(KUSB, Kern::Printf("DLddUsbcScChannel::ProcessDeviceState(%d -> %d)", iDeviceState, aDeviceState)); - if (iDeviceState == aDeviceState) - { - __KTRACE_OPT(KUSB, Kern::Printf(" No state change => nothing to be done.")); - return KErrNone; - } - if (iDeviceState == UsbShai::EUsbPeripheralStateSuspended) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Coming out of Suspend: old state = %d", iOldDeviceState)); - iDeviceState = iOldDeviceState; - if (iDeviceState == aDeviceState) - { - __KTRACE_OPT(KUSB, Kern::Printf(" New state same as before Suspend => nothing to be done.")); - return KErrNone; - } - } - TBool renumerateState = (aDeviceState == UsbShai::EUsbPeripheralStateConfigured); - TBool deconfigured = EFalse; - TInt cancellationCode = KErrNone; - if (aDeviceState == UsbShai::EUsbPeripheralStateSuspended) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Suspending...")); - iOldDeviceState = iDeviceState; - // Put PSL into low power mode here - } - else - { - deconfigured = (iDeviceState == UsbShai::EUsbPeripheralStateConfigured && - aDeviceState != UsbShai::EUsbPeripheralStateConfigured); - if (iDeviceState == UsbShai::EUsbPeripheralStateConfigured) - { - if (aDeviceState == UsbShai::EUsbPeripheralStateUndefined) - cancellationCode = KErrUsbCableDetached; - else if (aDeviceState == UsbShai::EUsbPeripheralStateAddress) - cancellationCode = KErrUsbDeviceNotConfigured; - else if (aDeviceState == UsbShai::EUsbPeripheralStateDefault) - cancellationCode = KErrUsbDeviceBusReset; - else - cancellationCode = KErrUsbDeviceNotConfigured; - } - } - iDeviceState = aDeviceState; - if (iValidInterface || iOwnsDeviceControl) - { - - // This LDD may not own an interface. It could be some manager reenumerating - // after its subordinate LDDs have setup their interfaces. - if (deconfigured) - { - DeConfigure(cancellationCode); - } - else if (renumerateState) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScChannel:: Reumerated!")); - // Select main interface & latch in new endpoint set - SelectAlternateSetting(0); - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScChannel:: StartReads!")); - StartEpReads(); - } - } - - const TInt reqNo = (TInt) RDevUsbcScClient::ERequestReEnumerate; - if (renumerateState && iRequestStatus[reqNo]) - { - // This lot must be done if we are reenumerated - Kern::RequestComplete(iClient, iRequestStatus[reqNo], KErrNone); - } - - return KErrNone; - } - - -TBool DLddUsbcScChannel::AlternateDeviceStateTestComplete() - { - TBool completeNow = EFalse; - const TInt reqNo = (TInt) RDevUsbcScClient::ERequestAlternateDeviceStatusNotify; - if (iRequestStatus[reqNo]) - { - // User req is outstanding - TUint32 deviceState; - if (iStatusFifo->GetDeviceQueuedStatus(deviceState) == KErrNone) - { - // Device state waiting to be sent userside - completeNow = ETrue; - __KTRACE_OPT(KUSB, Kern::Printf("StatusChangeCallback Notify status")); - // set client descriptor length to zero - TInt r = Kern::ThreadRawWrite(iClient, iStatusChangePtr, &deviceState, - sizeof(TUint32), iClient); - if (r != KErrNone) - PanicClientThread(r); - iStatusChangePtr = NULL; - } - } - return completeNow; - } - - -void DLddUsbcScChannel::DeConfigure(TInt aErrorCode) - { - __KTRACE_OPT(KUSB, Kern::Printf("DLddUsbcScChannel::DeConfigure()")); - // Called after deconfiguration. Cancels transfers on all endpoints. - ResetInterface(aErrorCode); - // Cancel the endpoint status notify request if it is outstanding. - const TInt KEpNotReq = RDevUsbcScClient::ERequestEndpointStatusNotify; - if (iRequestStatus[KEpNotReq]) - { - CancelNotifyEndpointStatus(); - Kern::RequestComplete(iClient, iRequestStatus[KEpNotReq], aErrorCode); - } - // We have to reset the alternate setting number when the config goes away. - SelectAlternateSetting(0); - iAlternateSetting = 0; - } - - -void DLddUsbcScChannel::StartEpReads() - { - // Queued after enumeration. Starts reads on all endpoints. - // The endpoint itself decides if it can do a read - __KTRACE_OPT(KUSB, Kern::Printf("DLddUsbcScChannel::StartEpReads - 1")); - - TInt i; - TInt8 needsPacket; - - for (i=0; iAbortTransfer(); - - // All OUT endpoints need a packet sent, to indicate the termination of the current ep 'pipe'. - // This will complete any current read, or will be read later. - // All IN endpoints must be simply cancelled, including anything queued. - // Ep0 operates outside alt settings, and so we don't cancel anything. - - buffer=iEndpoint[i]->GetBuffer(); - if (buffer->iDirection==KUsbcScIn) - { - buffer->iStatusList.Complete(KErrCancel); //aErrorCode - buffer->iStatusList.CancelQueued(); //aErrorCode - } - else - buffer->iNeedsPacket=TUsbcScBuffer::KEpIsEnding; // We will send a packet on re-start, which doubles as a 'cancel' - // for the old alt setting. - } - } - - - -void DLddUsbcScChannel::EmergencyCompleteDfc(TAny* aDLddUsbcScChannel) - { - ((DLddUsbcScChannel*) aDLddUsbcScChannel)->DoEmergencyComplete(); - } - -TInt DLddUsbcScChannel::DoEmergencyComplete() - { - __KTRACE_OPT(KUSB, Kern::Printf("DLddUsbcScChannel::DoEmergencyComplete")); - // cancel any pending DFCs - // complete all client requests - - TUsbcScBuffer* buffer; - TInt i; - // Complete EP0 request - - TInt direction=iEp0Endpoint->iRequestCallbackInfo->iTransferDir; - if (direction==UsbShai::EControllerWrite) - { - iBuffers[iEP0InBuff].iStatusList.CancelQueued(); - iBuffers[iEP0InBuff].iStatusList.Complete(KErrDisconnected); - } - else if (direction==UsbShai::EControllerRead) - { - iBuffers[iEP0OutBuff].iStatusList.CancelQueued(); - iBuffers[iEP0OutBuff].iStatusList.Complete(KErrDisconnected); - } - - // Complete other Eps request - for (i = 1; i <= iNumberOfEndpoints; i++) - { - __KTRACE_OPT(KUSB, Kern::Printf("Cancelling transfer ep=%d", i)); - buffer=iEndpoint[i]->GetBuffer(); - buffer->iStatusList.CancelQueued(); - buffer->iStatusList.Complete(KErrDisconnected); - } - - // Complete remaining requests - - for (TInt i = 0; i < KUsbcMaxRequests; i++) - { - if (iRequestStatus[i]) - { - __KTRACE_OPT(KUSB, Kern::Printf("Complete request 0x%x", iRequestStatus[i])); - Kern::RequestComplete(iClient, iRequestStatus[i], KErrDisconnected); - } - } - iStatusCallbackInfo.Cancel(); - iEndpointStatusCallbackInfo.Cancel(); - iOtgFeatureCallbackInfo.Cancel(); - - return KErrNone; - } - - -void DLddUsbcScChannel::PanicClientThread(TInt aReason) - { - Kern::ThreadKill(iClient, EExitPanic, aReason, KUsbLDDKillCat); - } - -// End DLddUsbcScChannel - -/*****************************************************************************\ -* TUsbcScEndpoint * -* * -* * -* * -\*****************************************************************************/ - - -// Constructor -TUsbcScEndpoint::TUsbcScEndpoint(DLddUsbcScChannel* aLDD, DUsbClientController* aController, - const TUsbcScEndpointInfo* aEndpointInfo, TInt aEndpointNum - ) - : iRequestCallbackInfo(NULL), - iController(aController), - iEndpointInfo(*aEndpointInfo), - iClientReadPending(EFalse), - iClientWritePending(EFalse), - iEndpointNumber(aEndpointNum), - iRealEpNumber(-1), - iLdd(aLDD), - iError(KErrNone), - iBytesTransferred(0), - iBuffer(NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScEndpoint::TUsbcScEndpoint")); - } - - -TInt TUsbcScEndpoint::Construct() - { - __KTRACE_OPT(KUSB,Kern::Printf("TUsbcScEndpoint::TUsbcScEndpoint iEndpointNumber %d\n",iEndpointNumber)); - - iRequestCallbackInfo = new TUsbcRequestCallback(iLdd, - iEndpointNumber, - (iEndpointNumber==0)?DLddUsbcScChannel::RequestCallbackEp0:TUsbcScEndpoint::RequestCallback, - (iEndpointNumber==0)? (TAny*) iLdd: (TAny*) this, - iLdd->iDfcQ, - KUsbRequestCallbackPriority); - - return (iRequestCallbackInfo == NULL)?KErrNoMemory:KErrNone; - } - - -TUsbcScEndpoint::~TUsbcScEndpoint() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScEndpoint::~TUsbcScEndpoint(%d)", iEndpointNumber)); - AbortTransfer(); - delete iRequestCallbackInfo; - } - -// This is called by the PIL, on return from a read or write. -// Inturn it calls either the read or write function for that buffer. - -void TUsbcScEndpoint::RequestCallback(TAny* aTUsbcScEndpoint) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScEndpoint::RequestCallback")); - - if (((TUsbcScEndpoint*)aTUsbcScEndpoint)->iLdd->ChannelClosing()) - { - __KTRACE_OPT(KUSB, Kern::Printf("Channel Closing: Completion not accepted!")); - return; - } - - switch (((TUsbcScEndpoint*) aTUsbcScEndpoint)->iRequestCallbackInfo->iTransferDir) - { - case UsbShai::EControllerWrite: - ((TUsbcScEndpoint*) aTUsbcScEndpoint)->iBuffer->CompleteWrite(); - return; - case UsbShai::EControllerRead: - ((TUsbcScEndpoint*) aTUsbcScEndpoint)->iBuffer->CompleteRead(); - return; - default: - Kern::Printf("TUsbcScEndpoint::RequestCallback - Unexpected compleation direction %d",((TUsbcScEndpoint*) aTUsbcScEndpoint)->iRequestCallbackInfo->iTransferDir); - Kern::Fault("TUsbcScEndpoint::RequestCallback", __LINE__); - } - } - - -/* - -This is used to tidy up cancel calls into the PIL, regardless of them being reads or writes - -*/ - -void TUsbcScEndpoint::AbortTransfer() - { - if (!iLdd->iRealizeCalled) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScEndpoint::AbortTransfer Ep# %d Real Ep # %d - N.R.",iEndpointNumber, iRealEpNumber)); - return; - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScEndpoint::AbortTransfer Ep# %d Real Ep # %d",iEndpointNumber, iRealEpNumber)); - } - - - if (iBuffer && (iBuffer->iStatusList.iState) || (!iRealEpNumber)) - { - if (iRequestCallbackInfo->iTransferDir==UsbShai::EControllerWrite) - iController->CancelWriteBuffer(iLdd, iRealEpNumber); - else if (iRequestCallbackInfo->iTransferDir==UsbShai::EControllerRead) - iController->CancelReadBuffer(iLdd, iRealEpNumber); - else - { - if (iEndpointNumber!=0) // endpoint zero starts off not sent in any direction, then keeps changing. - { - __KTRACE_OPT(KUSB,Kern::Printf("\nTUsbcScEndpoint::AbortTransfer WARNING: Invalid Direction %d on (%d,%d)!\n",iRequestCallbackInfo->iTransferDir,iEndpointNumber, iRealEpNumber)); - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf("\nTUsbcScEndpoint::AbortTransfer Can't stop direction %d on (%d,%d)!\n",iRequestCallbackInfo->iTransferDir,iEndpointNumber, iRealEpNumber)); - } - } - } - else if (!iBuffer) - { - __KTRACE_OPT(KUSB,Kern::Printf("\nTUsbcScEndpoint::AbortTransfer WARNING: iBuffer is NULL on (%d,%d)\n",iEndpointNumber, iRealEpNumber)); - return; - } - - if (iRequestCallbackInfo) - iRequestCallbackInfo->iDfc.Cancel(); - else - { - __KTRACE_OPT(KUSB,Kern::Printf("\nTUsbcScEndpoint::AbortTransfer WARNING: iRequestCallbackInfo is NULL\n")); - } - - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScEndpoint Done.")); - } - -// End TUsbcScEndpoint - - -/*****************************************************************************\ -* TUsbcScAlternateSettingList * -* * -* * -* * -\*****************************************************************************/ - - -TUsbcScAlternateSetting::TUsbcScAlternateSetting() - : iNext(NULL), - iPrevious(NULL), - iNumberOfEndpoints(0), - iSetting(0) - { - for (TInt i = 0; i <= KMaxEndpointsPerClient; i++) - { - iEndpoint[i] = NULL; - } - } - - -TUsbcScAlternateSetting::~TUsbcScAlternateSetting() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcScAlternateSetting::~TUsbcScAlternateSetting()")); - for (TInt i = 0; i <= KMaxEndpointsPerClient; i++) - { - delete iEndpoint[i]; - } - } - -// End TUsbcScAlternateSettingList - - - -TUsbcScAlternateSettingList::TUsbcScAlternateSettingList() - : iHead(NULL), - iTail(NULL) - { - } - -TUsbcScAlternateSettingList::~TUsbcScAlternateSettingList() - { - } - - - -/*****************************************************************************\ -* TUsbcDeviceStatusQueue * -* * -* * -* * -\*****************************************************************************/ - - -TUsbcDeviceStatusQueue::TUsbcDeviceStatusQueue() - { - FlushQueue(); - } - - -void TUsbcDeviceStatusQueue::FlushQueue() - { - for (TInt i = 0; i < KUsbDeviceStatusQueueDepth; i++) - { - iDeviceStatusQueue[i] = KUsbDeviceStatusNull; - } - iStatusQueueHead = 0; - } - - -void TUsbcDeviceStatusQueue::AddStatusToQueue(TUint32 aDeviceStatus) - { - // Only add a new status if it is not a duplicate of the one at the head of the queue - if (!(iStatusQueueHead != 0 && - iDeviceStatusQueue[iStatusQueueHead - 1] == aDeviceStatus)) - { - if (iStatusQueueHead == KUsbDeviceStatusQueueDepth) - { - // Discard item at tail of queue - TUint32 status; - GetDeviceQueuedStatus(status); - } - iDeviceStatusQueue[iStatusQueueHead] = aDeviceStatus; - iStatusQueueHead++; - } - } - - -TInt TUsbcDeviceStatusQueue::GetDeviceQueuedStatus(TUint32& aDeviceStatus) - { - TInt r = KErrNone; - if (iStatusQueueHead <= 0) - { - r = KErrGeneral; - aDeviceStatus = KUsbDeviceStatusNull; - } - else - { - aDeviceStatus = iDeviceStatusQueue[0]; - for(TInt i = 1; i < KUsbDeviceStatusQueueDepth; i++) - { - TUint32 s = iDeviceStatusQueue[i]; - iDeviceStatusQueue[i - 1] = s; - } - iStatusQueueHead--; - iDeviceStatusQueue[KUsbDeviceStatusQueueDepth - 1] = KUsbDeviceStatusNull; - } - return r; - } - -// End TUsbcDeviceStatusQueue - -//--- - diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/pdd/pil/eabi/usbperipheralpilu.def --- a/usbdrv/peripheral/pdd/pil/eabi/usbperipheralpilu.def Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -EXPORTS - _ZN20DUsbClientController10PowerUpUdcEv @ 1 NONAME - _ZN20DUsbClientController10UsbConnectEv @ 2 NONAME - _ZN20DUsbClientController11ReEnumerateEv @ 3 NONAME - _ZN20DUsbClientController12HaltEndpointEPK5DBasei @ 4 NONAME - _ZN20DUsbClientController12SetInterfaceEPK5DBaseP7DThreadiR14TUsbcClassInfoP6TDesC8i22TUsbcEndpointInfoArrayPim @ 5 NONAME - _ZN20DUsbClientController12SetInterfaceEPK5DBaseP7DThreadiR14TUsbcClassInfoP6TDesC8iPK17TUsbcEndpointInfoPA6_im @ 6 NONAME - _ZN20DUsbClientController13DumpRegistersEv @ 7 NONAME - _ZN20DUsbClientController13UsbDisconnectEv @ 8 NONAME - _ZN20DUsbClientController15SetupReadBufferER20TUsbcRequestCallback @ 9 NONAME - _ZN20DUsbClientController16CancelReadBufferEPK5DBasei @ 10 NONAME - _ZN20DUsbClientController16DeRegisterClientEPK5DBase @ 11 NONAME - _ZN20DUsbClientController16ReleaseInterfaceEPK5DBasei @ 12 NONAME - _ZN20DUsbClientController16SetDeviceControlEPK5DBase @ 13 NONAME - _ZN20DUsbClientController16SetOtgDescriptorEP7DThreadRK6TDesC8 @ 14 NONAME - _ZN20DUsbClientController16SetupWriteBufferER20TUsbcRequestCallback @ 15 NONAME - _ZN20DUsbClientController17CancelWriteBufferEPK5DBasei @ 16 NONAME - _ZN20DUsbClientController17ClearHaltEndpointEPK5DBasei @ 17 NONAME - _ZN20DUsbClientController17EnableClientStackEv @ 18 NONAME - _ZN20DUsbClientController18DisableClientStackEv @ 19 NONAME - _ZN20DUsbClientController18EndpointPacketSizeEPK5DBasei @ 20 NONAME - _ZN20DUsbClientController18SignalRemoteWakeupEv @ 21 NONAME - _ZN20DUsbClientController19GetDeviceDescriptorEP7DThreadR5TDes8 @ 22 NONAME - _ZN20DUsbClientController19GetStringDescriptorEP7DThreadhR5TDes8 @ 23 NONAME - _ZN20DUsbClientController19SendEp0StatusPacketEPK5DBase @ 24 NONAME - _ZN20DUsbClientController19SetDeviceDescriptorEP7DThreadRK5TDes8 @ 25 NONAME - _ZN20DUsbClientController19SetStringDescriptorEP7DThreadhRK5TDes8 @ 26 NONAME - _ZN20DUsbClientController20ReleaseDeviceControlEPK5DBase @ 27 NONAME - _ZN20DUsbClientController21GetEndpointDescriptorEP7DThreadPK5DBaseiiR5TDes8 @ 28 NONAME - _ZN20DUsbClientController21QueryEndpointResourceEPK5DBasei21TUsbcEndpointResource @ 29 NONAME - _ZN20DUsbClientController21SetEndpointDescriptorEP7DThreadPK5DBaseiiRK5TDes8 @ 30 NONAME - _ZN20DUsbClientController21UsbcControllerPointerEi @ 31 NONAME - _ZN20DUsbClientController22GetInterfaceDescriptorEP7DThreadPK5DBaseiR5TDes8 @ 32 NONAME - _ZN20DUsbClientController22RegisterClientCallbackER19TUsbcClientCallback @ 33 NONAME - _ZN20DUsbClientController22RemoveStringDescriptorEh @ 34 NONAME - _ZN20DUsbClientController22SetInterfaceDescriptorEP7DThreadPK5DBaseiRK5TDes8 @ 35 NONAME - _ZN20DUsbClientController23CurrentlyUsingHighSpeedEv @ 36 NONAME - _ZN20DUsbClientController23GetDeviceDescriptorSizeEP7DThreadR5TDes8 @ 37 NONAME - _ZN20DUsbClientController23RegisterForStatusChangeER19TUsbcStatusCallback @ 38 NONAME - _ZN20DUsbClientController25DeRegisterForStatusChangeEPK5DBase @ 39 NONAME - _ZN20DUsbClientController25GetEndpointDescriptorSizeEP7DThreadPK5DBaseiiR5TDes8 @ 40 NONAME - _ZN20DUsbClientController25GetStringDescriptorLangIdEP7DThreadR5TDes8 @ 41 NONAME - _ZN20DUsbClientController25SetStringDescriptorLangIdEt @ 42 NONAME - _ZN20DUsbClientController26GetConfigurationDescriptorEP7DThreadR5TDes8 @ 43 NONAME - _ZN20DUsbClientController26GetInterfaceDescriptorSizeEP7DThreadPK5DBaseiR5TDes8 @ 44 NONAME - _ZN20DUsbClientController26GetProductStringDescriptorEP7DThreadR5TDes8 @ 45 NONAME - _ZN20DUsbClientController26SetConfigurationDescriptorEP7DThreadRK5TDes8 @ 46 NONAME - _ZN20DUsbClientController26SetProductStringDescriptorEP7DThreadRK5TDes8 @ 47 NONAME - _ZN20DUsbClientController27RegisterForOtgFeatureChangeER23TUsbcOtgFeatureCallback @ 48 NONAME - _ZN20DUsbClientController28GetCSEndpointDescriptorBlockEP7DThreadPK5DBaseiiR5TDes8 @ 49 NONAME - _ZN20DUsbClientController28GetDeviceQualifierDescriptorEP7DThreadR5TDes8 @ 50 NONAME - _ZN20DUsbClientController28SetCSEndpointDescriptorBlockEP7DThreadPK5DBaseiiRK5TDes8i @ 51 NONAME - _ZN20DUsbClientController28SetDeviceQualifierDescriptorEP7DThreadRK5TDes8 @ 52 NONAME - _ZN20DUsbClientController28SetEndpointZeroMaxPacketSizeEi @ 53 NONAME - _ZN20DUsbClientController29DeRegisterForOtgFeatureChangeEPK5DBase @ 54 NONAME - _ZN20DUsbClientController29GetCSInterfaceDescriptorBlockEP7DThreadPK5DBaseiR5TDes8 @ 55 NONAME - _ZN20DUsbClientController29RemoveProductStringDescriptorEv @ 56 NONAME - _ZN20DUsbClientController29SetCSInterfaceDescriptorBlockEP7DThreadPK5DBaseiRK5TDes8i @ 57 NONAME - _ZN20DUsbClientController30GetConfigurationDescriptorSizeEP7DThreadR5TDes8 @ 58 NONAME - _ZN20DUsbClientController31GetManufacturerStringDescriptorEP7DThreadR5TDes8 @ 59 NONAME - _ZN20DUsbClientController31GetSerialNumberStringDescriptorEP7DThreadR5TDes8 @ 60 NONAME - _ZN20DUsbClientController31RegisterForEndpointStatusChangeER27TUsbcEndpointStatusCallback @ 61 NONAME - _ZN20DUsbClientController31SetManufacturerStringDescriptorEP7DThreadRK5TDes8 @ 62 NONAME - _ZN20DUsbClientController31SetSerialNumberStringDescriptorEP7DThreadRK5TDes8 @ 63 NONAME - _ZN20DUsbClientController32GetCSEndpointDescriptorBlockSizeEP7DThreadPK5DBaseiiR5TDes8 @ 64 NONAME - _ZN20DUsbClientController32GetConfigurationStringDescriptorEP7DThreadR5TDes8 @ 65 NONAME - _ZN20DUsbClientController32SetConfigurationStringDescriptorEP7DThreadRK5TDes8 @ 66 NONAME - _ZN20DUsbClientController33DeRegisterForEndpointStatusChangeEPK5DBase @ 67 NONAME - _ZN20DUsbClientController33GetCSInterfaceDescriptorBlockSizeEP7DThreadPK5DBaseiR5TDes8 @ 68 NONAME - _ZN20DUsbClientController34RemoveManufacturerStringDescriptorEv @ 69 NONAME - _ZN20DUsbClientController34RemoveSerialNumberStringDescriptorEv @ 70 NONAME - _ZN20DUsbClientController35RemoveConfigurationStringDescriptorEv @ 71 NONAME - _ZN20DUsbClientController36GetOtherSpeedConfigurationDescriptorEP7DThreadR5TDes8 @ 72 NONAME - _ZN20DUsbClientController36SetOtherSpeedConfigurationDescriptorEP7DThreadRK5TDes8 @ 73 NONAME - _ZN20DUsbClientController4DfcQEi @ 74 NONAME - _ZN20DUsbClientController6CreateERN7UsbShai23MPeripheralControllerIfERKNS0_31TPeripheralControllerPropertiesEi @ 75 NONAME - _ZN20DUsbClientController8Ep0StallEPK5DBase @ 76 NONAME - _ZN20DUsbClientController8IsActiveEv @ 77 NONAME - _ZN20TUsbcRequestCallback15SetRxBufferInfoEPhmPmS1_i @ 78 NONAME - _ZN20TUsbcRequestCallback15SetTxBufferInfoEPhmi @ 79 NONAME - _ZN7UsbShai16UsbPeripheralPil28RegisterPeripheralControllerERNS_23MPeripheralControllerIfERKNS_31TPeripheralControllerPropertiesE @ 80 NONAME - _ZN7UsbShai21TUsbPeripheralRequestC1Ei @ 81 NONAME - _ZN7UsbShai21TUsbPeripheralRequestC2Ei @ 82 NONAME - _ZN7UsbShai22UsbChargerDetectionPil23RegisterChargerDetectorERNS_18MChargerDetectorIfERNS_26TChargerDetectorPropertiesE @ 83 NONAME - _ZNK20DUsbClientController10DeviceCapsEPK5DBaseR5TDes8 @ 84 NONAME - _ZNK20DUsbClientController12EndpointCapsEPK5DBaseR5TDes8 @ 85 NONAME - _ZNK20DUsbClientController13Ep0PacketSizeEv @ 86 NONAME - _ZNK20DUsbClientController14GetOtgFeaturesEP7DThreadR5TDes8 @ 87 NONAME - _ZNK20DUsbClientController15GetDeviceStatusEv @ 88 NONAME - _ZNK20DUsbClientController16GetOtgDescriptorEP7DThreadR5TDes8 @ 89 NONAME - _ZNK20DUsbClientController17GetEndpointStatusEPK5DBasei @ 90 NONAME - _ZNK20DUsbClientController18GetInterfaceNumberEPK5DBaseRi @ 91 NONAME - _ZNK20DUsbClientController21GetCurrentOtgFeaturesERh @ 92 NONAME - _ZNK20DUsbClientController26EndpointZeroMaxPacketSizesEv @ 93 NONAME - diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/pdd/pil/group/bld.inf --- a/usbdrv/peripheral/pdd/pil/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ -/* - Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). - All rights reserved. - - This program and the accompanying materials are made available - under the terms of the Eclipse Public License v1.0 which accompanies - this distribution, and is available at - http://www.eclipse.org/legal/epl-v10.html - - Initial Contributors: - Nokia Corporation - initial contribution. - - Contributors: -*/ -#include - -PRJ_PLATFORMS -ARMV5 - -PRJ_MMPFILES -usbperipheralpil diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/pdd/pil/group/usbperipheralpil.mmp --- a/usbdrv/peripheral/pdd/pil/group/usbperipheralpil.mmp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* - Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). - All rights reserved. - - This program and the accompanying materials are made available - under the terms of the Eclipse Public License v1.0 which accompanies - this distribution, and is available at - http://www.eclipse.org/legal/epl-v10.html - - Initial Contributors: - Nokia Corporation - initial contribution. - - Contributors: -*/ - -#include - -#include "kernel/kern_ext.mmh" - -target usbperipheralpil.dll -targettype kext -linkas usbperipheralpil.dll -deffile ../~/usbperipheralpil.def -VENDORID 0x70000001 -uid 0x00000000 0x2002E6DB -capability all -epocallowdlldata - -// The sytem include paths are declared by using the following macros - -OS_LAYER_SYSTEMINCLUDE - - - -// Include dirs of the HS-USB component -userinclude ../inc - -// PIL layer source files -sourcepath ../src -source chapter9.cpp -source descriptors.cpp -source misc.cpp -source ps_usbc.cpp -source queue.cpp -source controltransfersm.cpp diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/pdd/pil/src/chapter9.cpp --- a/usbdrv/peripheral/pdd/pil/src/chapter9.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1599 +0,0 @@ -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32/drivers/usbcc/chapter9.cpp -// Platform independent layer (PIL) of the USB Device controller driver: -// Processing of USB spec chapter 9 standard requests. -// -// - -/** - @file chapter9.cpp - @internalTechnology -*/ - -#include - -#include "controltransfersm.h" - -//#define ENABLE_EXCESSIVE_DEBUG_OUTPUT -// -// === USB Controller member function implementation - PSL API (protected) ======================== -// - -/** Used to synchronize the Ep0 state machine between the PSL and PIL. - Accepts a SETUP packet and returns the next Ep0 state. - - @param aSetupBuf The SETUP packet just received by the PSL. - @return The next Ep0 state. - - @publishedPartner @released -*/ -UsbShai::TControlStage DUsbClientController::EnquireEp0NextStage(const TUint8* aSetupBuf) const - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::EnquireEp0NextState()")); - - // This function may be called by the PSL from within an ISR -- so we have - // to take care what we do here (and also in all functions that get called - // from here). - - if (SWAP_BYTES_16((reinterpret_cast(aSetupBuf)[3])) == 0) // iLength - { - __KTRACE_OPT(KUSB, Kern::Printf(" --> EControlTransferStageStatusIn")); - return UsbShai::EControlTransferStageStatusIn; // No-data Control => Status_IN - } - else if ((aSetupBuf[0] & KUsbRequestType_DirMask) == KUsbRequestType_DirToDev) - { - __KTRACE_OPT(KUSB, Kern::Printf(" --> EControlTransferStageDataOut")); - return UsbShai::EControlTransferStageDataOut; // Control Write => Data_OUT - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(" --> EControlTransferStageDataIn")); - return UsbShai::EControlTransferStageDataIn; // Control Read => Data_IN - } - } - -// -// About iLastError. -// This member is used to remember the last error happend during a -// processXXX likewise function. -// -// Before entry of each ProcessXXX, iLastError will be cleared to KErrNone. -// - -// --- The USB Spec Chapter 9 Standard Endpoint Zero Device Requests --- -// Record error happend with iLastError, the value already been set to zero -// before entering ProcessSetupPacket call. -void DUsbClientController::ProcessGetDeviceStatus(const TUsbcSetup& aPacket) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessGetDeviceStatus()")); - if ( iDeviceState < UsbShai::EUsbPeripheralStateAddress) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid device state")); - iLastError = KErrGeneral; - } - else - { - // We always assume Device is bus-powered, even though mobile phone almost always - // has a battry there, because self-powered device can not required more then 100ma current - // which is not acceptable for Usb charging. - TBool selfPowered = EFalse; - - /* FIXME: modify selfPowered to make it compilance with following rule. - - 1. If current draw exceeds 100mA, the device must report itself - as bus-powered during enumeration. - - 2. In all cases, the GetStatus(DEVICE) call must accurately report - whether the device is currently operating on self- or bus-power. - - 3. A device that is actively drawing more than 100mA from USB must - report itself as bus-powered in the GetStatus(DEVICE) call. - - 4. Peripherals that return "Self-powered" in the GetStatus(DEVICE) - call are prohibited from drawing more than 100mA at any time. - */ - /* - TBuf8 config; - - if(iDescriptors.GetConfigurationDescriptorTC(&Kern::CurrentThread(),config) == KErrNone) - { - TUint8 maxPower = config[8]; - if(maxPower <= 50) - { - selfPowered = EFalse; - } - } - */ - - const TUint16 status = ((selfPowered ? KUsbDevStat_SelfPowered : 0) | - (iRmWakeupStatus_Enabled ? KUsbDevStat_RemoteWakeup : 0)); - __KTRACE_OPT(KUSB, Kern::Printf(" Reporting device status: 0x%02x", status)); - *reinterpret_cast(iEp0_TxBuf) = SWAP_BYTES_16(status); - if (iConTransferMgr->SetupEndpointZeroWrite(iEp0_TxBuf, sizeof(status)) == KErrNone) - { - iEp0WritePending = ETrue; - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(" Wrong: Write to Ep0 Failed")); - } - } - } - -void DUsbClientController::ProcessGetInterfaceStatus(const TUsbcSetup& aPacket) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessGetInterfaceStatus()")); - if ( iDeviceState < UsbShai::EUsbPeripheralStateConfigured) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid device state")); - iLastError = KErrGeneral; - } - else - { - if (InterfaceExists(aPacket.iIndex) == EFalse) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Interface does not exist")); - iLastError = KErrGeneral; - } - else - { - const TUint16 status = 0x0000; // as of USB Spec 2.0 - __KTRACE_OPT(KUSB, Kern::Printf(" Reporting interface status: 0x%02x", status)); - *reinterpret_cast(iEp0_TxBuf) = SWAP_BYTES_16(status); - if (iConTransferMgr->SetupEndpointZeroWrite(iEp0_TxBuf, sizeof(status)) == KErrNone) - { - iEp0WritePending = ETrue; - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(" Wrong: Write to Ep0 Failed")); - } - } - } - } - - -void DUsbClientController::ProcessGetEndpointStatus(const TUsbcSetup& aPacket) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessGetEndpointStatus()")); - if ( - ((iDeviceState < UsbShai::EUsbPeripheralStateAddress) || - (iDeviceState == UsbShai::EUsbPeripheralStateAddress && (aPacket.iIndex & KUsbEpAddress_Portmask) != 0))) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid device state")); - iLastError = KErrGeneral; - } - else - { - if (EndpointExists(aPacket.iIndex) == EFalse) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Endpoint does not exist")); - iLastError = KErrGeneral; - } - else - { - const TInt ep = EpAddr2Idx(aPacket.iIndex); - const TUint16 status = (iRealEndpoints[ep].iHalt) ? KUsbEpStat_Halt : 0; - __KTRACE_OPT(KUSB, Kern::Printf(" Reporting endpoint status 0x%02x for real endpoint %d", - status, ep)); - *reinterpret_cast(iEp0_TxBuf) = SWAP_BYTES_16(status); - if (iConTransferMgr->SetupEndpointZeroWrite(iEp0_TxBuf, 2) == KErrNone) - { - iEp0WritePending = ETrue; - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(" Wrong: Write to Ep0 Failed")); - } - } - } - } - - -void DUsbClientController::ProcessSetClearDevFeature(const TUsbcSetup& aPacket) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessSetClearDevFeature()")); - if ( iDeviceState < UsbShai::EUsbPeripheralStateDefault) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid device state")); - iLastError = KErrGeneral; - return; - } - - TInt test_sel = 0; - - if (aPacket.iRequest == KUsbRequest_SetFeature) - { - switch (aPacket.iValue) - { - case KUsbFeature_RemoteWakeup: - if ( iDeviceState < UsbShai::EUsbPeripheralStateAddress) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid device state")); - iLastError = KErrGeneral; - } - else - { - iRmWakeupStatus_Enabled = ETrue; - } - break; - - case KUsbFeature_TestMode: - if (!iHighSpeed) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Request only supported in High-Speed mode")); - iLastError = KErrGeneral; - } - else if (LowByte(aPacket.iIndex) != 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Lower byte of wIndex must be zero")); - iLastError = KErrGeneral; - } - else - { - test_sel = HighByte(aPacket.iIndex); - if ((test_sel < UsbShai::EUsbTestSelector_Test_J) || (test_sel > UsbShai::EUsbTestSelector_Test_Force_Enable)) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid test selector: %d", test_sel)); - iLastError = KErrGeneral; - } - } - break; - - case KUsbFeature_B_HnpEnable: - if (!iOtgSupport) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Request only supported on a OTG device")); - iLastError = KErrGeneral; - } - else if (!(iOtgFuncMap & KUsbOtgAttr_HnpSupp)) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Request only valid if OTG device supports HNP")); - iLastError = KErrGeneral; - } - else - { - iOtgFuncMap |= KUsbOtgAttr_B_HnpEnable; - OtgFeaturesNotify(); - } - break; - - case KUsbFeature_A_HnpSupport: - if (!iOtgSupport) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Request only supported on a OTG device")); - iLastError = KErrGeneral; - } - else if (!(iOtgFuncMap & KUsbOtgAttr_HnpSupp)) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Request only valid if OTG device supports HNP")); - iLastError = KErrGeneral; - } - else - { - iOtgFuncMap |= KUsbOtgAttr_A_HnpSupport; - OtgFeaturesNotify(); - } - break; - - case KUsbFeature_A_AltHnpSupport: - if (!iOtgSupport) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Request only supported on a OTG device")); - iLastError = KErrGeneral; - } - else if (!(iOtgFuncMap & KUsbOtgAttr_HnpSupp)) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Request only valid if OTG device supports HNP")); - iLastError = KErrGeneral; - } - else - { - iOtgFuncMap |= KUsbOtgAttr_A_AltHnpSupport; - OtgFeaturesNotify(); - } - break; - - default: - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Unknown feature requested")); - iLastError = KErrGeneral; - } - } - else // KUsbRequest_ClearFeature - { - switch (aPacket.iValue) - { - case KUsbFeature_RemoteWakeup: - if ( iDeviceState < UsbShai::EUsbPeripheralStateAddress) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid device state")); - iLastError = KErrGeneral; - } - else - { - iRmWakeupStatus_Enabled = EFalse; - } - break; - - default: - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Unknown feature requested")); - iLastError = KErrGeneral; - } - } - - if(iLastError == KErrNone) - { - // Sent out status packet if no error found. - iConTransferMgr->SendEp0ZeroByteStatusPacket(); // success: zero bytes data during status stage - - // 9.4.9: "The transition to test mode of an upstream facing port must not happen until - // after the status stage of the request." - if (test_sel) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Entering HS Test Mode %d", test_sel)); - iController.EnterTestMode((UsbShai::TUsbTestModeSelector)test_sel); - } - } - } - - -void DUsbClientController::ProcessSetClearIfcFeature(const TUsbcSetup& aPacket) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessSetClearIfcFeature()")); - if ( iDeviceState < UsbShai::EUsbPeripheralStateConfigured) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid device state")); - iLastError = KErrGeneral; - } - else - { - // No interface features defined in USB spec, thus - iLastError = KErrGeneral; - } - } - - -void DUsbClientController::ProcessSetClearEpFeature(const TUsbcSetup& aPacket) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessSetClearEpFeature()")); - if ( - ((iDeviceState < UsbShai::EUsbPeripheralStateAddress) || - (iDeviceState == UsbShai::EUsbPeripheralStateAddress && (aPacket.iIndex & KUsbEpAddress_Portmask) != 0))) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid device state")); - iLastError = KErrGeneral; - } - else if (aPacket.iValue != KUsbFeature_EndpointHalt) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Unknown feature requested")); - iLastError = KErrGeneral; - } - else if (EndpointExists(aPacket.iIndex) == EFalse) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Endpoint does not exist")); - iLastError = KErrGeneral; - } - else - { - const TInt ep = EpAddr2Idx(aPacket.iIndex); - if (iRealEndpoints[ep].iLEndpoint->iInfo.iType == UsbShai::KUsbEpTypeControl || - iRealEndpoints[ep].iLEndpoint->iInfo.iType == UsbShai::KUsbEpTypeIsochronous) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Endpoint is Control or Isochronous")); - iLastError = KErrGeneral; - } - else - { - SetClearHaltFeature(ep, aPacket.iRequest); - - // success: zero bytes data during status stage - iConTransferMgr->SendEp0ZeroByteStatusPacket(); - } - } - } - - -void DUsbClientController::ProcessSetAddress(const TUsbcSetup& aPacket) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessSetAddress()")); - if ( iDeviceState > UsbShai::EUsbPeripheralStateAddress) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid device state")); - iLastError = KErrGeneral; - } - else - { - const TUint16 addr = aPacket.iValue; - - if (addr > 127) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Bad address value: %d (>127)", addr)); - iLastError = KErrGeneral; - } - else if (addr == 0) - { - // Enter Default state (from Default or Address) - NextDeviceState(UsbShai::EUsbPeripheralStateDefault); - } - - __KTRACE_OPT(KUSB, Kern::Printf(" USB address: %d", addr)); - - // If controller support hw acceleration,call set address first and then status - if(iControllerProperties.iControllerCaps & UsbShai::KDevCapSetAddressAcceleration) - { - iController.SetDeviceAddress(addr); - } - - // The spec says, under section 9.4.6: - // "Stages after the initial Setup packet assume the same device address as the Setup packet. The USB - // device does not change its device address until after the Status stage of this request is completed - // successfully. Note that this is a difference between this request and all other requests. For all other - // requests, the operation indicated must be completed before the Status stage." - // Therefore, here we first send the status packet and only then actually execute the request. - iConTransferMgr->SendEp0ZeroByteStatusPacket(); - - // If controller doesn't support hw acceleration, call set address after status - if((iControllerProperties.iControllerCaps & UsbShai::KDevCapSetAddressAcceleration) == 0) - { - iController.SetDeviceAddress(addr); - } - } - } - - -void DUsbClientController::ProcessGetDescriptor(const TUsbcSetup& aPacket) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessGetDescriptor()")); - if ( iDeviceState < UsbShai::EUsbPeripheralStateDefault) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid device state")); - iLastError = KErrGeneral; - return ; - } - - // Make sure we assume the correct speed - __ASSERT_DEBUG((iHighSpeed == CurrentlyUsingHighSpeed()), Kern::Fault(KUsbPILPanicCat, __LINE__)); - - TInt size = 0; - const TInt result = iDescriptors.FindDescriptor(HighByte(aPacket.iValue), // Type - LowByte(aPacket.iValue), // Index - aPacket.iIndex, // Language ID - size); - - if ((result != KErrNone) || (size == 0)) - { - // This doesn't have to be an error - protocol-wise it's OK. - __KTRACE_OPT(KUSB, Kern::Printf(" Couldn't retrieve descriptor")); - iLastError = KErrGeneral; - return; - } - - __KTRACE_OPT(KUSB, Kern::Printf(" Descriptor found, size: %d (requested: %d)", - size, aPacket.iLength)); - if (size > KUsbcBufSz_Ep0Tx) - { - // This should actually not be possible (i.e. we should never get here). - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Ep0_Tx buffer too small")); - } - if (size > aPacket.iLength) - { - // Send only as much data as requested by the host - size = aPacket.iLength; - } - -#ifdef ENABLE_EXCESSIVE_DEBUG_OUTPUT - __KTRACE_OPT(KUSB, - Kern::Printf(" Data: 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x 0x%02x ...", - iEp0_TxBuf[0], iEp0_TxBuf[1], iEp0_TxBuf[2], iEp0_TxBuf[3], - iEp0_TxBuf[4], iEp0_TxBuf[5], iEp0_TxBuf[6], iEp0_TxBuf[7])); -#endif - // If we're about to send less bytes than expected by the host AND our number is a - // multiple of the packet size, in order to indicate the end of the control transfer, - // we must finally send a zero length data packet (ZLP): - const TBool zlp = ((size < aPacket.iLength) && (size % iEp0MaxPacketSize == 0)); - if (iConTransferMgr->SetupEndpointZeroWrite(iEp0_TxBuf, size, zlp) == KErrNone) - { - iEp0WritePending = ETrue; - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(" Wrong: Write to Ep0 Failed")); - } - } - - -void DUsbClientController::ProcessSetDescriptor(const TUsbcSetup& aPacket) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessSetDescriptor()")); -#ifndef USB_SUPPORTS_SET_DESCRIPTOR_REQUEST - iLastError = KErrGeneral; - return; -#else - if ( iDeviceState < UsbShai::EUsbPeripheralStateAddress) - { - // Error: Invalid device state! - iLastError = KErrGeneral; - } - else if (aPacket.iLength > KUsbcBufSz_Ep0Rx) - { - // Error: Our Rx buffer is too small! (Raise a defect to make it larger) - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Ep0_Rx buffer too small")); - iLastError = KErrGeneral; - } - else - { - SetEp0DataOutVars(); - iConTransferMgr->SetupEndpointZeroRead(); - } -#endif - } - -void DUsbClientController::ProcessGetConfiguration(const TUsbcSetup& aPacket) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessGetConfiguration()")); - if ( iDeviceState < UsbShai::EUsbPeripheralStateAddress) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid device state")); - iLastError = KErrGeneral; - } - else if ( iDeviceState == UsbShai::EUsbPeripheralStateAddress && iCurrentConfig != 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: DeviceState Address && Config != 0")); - iLastError = KErrGeneral; - } - else if ( iDeviceState == UsbShai::EUsbPeripheralStateConfigured && iCurrentConfig == 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: DeviceState Configured && Config == 0")); - iLastError = KErrGeneral; - } - else - { - if (aPacket.iLength != 1) // "unspecified behavior" - { - __KTRACE_OPT(KUSB, Kern::Printf(" Warning: wLength != 1 (= %d)", aPacket.iLength)); - } - __KTRACE_OPT(KUSB, Kern::Printf(" Reporting configuration value %d", iCurrentConfig)); - if (iConTransferMgr->SetupEndpointZeroWrite(&iCurrentConfig, sizeof(iCurrentConfig)) == KErrNone) - { - iEp0WritePending = ETrue; - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(" Wrong: Write to Ep0 Failed")); - } - } - } - - -/** Changes the device's configuration value, including interface setup and/or - teardown and state change notification of higher-layer clients. - May also be called by the PSL in special cases - therefore publishedPartner. - - @param aPacket The received Ep0 SET_CONFIGURATION setup request packet. - @return KErrGeneral in case of a protocol error, KErrNone otherwise. - - @publishedPartner @released -*/ -TInt DUsbClientController::ProcessSetConfiguration(const TUsbcSetup& aPacket) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessSetConfiguration()")); - - // This function may be called by the PSL from within an ISR -- so we have - // to take care what we do here (and also in all functions that get called - // from here). - const TInt value = aPacket.iValue; - - if ( iDeviceState < UsbShai::EUsbPeripheralStateAddress) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid device state")); - iLastError = KErrGeneral; - } - else if (value > 1) // we support only one configuration - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Configuration value too large: %d", value)); - iLastError = KErrGeneral; - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(" Configuration value: %d", value)); - ChangeConfiguration(value); - - // In 9.4.5 under GET_STATUS we read, that after SET_CONFIGURATION the HALT feature - // for all endpoints is reset to zero. - TInt num = 0; - (TAny) DoForEveryEndpointInUse(&DUsbClientController::ClearHaltFeature, num); - __KTRACE_OPT(KUSB, Kern::Printf(" Called ClearHaltFeature() for %d endpoints", num)); - // success: zero bytes data during status stage - iConTransferMgr->SendEp0ZeroByteStatusPacket(); - } - - return iLastError; - } - -void DUsbClientController::ProcessGetInterface(const TUsbcSetup& aPacket) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessGetInterface()")); - - const TInt number = aPacket.iIndex; - - if ( iDeviceState < UsbShai::EUsbPeripheralStateConfigured) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid device state")); - iLastError = KErrGeneral; - } - else if (iCurrentConfig == 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Device not configured")); - iLastError = KErrGeneral; - } - else if (!InterfaceExists(number)) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Bad interface index: %d", number)); - iLastError = KErrGeneral; - } - else - { - // Send alternate setting code of iCurrentInterface of Interface(set) of the current - // config (iCurrentConfig). - const TUint8 setting = InterfaceNumber2InterfacePointer(number)->iCurrentInterface; - __KTRACE_OPT(KUSB, Kern::Printf(" Reporting interface setting %d", setting)); - if (iConTransferMgr->SetupEndpointZeroWrite(&setting, 1) == KErrNone) - { - iEp0WritePending = ETrue; - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(" Wrong: Write to Ep0 Failed")); - } - } - } - - -void DUsbClientController::ProcessSetInterface(const TUsbcSetup& aPacket) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessSetInterface()")); - - const TInt number = aPacket.iIndex; - - if ( iDeviceState < UsbShai::EUsbPeripheralStateConfigured) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid device state")); - iLastError = KErrGeneral; - } - else if (iCurrentConfig == 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Device not configured")); - iLastError = KErrGeneral; - } - else if (!InterfaceExists(number)) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Bad interface index: %d", number)); - iLastError = KErrGeneral; - } - else - { - const TInt setting = aPacket.iValue; - TUsbcInterfaceSet* const ifcset_ptr = InterfaceNumber2InterfacePointer(number); - RPointerArray& ifcs = ifcset_ptr->iInterfaces; - if (setting >= ifcs.Count()) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Alt Setting >= bNumAltSettings: %d", setting)); - iLastError = KErrGeneral; - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(" Interface setting:: %d", setting)); - // Set iCurrentInterface of Interface(set) of the current config - // (iCurrentConfig) to alternate setting . - ChangeInterface(ifcs[setting]); - // In 9.4.5 under GET_STATUS we read, that after SET_INTERFACE the HALT feature - // for all endpoints (of the now current interface setting) is reset to zero. - RPointerArray& eps = ifcset_ptr->CurrentInterface()->iEndpoints; - const TInt num_eps = eps.Count(); - for (TInt i = 0; i < num_eps; i++) - { - const TInt ep_num = EpAddr2Idx(eps[i]->iPEndpoint->iEndpointAddr); - (TAny) ClearHaltFeature(ep_num); - } - // success: zero bytes data during status stage - iConTransferMgr->SendEp0ZeroByteStatusPacket(); - } - } - } - - -void DUsbClientController::ProcessSynchFrame(const TUsbcSetup& aPacket) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessSynchFrame()")); - - const TInt ep = aPacket.iIndex; - - if ( iDeviceState < UsbShai::EUsbPeripheralStateConfigured) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid device state")); - iLastError = KErrGeneral; - } - else if (EndpointExists(ep) == EFalse) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Endpoint does not exist")); - iLastError = KErrGeneral; - } - else if (iRealEndpoints[EpAddr2Idx(ep)].iLEndpoint->iInfo.iType != UsbShai::KUsbEpTypeIsochronous) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Endpoint is not isochronous")); - iLastError = KErrGeneral; - } - else - { - // We always send 0: - *reinterpret_cast(iEp0_TxBuf) = 0x00; - if (iConTransferMgr->SetupEndpointZeroWrite(iEp0_TxBuf, 2) == KErrNone) - { - iEp0WritePending = ETrue; - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(" Wrong: Write to Ep0 Failed")); - } - } - } - - -#ifdef USB_SUPPORTS_SET_DESCRIPTOR_REQUEST -void DUsbClientController::ProceedSetDescriptor() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProceedSetDescriptor()")); - // iEp0DataReceived already reflects the current buffer state - if (iEp0DataReceived < iConTransferMgr->PktParser().DataLength()) - { - // Not yet all data received => proceed - return; - } - if (iEp0DataReceived > iConTransferMgr->PktParser().DataLength()) - { - // Error: more data received than expected - // but we don't care... - } - const TUint8 type = HighByte(iConTransferMgr->PktParser().Value()); - if (type == KUsbDescType_String) - { - // set/add new string descriptor - } - else - { - // set/add new ordinary descriptor - } - TUint8 index = LowByte(iConTransferMgr->PktParser().Value()); - TUint16 langid = iConTransferMgr->PktParser().Index(); - TUint16 length_total = iConTransferMgr->PktParser().DataLength(); - - iConTransferMgr->SendEp0ZeroByteStatusPacket(); - } -#endif - - -// --- Secondary (Helper) Functions - -void DUsbClientController::SetClearHaltFeature(TInt aRealEndpoint, TUint8 aRequest) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetClearHaltFeature()")); - if (aRequest == KUsbRequest_SetFeature) - { - if (iRealEndpoints[aRealEndpoint].iHalt) - { - // (This condition is not really an error) - __KTRACE_OPT(KUSB, Kern::Printf(" Warning: HALT feature already set")); - return; - } - __KTRACE_OPT(KUSB, Kern::Printf(" setting HALT feature for real endpoint %d", - aRealEndpoint)); - iController.StallEndpoint(aRealEndpoint); - iRealEndpoints[aRealEndpoint].iHalt = ETrue; - } - else // KUsbRequest_ClearFeature - { - if (iRealEndpoints[aRealEndpoint].iHalt == EFalse) - { - // In this case, before we return, the data toggles are reset to DATA0. - __KTRACE_OPT(KUSB, Kern::Printf(" Warning: HALT feature already cleared")); - iController.ResetDataToggle(aRealEndpoint); - return; - } - __KTRACE_OPT(KUSB, Kern::Printf(" clearing HALT feature for real endpoint %d", - aRealEndpoint)); - iController.ResetDataToggle(aRealEndpoint); - iController.ClearStallEndpoint(aRealEndpoint); - iRealEndpoints[aRealEndpoint].iHalt = EFalse; - } - EpStatusNotify(aRealEndpoint); // only called if actually something changed - } - - -TInt DUsbClientController::ClearHaltFeature(TInt aRealEndpoint) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ClearHaltFeature()")); - if (iRealEndpoints[aRealEndpoint].iHalt != EFalse) - { - iController.ClearStallEndpoint(aRealEndpoint); - iRealEndpoints[aRealEndpoint].iHalt = EFalse; - } - return KErrNone; - } - - -void DUsbClientController::ChangeConfiguration(TUint16 aValue) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ChangeConfiguration()")); - // New configuration is the same as the old one: 0 - if (iCurrentConfig == 0 && aValue == 0) - { - // no-op - __KTRACE_OPT(KUSB, Kern::Printf(" Configuration: New == Old == 0 --> exiting")); - return; - } - // New configuration is the same as the old one (but not 0) - if (iCurrentConfig == aValue) - { - // no-op - __KTRACE_OPT(KUSB, Kern::Printf(" Configuration: New == Old == %d --> exiting", aValue)); - return; - } - // Device is already configured - if (iCurrentConfig != 0) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Device was configured: %d", iCurrentConfig)); - // Tear down all interface(set)s of the old configuration - RPointerArray& ifcsets = CurrentConfig()->iInterfaceSets; - for (TInt i = 0; i < ifcsets.Count(); ++i) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Tearing down InterfaceSet %d", i)); - InterfaceSetTeardown(ifcsets[i]); - } - iCurrentConfig = 0; - // Enter Address state (from Configured) - if (iDeviceState == UsbShai::EUsbPeripheralStateConfigured) - NextDeviceState(UsbShai::EUsbPeripheralStateAddress); - } - // Device gets a new configuration - if (aValue != 0) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Device gets new configuration...")); - // Setup all alternate settings 0 of all interfaces - // (Don't separate the next two lines of code.) - iCurrentConfig = aValue; - RPointerArray& ifcsets = CurrentConfig()->iInterfaceSets; - const TInt n = ifcsets.Count(); - for (TInt i = 0; i < n; ++i) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Setting up InterfaceSet %d", i)); - InterfaceSetup(ifcsets[i]->iInterfaces[0]); - } - // Enter Configured state (from Address or Configured) - NextDeviceState(UsbShai::EUsbPeripheralStateConfigured); - } - __KTRACE_OPT(KUSB, Kern::Printf(" New configuration: %d", iCurrentConfig)); - return; - } - - -void DUsbClientController::InterfaceSetup(TUsbcInterface* aIfc) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::InterfaceSetup()")); - const TInt num_eps = aIfc->iEndpoints.Count(); - for (TInt i = 0; i < num_eps; i++) - { - // Prepare this endpoint for I/O - TUsbcLogicalEndpoint* const ep = aIfc->iEndpoints[i]; - // (TUsbcLogicalEndpoint's FS/HS endpoint sizes and interval values got - // adjusted in its constructor.) - if (iHighSpeed) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Setting Ep info size to %d (HS)", ep->iEpSize_Hs)); - ep->iInfo.iSize = ep->iEpSize_Hs; - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(" Setting Ep info size to %d (FS)", ep->iEpSize_Fs)); - ep->iInfo.iSize = ep->iEpSize_Fs; - } - const TInt idx = EpAddr2Idx(ep->iPEndpoint->iEndpointAddr); - if (iController.ConfigureEndpoint(idx, ep->iInfo) != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Endpoint %d configuration failed", idx)); - continue; - } - // Should there be a problem with it then we could try resetting the ep - // data toggle at this point (or before the Configure) as well. - __KTRACE_OPT(KUSB, Kern::Printf(" Connecting real ep addr 0x%02x & logical ep #%d", - ep->iPEndpoint->iEndpointAddr, ep->iLEndpointNum)); - ep->iPEndpoint->iLEndpoint = ep; - } - aIfc->iInterfaceSet->iCurrentInterface = aIfc->iSettingCode; - return; - } - - -void DUsbClientController::InterfaceSetTeardown(TUsbcInterfaceSet* aIfcSet) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::InterfaceSetTeardown()")); - if (aIfcSet->iInterfaces.Count() == 0) - { - __KTRACE_OPT(KUSB, Kern::Printf(" No interfaces exist - returning")); - return; - } - RPointerArray& eps = aIfcSet->CurrentInterface()->iEndpoints; - const TInt num_eps = eps.Count(); - for (TInt i = 0; i < num_eps; i++) - { - TUsbcLogicalEndpoint* const ep = eps[i]; - const TInt idx = EpAddr2Idx(ep->iPEndpoint->iEndpointAddr); - - CancelTransferRequests(idx); - - if (!ep->iPEndpoint->iLEndpoint) - { - __KTRACE_OPT(KUSB, Kern::Printf(" real ep %d not configured: skipping", idx)); - continue; - } - if (iController.ResetDataToggle(idx) != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Endpoint %d data toggle reset failed", idx)); - } - if (iController.DeConfigureEndpoint(idx) != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Endpoint %d de-configuration failed", idx)); - } - - __KTRACE_OPT(KUSB, Kern::Printf(" disconnecting real ep & logical ep")); - ep->iPEndpoint->iLEndpoint = NULL; - } - if (aIfcSet->CurrentInterface() != 0) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Resetting alternate interface setting to 0")); - //Add this mutex to protect the interface set data structure - if (NKern::CurrentContext() == EThread) - { - NKern::FMWait(&iMutex); - } - - aIfcSet->iCurrentInterface = 0; - if (NKern::CurrentContext() == EThread) - { - NKern::FMSignal(&iMutex); - } - } - return; - } - - -void DUsbClientController::ChangeInterface(TUsbcInterface* aIfc) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ChangeInterface()")); - TUsbcInterfaceSet* ifcset = aIfc->iInterfaceSet; - const TUint8 setting = aIfc->iSettingCode; - if (ifcset->iCurrentInterface == setting) - { - __KTRACE_OPT(KUSB, Kern::Printf(" New Ifc == old Ifc: nothing to do")); - return; - } - __KTRACE_OPT(KUSB, Kern::Printf(" Setting new interface setting #%d", setting)); - InterfaceSetTeardown(ifcset); - InterfaceSetup(aIfc); - StatusNotify(static_cast(KUsbAlternateSetting | setting), ifcset->iClientId); - } - - -// aFunction gets called, successively, with the endpoint index of every ep in-use as its argument. -// (BTW: The declaration "type (class::*name)(params)" makes a "pointer to element function".) -// -TInt DUsbClientController::DoForEveryEndpointInUse(TInt (DUsbClientController::*aFunction)(TInt), TInt& aCount) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::DoForEveryEndpointInUse()")); - aCount = 0; - TUsbcConfiguration* const config = CurrentConfig(); - if (!config) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Device is not configured - returning")); - return KErrNone; - } - RPointerArray& ifcsets = config->iInterfaceSets; - const TInt num_ifcsets = ifcsets.Count(); - for (TInt i = 0; i < num_ifcsets; i++) - { - RPointerArray& eps = ifcsets[i]->CurrentInterface()->iEndpoints; - const TInt num_eps = eps.Count(); - for (TInt j = 0; j < num_eps; j++) - { - const TInt ep_num = EpAddr2Idx(eps[j]->iPEndpoint->iEndpointAddr); - const TInt result = (this->*aFunction)(ep_num); - ++aCount; - if (result != KErrNone) - { - return result; - } - } - } - return KErrNone; - } - -// Data Tx is done. -void DUsbClientController::ProcessDataInPacket(TInt aCount,TInt aErrCode) - { - // Clear Error Code - iLastError = KErrNone; - - // For tx, no premature end is allowed. - if(aErrCode != KErrNone) - { - // something wrong in hardware, we can do nothing as remedy - // just stall the endpoint. - iConTransferMgr->StallEndpoint(KEp0_In); - iConTransferMgr->SetupEndpointZeroRead(); - - // set err code to Error general if end point is stalled - iLastError = KErrGeneral; - } - else - { - // no longer a write pending - iEp0WritePending = EFalse; - - // If it was a client who set up this transmission, we report to that client - if (iEp0ClientDataTransmitting) - { - iEp0ClientDataTransmitting = EFalse; - TUsbcRequestCallback* const p = iRequestCallbacks[KEp0_Tx]; - - if (p) - { - __ASSERT_DEBUG((p->iTransferDir == UsbShai::EControllerWrite), Kern::Fault(KUsbPILPanicCat, __LINE__)); - p->iError = aErrCode; - p->iTxBytes = aCount; - - // tell the client that the sending is done - // later, it is possible that a status out packet comes in, - // just ignore it. - ProcessDataTransferDone(*p); - } - else - { - // we should never goes here - iConTransferMgr->StallEndpoint(KEp0_In); - - // request not found - iLastError = KErrNotFound; - } - } - // else - // it is our own who sending the data, no more action needed - } - } - -// Status Rx is done -void DUsbClientController::ProcessStatusOutPacket(TInt aErrCode) - { - // Clear Error Code - iLastError = KErrNone; - - // Dangdang, psl saying a status out packet recieved from - // host, but, we already completed user's writting request, just ignore it. - - // any way, receiving this means no write is pending. - iEp0WritePending = EFalse; - } - -// Data Rx is (partial) done -void DUsbClientController::ProcessDataOutPacket(TInt aCount,TInt aErrCode) - { - // Clear Error Code - iLastError = KErrNone; - - if (aErrCode != KErrNone && aErrCode != KErrPrematureEnd) - { - // something wrong in hardware, we can do nothing as remedy - // just stall the endpoint. - iConTransferMgr->StallEndpoint(KEp0_Out); - iConTransferMgr->SetupEndpointZeroRead(); - - // set err code to Error general if end point is stalled - iLastError = KErrGeneral; - } - else - { - // Trim aCount with iEp0MaxPacketSize per packet - if (aCount > iEp0MaxPacketSize) - { - aCount = iEp0MaxPacketSize; - } - - iEp0DataReceived += aCount; - - if (iEp0ClientId == NULL) - { - // it is us( not an app), who owns this transaction - switch( iConTransferMgr->PktParser().Request()) - { -#ifdef USB_SUPPORTS_SET_DESCRIPTOR_REQUEST - case KUsbRequest_SetDescriptor: - { - memcpy(iEp0_RxCollectionBuf + iEp0DataReceived, iEp0_RxBuf, aCount); - - // Status will be sent in side this function - // if we had recieved enough bytes - ProceedSetDescriptor(); - } - break; -#endif - default: - { - iConTransferMgr->StallEndpoint(KEp0_In); - ResetEp0DataOutVars(); - - // set err code to Error general if end point is stalled - iLastError = KErrGeneral; - } - break; - } - - if (iEp0DataReceived >= iConTransferMgr->PktParser().DataLength()) - { - // all data seems now to be here - ResetEp0DataOutVars(); - } - } - else - { - // it is an application who is requesting this data - // pass the data on to a client - - // it is the client's responsibility of sending a status - // packet back to host to indicate the whole transfer is - // done - - // Find the client Request callback - TSglQueIter iter(iEp0ReadRequestCallbacks); - TUsbcRequestCallback* p; - while ((p = iter++) != NULL) - { - if (p->Owner() == iEp0ClientId) - { - memcpy(p->iBufferStart, iEp0_RxBuf, aCount); - p->iError = KErrNone; - *(p->iPacketSize) = aCount; - p->iRxPackets = 1; - *(p->iPacketIndex) = 0; - break; - } - } - - // pass data to client if found one. - if ( p != NULL) - { - ProcessDataTransferDone(*p); - - if (iEp0DataReceived >= iConTransferMgr->PktParser().DataLength()) - { - // all data seems now to be here - ResetEp0DataOutVars(); - } - - iLastError = KErrNone; - - } - else - { - // that's bad, we found a client is request this data - // but no matching request callback found. - - iEp0_RxExtraCount = aCount; - //iEp0_RxExtraData = ETrue; - //iEp0_RxExtraError = aErrCode; - iEp0DataReceived -= aCount; - - // No status packet will be send to host since no client is reading this data, - // waiting client to send a status packet. - - iLastError = KErrNotFound; - } - } - } - } - -// Status Tx is done -void DUsbClientController::ProcessStatusInPacket(TInt aErrCode) - { - // Clear Error Code - iLastError = KErrNone; - - // it is time to start a new read - iEp0WritePending = EFalse; - } - -// -// Setup Rx is done -// -void DUsbClientController::ProcessSetupPacket(TInt aCount,TInt aErrCode) - { - - if (aErrCode != KErrNone) - { - // something wrong in hardware, we can do nothing as remedy - // just stall the endpoint. - iConTransferMgr->StallEndpoint(KEp0_Out); - iConTransferMgr->SetupEndpointZeroRead(); - - // set err code to Error general if end point is stalled - iLastError = KErrGeneral; - } - - TUsbcSetup packet; - Buffer2Setup(iEp0_RxBuf, packet); - - // Clear Error Code - iLastError = KErrNone; - - // If this is a standard request, we can handle it here - // not need to bother app layer - if ((packet.iRequestType & KUsbRequestType_TypeMask) == KUsbRequestType_TypeStd) - { - // Fixme: this may not needed any more - iEp0ReceivedNonStdRequest = EFalse; - ProcessStandardRequest(aCount,packet); - } - else - { - // Fixme: This may not needed anymore - iEp0ReceivedNonStdRequest = ETrue; - ProcessNonStandardRequest(aCount,packet); - } - } - -#define USB_PROCESS_REQUEST(request,param) \ - do \ - { \ - Process ## request(param); \ - if (iLastError != KErrNone) \ - { \ - __KTRACE_OPT(KUSB, \ - Kern::Printf(" ProcessEp0SetupReceived: Stalling Ep0")); \ - iConTransferMgr->StallEndpoint(KEp0_In); \ - } \ - }while(0) - - -// -// Standard request -// Please note that:Macro USB_PROCESS_REQUEST(xxx) will stall endpoint -// if anything wrong during the process, in which case status packet is -// not needed. -// -void DUsbClientController::ProcessStandardRequest(TInt /*aCount*/,const TUsbcSetup& aPacket) - { - switch (aPacket.iRequest) - { - case KUsbRequest_GetStatus: - switch (aPacket.iRequestType & KUsbRequestType_DestMask) - { // Recipient - case KUsbRequestType_DestDevice: - USB_PROCESS_REQUEST(GetDeviceStatus,aPacket); - break; - - case KUsbRequestType_DestIfc: - USB_PROCESS_REQUEST(GetInterfaceStatus,aPacket); - break; - - case KUsbRequestType_DestEp: - USB_PROCESS_REQUEST(GetEndpointStatus,aPacket); - break; - - default: - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: GET STATUS - Other or Unknown recipient")); - __KTRACE_OPT(KPANIC, Kern::Printf(" -> DUsbClientController::ProcessEp0SetupReceived: " - "Stalling Ep0")); - iConTransferMgr->StallEndpoint(KEp0_In); - iLastError = KErrGeneral; - break; - } - break; - - case KUsbRequest_ClearFeature: - case KUsbRequest_SetFeature: - switch (aPacket.iRequestType & KUsbRequestType_DestMask) - { // Recipient - case KUsbRequestType_DestDevice: - USB_PROCESS_REQUEST(SetClearDevFeature,aPacket); - break; - case KUsbRequestType_DestIfc: - // will 100% stall endpoint - USB_PROCESS_REQUEST(SetClearIfcFeature,aPacket); - break; - case KUsbRequestType_DestEp: - USB_PROCESS_REQUEST(SetClearEpFeature,aPacket); - break; - default: - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: SET/CLEAR FEATURE - " - "Other or Unknown recipient")); - __KTRACE_OPT(KPANIC, Kern::Printf(" -> Stalling Ep0")); - iConTransferMgr->StallEndpoint(KEp0_In); - iLastError = KErrGeneral; - break; - } - break; - - case KUsbRequest_SetAddress: - USB_PROCESS_REQUEST(SetAddress,aPacket); - break; - - case KUsbRequest_GetDescriptor: - USB_PROCESS_REQUEST(GetDescriptor,aPacket); - break; - - case KUsbRequest_SetDescriptor: - USB_PROCESS_REQUEST(SetDescriptor,aPacket); - break; - - case KUsbRequest_GetConfig: - USB_PROCESS_REQUEST(GetConfiguration,aPacket); - break; - - case KUsbRequest_SetConfig: - USB_PROCESS_REQUEST(SetConfiguration,aPacket); - break; - - case KUsbRequest_GetInterface: - USB_PROCESS_REQUEST(GetInterface,aPacket); - break; - - case KUsbRequest_SetInterface: - USB_PROCESS_REQUEST(SetInterface,aPacket); - break; - - case KUsbRequest_SynchFrame: - USB_PROCESS_REQUEST(SynchFrame,aPacket); - break; - - default: - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Unknown/unsupported Std Setup Request")); - __KTRACE_OPT(KPANIC, Kern::Printf(" -> Stalling Ep0")); - iConTransferMgr->StallEndpoint(KEp0_In); - iLastError = KErrGeneral; - break; - } - } - -#undef USB_PROCESS_REQUEST - -// -// class- or vendor-specific request -// we dont send back any status to host in PIL for class- or vendor-specific request -// if no client is waiting, stall the endpoint -// if client is not ready, just record them and waiting for client to read them -// (and, send a status packet) -// -void DUsbClientController::ProcessNonStandardRequest(TInt aCount,const TUsbcSetup& aPacket) - { - // Find out which client can handle this request - const DBase* client = FindNonStandardRequestClient(aPacket.iRequestType & KUsbRequestType_DestMask,aPacket); - - // If client is valide - if (client != NULL) - { - // Try to relay aPacket to the real recipient - TSglQueIter iter(iEp0ReadRequestCallbacks); - TUsbcRequestCallback* p; - - // Find out the request callback with match the client - // returned from last FindNonStandardRequestClient(). - while ((p = iter++) != NULL) - { - if (p->Owner() == client) - { - __ASSERT_DEBUG((p->iEndpointNum == 0), Kern::Fault(KUsbPILPanicCat, __LINE__)); - __ASSERT_DEBUG((p->iTransferDir == UsbShai::EControllerRead), Kern::Fault(KUsbPILPanicCat, __LINE__)); - __KTRACE_OPT(KUSB, Kern::Printf(" Found Ep0 read request")); - if (aPacket.iLength != 0) - { - if ((aPacket.iRequestType & KUsbRequestType_DirMask) == KUsbRequestType_DirToDev) - { - // Data transfer & direction OUT => there'll be a DATA_OUT stage - __KTRACE_OPT(KUSB, Kern::Printf(" Next is DATA_OUT: setting up DataOutVars")); - SetEp0DataOutVars(client); - } - else if ((aPacket.iRequestType & KUsbRequestType_DirMask) == KUsbRequestType_DirToHost) - { - // For possible later use (ZLP). - iEp0_TxNonStdCount = aPacket.iLength; - } - } - - // Found the request callback, jump out now - break; - } - } - - // if a request callback matching the client is found, - // complete the request - if( p != NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Ep0 read request completed to client")); - memcpy(p->iBufferStart, iEp0_RxBuf, aCount); - p->iError = KErrNone; - *(p->iPacketSize) = aCount; - p->iRxPackets = 1; - *(p->iPacketIndex) = 0; - ProcessDataTransferDone(*p); - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(" Ep0 read request not found: setting RxExtra vars (Setup)")); - iEp0_RxExtraCount = aCount; - //iEp0_RxExtraData = ETrue; - //iEp0_RxExtraError = aErrCode; - iSetupPacketPending = ETrue; - - // For setup packet,a zero bytes status is always needed - iLastError = KErrNotFound; - } - } - else // if (client == NULL) - { - // Pil don't know how to deal with non-standard request, stall endpoint - __KTRACE_OPT(KPANIC, Kern::Printf(" Ep0 request error: Stalling Ep0")); - iConTransferMgr->StallEndpoint(KEp0_In); - iLastError = KErrGeneral; - } - } - -const DBase* DUsbClientController::FindNonStandardRequestClient(TUint8 aPacketTypeDestination,const TUsbcSetup& aPacket) - { - const DBase* client = NULL; - - switch (aPacketTypeDestination) - { // Recipient - case KUsbRequestType_DestDevice: - { - client = iEp0DeviceControl; - } - break; - - case KUsbRequestType_DestIfc: - { - //Add this mutex to protect the interface set data structure - if (NKern::CurrentContext() == EThread) - { - NKern::FMWait(&iMutex); - } - - if ( iDeviceState < UsbShai::EUsbPeripheralStateConfigured) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid device state")); - } - else - { - const TUsbcInterfaceSet* const ifcset_ptr = - InterfaceNumber2InterfacePointer(aPacket.iIndex); - - //In some rare case, ifcset_ptr is not NULL but the ifcset_ptr->iInterfaces.Count() is 0, - //so panic will happen when excute the following line. so I add the conditon - //0 != ifcset_ptr->iInterfaces.Count() here. - if (ifcset_ptr && 0 != ifcset_ptr->iInterfaces.Count()) - { - if (ifcset_ptr->CurrentInterface()->iNoEp0Requests) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Recipient says: NoEp0RequestsPlease")); - } - else - { - client = ifcset_ptr->iClientId; - } - } - else - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Interface 0x%02x does not exist", - aPacket.iIndex)); - } - } - - if (NKern::CurrentContext() == EThread) - { - NKern::FMSignal(&iMutex); - } - } - break; - - case KUsbRequestType_DestEp: - { - //Add this mutex to protect the interface set data structure - if (NKern::CurrentContext() == EThread) - { - NKern::FMWait(&iMutex); - } - if ( iDeviceState < UsbShai::EUsbPeripheralStateConfigured) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid device state")); - } - else if (EndpointExists(aPacket.iIndex) == EFalse) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Endpoint 0x%02x does not exist", - aPacket.iIndex)); - } - else - { - const TInt idx = EpAddr2Idx(aPacket.iIndex); - const TUsbcInterfaceSet* const ifcset_ptr = - iRealEndpoints[idx].iLEndpoint->iInterface->iInterfaceSet; - if (ifcset_ptr->CurrentInterface()->iNoEp0Requests) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Recipient says: NoEp0RequestsPlease")); - } - else - { - client = ifcset_ptr->iClientId; - } - } - if (NKern::CurrentContext() == EThread) - { - NKern::FMSignal(&iMutex); - } - } - break; - - default: - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Other or Unknown recipient")); - break; - } - } - - return client; - } - -TInt DUsbClientController::ProcessSetupEndpointZeroRead() - { - __KTRACE_OPT(KPANIC, Kern::Printf("DUsbClientController:: Read EP0 Issued")); - return iController.SetupEndpointZeroRead(); - } - -TInt DUsbClientController::ProcessSetupEndpointZeroWrite(const TUint8* aBuffer, TInt aLength, TBool aZlpReqd) - { - __KTRACE_OPT(KPANIC, Kern::Printf("DUsbClientController:: Write EP0 Issued")); - return iController.SetupEndpointZeroWrite(aBuffer,aLength,aZlpReqd); - } - -TInt DUsbClientController::ProcessSendEp0ZeroByteStatusPacket() - { - __KTRACE_OPT(KPANIC, Kern::Printf("DUsbClientController:: Zero Status to EP0 Issued")); - return iController.SendEp0ZeroByteStatusPacket(); - } - -TInt DUsbClientController::ProcessStallEndpoint(TInt aRealEndpoint) - { - __KTRACE_OPT(KPANIC, Kern::Printf("DUsbClientController:: EP0(%d) Stall Issued",aRealEndpoint)); - return iController.StallEndpoint(aRealEndpoint); - } - -void DUsbClientController::ProcessEp0SetupPacketProceed() - { - __KTRACE_OPT(KPANIC, Kern::Printf("DUsbClientController:: Missed setup packet procced")); - iController.Ep0ReadSetupPktProceed(); - } - -void DUsbClientController::ProcessEp0DataPacketProceed() - { - __KTRACE_OPT(KPANIC, Kern::Printf("DUsbClientController:: Missed data packet procced")); - iController.Ep0ReadDataPktProceed(); - } - -// -eof- diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/pdd/pil/src/controltransfersm.cpp --- a/usbdrv/peripheral/pdd/pil/src/controltransfersm.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,604 +0,0 @@ -/* - Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). - All rights reserved. - - This program and the accompanying materials are made available - under the terms of the Eclipse Public License v1.0 which accompanies - this distribution, and is available at - http://www.eclipse.org/legal/epl-v10.html - - Initial Contributors: - Nokia Corporation - initial contribution. - - Contributors: -*/ - -#include "controltransfersm.h" - -// Bitmap of setup packet -/* -Offset 0, bmRequestType, 1 bytes - 1 Bit-Map - D7 Data Phase Transfer Direction - 0 = Host to Device - 1 = Device to Host - - D6..5 Type - 0 = Standard - 1 = Class - 2 = Vendor - 3 = Reserved - - D4..0 Recipient - 0 = Device - 1 = Interface - 2 = Endpoint - 3 = Other - 4..31 = Reserved - -Offset 1, bRequest - -Offset 6, Count, 2 bytes - Number of bytes to transfer if there is a data phase -*/ - -#if defined(_DEBUG) - -#define CTSM_ID "ControlTransferSM " - -char* DebugName[] = - { - "Setup", - "Data Out", - "Status In", - "Data In", - "Status Out" - }; - -#endif - -// Static data instance -TUsbcSetup TSetupPkgParser::iSetupPkt; - -TSetupPkgParser::TSetupPkgParser() - { - iSetupPkt.iRequestType = 0; - iSetupPkt.iRequest = 0; - - iSetupPkt.iValue = 0; - iSetupPkt.iIndex = 0; - iSetupPkt.iLength = 0; - } - -// Code for TSetupPkgParser -// we do a bitwise copy here. -void TSetupPkgParser::Set(const TUint8* aSetupBuf) - { - // TUint8 index - iSetupPkt.iRequestType = static_cast(aSetupBuf)[0]; - iSetupPkt.iRequest = static_cast(aSetupBuf)[1]; - // TUint16 index from here! - iSetupPkt.iValue = SWAP_BYTES_16((reinterpret_cast(aSetupBuf))[1]); - iSetupPkt.iIndex = SWAP_BYTES_16((reinterpret_cast(aSetupBuf))[2]); - iSetupPkt.iLength = SWAP_BYTES_16((reinterpret_cast(aSetupBuf))[3]); - - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "TSetupPkgParser::Set")); - } - -// return the next stage by decoding the setup packet -// the possible stage followed by a setup packet are: -// StatusIn (no data stage) -// DataOut (host sent to peripheral) -// DataIn (peripheral to host) -UsbShai::TControlStage TSetupPkgParser::NextStage() - { - UsbShai::TControlStage ret = UsbShai::EControlTransferStageMax; - - // Take the data length out, 0 length means no data stage - if (iSetupPkt.iLength == 0) - { - ret = UsbShai::EControlTransferStageStatusIn; - } - else if ((iSetupPkt.iRequestType & KUsbRequestType_DirMask) == KUsbRequestType_DirToDev) - { - // Dir to device means host will send data out - ret = UsbShai::EControlTransferStageDataOut; - } - else - { - // Otherwise, there must be a datain stage follows - ret = UsbShai::EControlTransferStageDataIn; - } - - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "TSetupPkgParser::NextStage %d", ret)); - - return ret; - } - -// Base class of stage sm -TControlStageSm::TControlStageSm(DControlTransferManager& aTransferMgr): - iTransferMgr(aTransferMgr) - { - } - -void TControlStageSm::ChangeToStage(UsbShai::TControlStage aToStage) - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "<> TControlStageSm::ChangeToStage: %s",DebugName[aToStage])); - iTransferMgr.iCurrentStage = aToStage; - } - -void TControlStageSm::ClearPendingRead() - { - iTransferMgr.iReadPending = EFalse; - } - -// Code for DControlTransferManager -// - -DControlTransferManager::DControlTransferManager(MControlTransferIf& aCtrTransIf): - iCtrTransferIf(aCtrTransIf) - { - for(int i=0; iIsRequstAllowed(TControlTransferRequestRead)) - { - if(!iReadPending) - { - iReadPending = ETrue; - return CtrTransferIf().ProcessSetupEndpointZeroRead(); - } - else - { - // A read operation already on going, ignore this request - return KErrNone; - } - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID " !! SetupEndpointZeroRead discard")); - return KErrNotReady; - } - } - -TInt DControlTransferManager::SetupEndpointZeroWrite(const TUint8* aBuffer, TInt aLength, TBool aZlpReqd) - { - if(iState[iCurrentStage]->IsRequstAllowed(TControlTransferRequestWrite)) - { - return CtrTransferIf().ProcessSetupEndpointZeroWrite(aBuffer,aLength,aZlpReqd); - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID " !! SetupEndpointZeroWrite discard")); - return KErrNotReady; - } - } - -TInt DControlTransferManager::SendEp0ZeroByteStatusPacket() - { - if(iState[iCurrentStage]->IsRequstAllowed(TControlTransferRequestSendStatus)) - { - iCurrentStage = UsbShai::EControlTransferStageSetup; - return CtrTransferIf().ProcessSendEp0ZeroByteStatusPacket(); - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID " !! SendEp0ZeroByteStatusPacket discard")); - return KErrNotReady; - } - } - -TInt DControlTransferManager::StallEndpoint(TInt aRealEndpoint) - { - // Endpoint is stalled, we need to reset our state machine. - Reset(); - return CtrTransferIf().ProcessStallEndpoint(aRealEndpoint); - } - -void DControlTransferManager::Ep0SetupPacketProceed() - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID " !! Missed setup packet processed")); - CtrTransferIf().ProcessEp0SetupPacketProceed(); - } - -void DControlTransferManager::Ep0DataPacketProceed() - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID " !! Missed data packet processed")); - CtrTransferIf().ProcessEp0DataPacketProceed(); - } - -void DControlTransferManager::Reset() - { - iCurrentStage = UsbShai::EControlTransferStageSetup; - iReadPending = EFalse; - } - -void DControlTransferManager::Ep0RequestComplete(TUint8* aBuf, - TInt aCount, - TInt aError, - UsbShai::TControlPacketType aPktType) - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "> DControlTransferManager::Ep0RequestComplete, packet type: %s", DebugName[aPktType])); - // If a setup packet comes, update our local setup packet buffer first - if(aPktType == UsbShai::EControlPacketTypeSetup) - { - iPacketParser.Set(aBuf); - // This is the only place this variable to be reset. - iDataTransfered = 0; - } - - // RequestComplete will return ETrue if it can not handle a packet - // And it knows that some other sm can handle it. - // It will update the state to the one which can hanlde that packet first. - TBool furtherProcessNeeded = ETrue; - while(furtherProcessNeeded) - { - __KTRACE_OPT(KUSB, Kern::Printf(" We're at Stage: %s", DebugName[iCurrentStage])); - furtherProcessNeeded = iState[iCurrentStage]->RequestComplete(aCount,aError,aPktType); - __KTRACE_OPT(KUSB, Kern::Printf(" We're moved to stage: %s", DebugName[iCurrentStage])); - } - - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "< DControlTransferManager::Ep0RequestComplete")); - } - -// setup the state machine for a state -void DControlTransferManager::AddState(UsbShai::TControlStage aStage,TControlStageSm& aStageSm) - { - if( (aStage >= UsbShai::EControlTransferStageSetup) && (aStage < UsbShai::EControlTransferStageMax)) - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID " AddState(), Stage: %s", DebugName[aStage])); - iState[aStage] = &aStageSm; - } - } - -// *************** Code for SETUP state machines ************************************** -// -DSetupStageSm::DSetupStageSm(DControlTransferManager& aTransferMgr): - TControlStageSm(aTransferMgr) - { - } - -// WE are waiting a SETUP packet -TBool DSetupStageSm::RequestComplete(TInt aPktSize, TInt aError, UsbShai::TControlPacketType aPktType) - { - TBool ret = EFalse; - - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "DSetupStageSm::RequestComplete")); - - if(aPktType != UsbShai::EControlPacketTypeSetup) - { - // we just discard any non-setup packet - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "ALERT: DSetupStageSm - Non-Setup recieved")); - return ret; - } - - // change state to whatever returned from this call. - ChangeToStage(iTransferMgr.PktParser().NextStage()); - - // We're going to complete User's read request, consume the previous - // read operation - ClearPendingRead(); - - // Setup packet are always need to be processed - iTransferMgr.CtrTransferIf().ProcessSetupPacket(aPktSize,aError); - - return EFalse; - } - -TBool DSetupStageSm::IsRequstAllowed(TControlTransferRequest aRequest) - { - // Allow user to read, No other operation is allowed - TBool ret = (aRequest == TControlTransferRequestRead)?ETrue:EFalse; - - if( ! ret) - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "Warning: request %d was blocked at DSetupStageSm",aRequest)); - } - - return ret; - } - - -// *************** Code for DATA IN state machines ************************************** - -DDataInStageSm::DDataInStageSm(DControlTransferManager& aTransferMgr): - TControlStageSm(aTransferMgr) - { - } - -// We are waiting for a competion of DATA IN packet -TBool DDataInStageSm::RequestComplete(TInt aPktSize, TInt aError, UsbShai::TControlPacketType aPktType) - { - TInt completionCode = aError; - TBool furtherRequest = EFalse; - - switch(aPktType) - { - case UsbShai::EControlPacketTypeSetup: - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "ALERT: DDataInStageSm - Setup recieved")); - // Something goes wrong, host is abandoning the unfinished control transfer - completionCode = KErrGeneral; - - // Force SM restart at setup stage - ChangeToStage(UsbShai::EControlTransferStageSetup); - - // this packet is partially processed here - // need another SM to continue - furtherRequest = ETrue; - } - break; - - case UsbShai::EControlPacketTypeDataIn: - { - // PSL notifing us that the data had been sent to host - // next step is to wait for the status from Host - ChangeToStage(UsbShai::EControlTransferStageStatusOut); - - // In USB spec, a compete control transfer must inclue a status stage - // which is not case in reality,some PSL/Hardware will swallow the - // Status out report, so, we just complete client normally. - } - break; - - default: - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "ALERT: DDataInStageSm - %s recieved",DebugName[aPktType])); - - // Unexpected packet will be discard, and lead us reset state machine - // so that we can wait for next SETUP packet. - // Of course error will be report to any client if any there. - ChangeToStage(UsbShai::EControlTransferStageSetup); - completionCode = KErrGeneral; - } - break; - } - - iTransferMgr.CtrTransferIf().ProcessDataInPacket(aPktSize,completionCode); - - return furtherRequest; - } - -TBool DDataInStageSm::IsRequstAllowed(TControlTransferRequest aRequest) - { - // Only write is possible because host is waiting for data from us - TBool ret = (aRequest == TControlTransferRequestWrite)?ETrue:EFalse; - - if( ! ret) - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "Warning: request %d was blocked at DDataInStageSm",aRequest)); - } - - return ret; - }; - -// *************** Code for STATUS OUT state machines ************************************** -DStatusOutStageSm::DStatusOutStageSm(DControlTransferManager& aTransferMgr): - TControlStageSm(aTransferMgr) - { - } - -// We are waiting for a competion of STATUS OUT or a SETUP packet if PSL or hardware don't -// complete a status in packet -TBool DStatusOutStageSm::RequestComplete(TInt aPktSize, TInt aError, UsbShai::TControlPacketType aPktType) - { - TBool furtherRequest = EFalse; - TInt completionCode = aError; - - switch(aPktType) - { - case UsbShai::EControlPacketTypeSetup: - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "ALERT: DStatusOutStageSm - Setup recieved")); - // hw or PSL may not send back the status packet for a DATA OUT - // and we're ok for this, just back to EControlTransferStageSetup stage - - // Force SM restart at setup stage - ChangeToStage(UsbShai::EControlTransferStageSetup); - - // this packet is partially processed here - // need another SM to continue - furtherRequest = ETrue; - } - break; - - case UsbShai::EControlPacketTypeStatusOut: - { - // Force SM restart at setup stage - ChangeToStage(UsbShai::EControlTransferStageSetup); - } - break; - - default: - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "ALERT: DStatusOutStageSm - %s recieved",DebugName[aPktType])); - - // Unexpected packet will be discard, and lead us reset state machine - // so that we can wait for next SETUP packet. - // Of course error will be report to any client if any there. - ChangeToStage(UsbShai::EControlTransferStageSetup); - completionCode = KErrGeneral; - } - break; - } - - iTransferMgr.CtrTransferIf().ProcessStatusOutPacket(completionCode); - - return furtherRequest; - - } - -TBool DStatusOutStageSm::IsRequstAllowed(TControlTransferRequest aRequest) - { - // Read is ok since client don't care the status out stage. - // and this lead no hurt to anybody. - TBool ret = (aRequest == TControlTransferRequestRead)?ETrue:EFalse; - - if( ! ret) - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "Warning: request %d was blocked at DStatusOutStageSm",aRequest)); - } - - return ret; - }; - -// *************** Code for DATA OUT state machines ************************************** -// -DDataOutStageSm::DDataOutStageSm(DControlTransferManager& aTransferMgr): - TControlStageSm(aTransferMgr) - { - } - -TBool DDataOutStageSm::RequestComplete(TInt aPktSize, TInt aError, UsbShai::TControlPacketType aPktType) - { - TBool furtherRequest = EFalse; - TInt completionCode = aError; - - switch(aPktType) - { - case UsbShai::EControlPacketTypeSetup: - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "ALERT: DDataOutStageSm - Setup recieved")); - // Host is abandon the previous Transfer - completionCode = KErrGeneral; - - // Force SM restart at setup stage - ChangeToStage(UsbShai::EControlTransferStageSetup); - - // this packet is partially processed here - // need another SM to continue - furtherRequest = ETrue; - } - break; - - case UsbShai::EControlPacketTypeDataOut: - { - iTransferMgr.DataReceived(aPktSize); - - if(!iTransferMgr.IsMoreBytesNeeded()) - { - // We had recieved enough bytes as indicated by the setup - // packet, Data stage is finished. enter STATUS IN state - ChangeToStage(UsbShai::EControlTransferStageStatusIn); - } - } - break; - - case UsbShai::EControlPacketTypeStatusIn: - { - // Status in had been sent to host - // return and waiting for new SETUP - ChangeToStage(UsbShai::EControlTransferStageSetup); - } - break; - - default: - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "ALERT: DDataOutStageSm - %s recieved",DebugName[aPktType])); - - // Unexpected packet will be discard, and lead us reset state machine - // so that we can wait for next SETUP packet. - // Of course error will be report to any client if any there. - ChangeToStage(UsbShai::EControlTransferStageSetup); - completionCode = KErrGeneral; - } - break; - } - - ClearPendingRead(); - iTransferMgr.CtrTransferIf().ProcessDataOutPacket(aPktSize,completionCode); - - return furtherRequest; - } - -TBool DDataOutStageSm::IsRequstAllowed(TControlTransferRequest aRequest) - { - // only read operation is allowed in data out stage. - TBool ret = (aRequest == TControlTransferRequestRead)?ETrue:EFalse; - - if( ! ret) - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "Warning: request %d was blocked at DDataOutStageSm",aRequest)); - } - - return ret; - }; - -// *************** Code for DATA OUT state machines ************************************** -// -DStatusInStageSm::DStatusInStageSm(DControlTransferManager& aTransferMgr): - TControlStageSm(aTransferMgr) - { - } - -TBool DStatusInStageSm::RequestComplete(TInt aPktSize, TInt aError, UsbShai::TControlPacketType aPktType) - { - TBool furtherRequest = EFalse; - TInt completionCode = KErrNone; - - switch(aPktType) - { - case UsbShai::EControlPacketTypeSetup: - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "ALERT: DStatusInStageSm - Setup recieved")); - // Status in is an optional for PSL - // If we received a setup packet here, we assume the previous - // status in packet had been successfully sent to host. - - // Force SM restart at setup stage - ChangeToStage(UsbShai::EControlTransferStageSetup); - - // this packet is partially processed here - // need another SM to continue - furtherRequest = ETrue; - } - break; - - case UsbShai::EControlPacketTypeStatusIn: - { - // Status in had been recieved, monitor setup packet then. - ChangeToStage(UsbShai::EControlTransferStageSetup); - } - break; - - default: - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "ALERT: DStatusInStageSm - %s recieved",DebugName[aPktType])); - - // Unexpected packet will be discard, and lead us reset state machine - // so that we can wait for next SETUP packet. - // Of course error will be report to any client if any there. - ChangeToStage(UsbShai::EControlTransferStageSetup); - completionCode = KErrGeneral; - } - break; - } - - iTransferMgr.CtrTransferIf().ProcessStatusInPacket(completionCode); - - return furtherRequest; - } - -TBool DStatusInStageSm::IsRequstAllowed(TControlTransferRequest aRequest) - { - // Read is ok even we are wait for the client to send a zero status packet - TBool ret = ((aRequest == TControlTransferRequestSendStatus) || - (aRequest == TControlTransferRequestRead))?ETrue:EFalse; - - if( ! ret) - { - __KTRACE_OPT(KUSB, Kern::Printf(CTSM_ID "Warning: request %d was blocked at DStatusInStageSm",aRequest)); - } - - return ret; - } - -// End of file - diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/pdd/pil/src/descriptors.cpp --- a/usbdrv/peripheral/pdd/pil/src/descriptors.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2362 +0,0 @@ -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32/drivers/usbcc/descriptors.cpp -// Platform independent layer (PIL) of the USB Device controller driver: -// USB descriptor handling and management. -// -// - -/** - @file descriptors.cpp - @internalTechnology -*/ - -#include -// #include -#include - - -// Debug Support -static const char KUsbPanicCat[] = "USB PIL"; - - -// --- TUsbcDescriptorBase - -TUsbcDescriptorBase::TUsbcDescriptorBase() - : -#ifdef USB_SUPPORTS_SET_DESCRIPTOR_REQUEST - iIndex(0), -#endif - iBufPtr(NULL, 0) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorBase::TUsbcDescriptorBase()")); - } - - -TUsbcDescriptorBase::~TUsbcDescriptorBase() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorBase::~TUsbcDescriptorBase()")); - } - - -void TUsbcDescriptorBase::SetByte(TInt aPosition, TUint8 aValue) - { - iBufPtr[aPosition] = aValue; - } - - -void TUsbcDescriptorBase::SetWord(TInt aPosition, TUint16 aValue) - { - *reinterpret_cast(&iBufPtr[aPosition]) = SWAP_BYTES_16(aValue); - } - - -TUint8 TUsbcDescriptorBase::Byte(TInt aPosition) const - { - return iBufPtr[aPosition]; - } - - -TUint16 TUsbcDescriptorBase::Word(TInt aPosition) const - { - return SWAP_BYTES_16(*reinterpret_cast(&iBufPtr[aPosition])); - } - - -void TUsbcDescriptorBase::GetDescriptorData(TDes8& aBuffer) const - { - aBuffer = iBufPtr; - } - - -TInt TUsbcDescriptorBase::GetDescriptorData(TUint8* aBuffer) const - { - memcpy(aBuffer, iBufPtr.Ptr(), Size()); - return Size(); - } - - -TInt TUsbcDescriptorBase::GetDescriptorData(TUint8* aBuffer, TUint aMaxSize) const - { - if (aMaxSize < Size()) - { - // No use to copy only half a descriptor - return 0; - } - return GetDescriptorData(aBuffer); - } - - -const TDes8& TUsbcDescriptorBase::DescriptorData() const - { - return iBufPtr; - } - - -TDes8& TUsbcDescriptorBase::DescriptorData() - { - return iBufPtr; - } - - -TUint TUsbcDescriptorBase::Size() const - { - return iBufPtr.Size(); - } - - -TUint8 TUsbcDescriptorBase::Type() const - { - return iBufPtr[1]; - } - - -void TUsbcDescriptorBase::UpdateFs() - { - // virtual function can be overridden in derived classes. - return; - } - - -void TUsbcDescriptorBase::UpdateHs() - { - // virtual function can be overridden in derived classes. - return; - } - - -void TUsbcDescriptorBase::SetBufferPointer(const TDesC8& aDes) - { - iBufPtr.Set(const_cast(aDes.Ptr()), aDes.Size(), aDes.Size()); - } - - -// --- TUsbcDeviceDescriptor - -TUsbcDeviceDescriptor::TUsbcDeviceDescriptor() - : iBuf() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDeviceDescriptor::TUsbcDeviceDescriptor()")); - } - - -TUsbcDeviceDescriptor* TUsbcDeviceDescriptor::New(TUint8 aDeviceClass, TUint8 aDeviceSubClass, - TUint8 aDeviceProtocol, TUint8 aMaxPacketSize0, - TUint16 aVendorId, TUint16 aProductId, - TUint16 aDeviceRelease, TUint8 aNumConfigurations) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDeviceDescriptor::New()")); - TUsbcDeviceDescriptor* self = new TUsbcDeviceDescriptor(); - if (self) - { - if (self->Construct(aDeviceClass, aDeviceSubClass, aDeviceProtocol, aMaxPacketSize0, aVendorId, - aProductId, aDeviceRelease, aNumConfigurations) != KErrNone) - { - delete self; - return NULL; - } - } - return self; - } - - -TInt TUsbcDeviceDescriptor::Construct(TUint8 aDeviceClass, TUint8 aDeviceSubClass, TUint8 aDeviceProtocol, - TUint8 aMaxPacketSize0, TUint16 aVendorId, TUint16 aProductId, - TUint16 aDeviceRelease, TUint8 aNumConfigurations) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDeviceDescriptor::Construct()")); - iBuf.SetMax(); - SetBufferPointer(iBuf); - iBuf[0] = iBuf.Size(); // bLength - iBuf[1] = KUsbDescType_Device; // bDescriptorType - SetWord(2, KUsbcUsbVersion); // bcdUSB - iBuf[4] = aDeviceClass; // bDeviceClass - iBuf[5] = aDeviceSubClass; // bDeviceSubClass - iBuf[6] = aDeviceProtocol; // bDeviceProtocol - iBuf[7] = aMaxPacketSize0; // bMaxPacketSize0 - SetWord(8, aVendorId); // idVendor - SetWord(10, aProductId); // idProduct - SetWord(12, aDeviceRelease); // bcdDevice - iBuf[14] = 0; // iManufacturer - iBuf[15] = 0; // iProduct - iBuf[16] = 0; // iSerialNumber - iBuf[17] = aNumConfigurations; // bNumConfigurations - iEp0Size_Fs = aMaxPacketSize0; - return KErrNone; - } - - -void TUsbcDeviceDescriptor::UpdateFs() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDeviceDescriptor::UpdateFs()")); - SetByte(7, iEp0Size_Fs); // bMaxPacketSize0 - } - - -void TUsbcDeviceDescriptor::UpdateHs() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDeviceDescriptor::UpdateHs()")); - SetByte(7, 64); // bMaxPacketSize0 - } - - -// --- TUsbcDeviceQualifierDescriptor - -TUsbcDeviceQualifierDescriptor::TUsbcDeviceQualifierDescriptor() - : iBuf() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDeviceDescriptor::TUsbcDeviceQualifierDescriptor()")); - } - - -TUsbcDeviceQualifierDescriptor* TUsbcDeviceQualifierDescriptor::New(TUint8 aDeviceClass, - TUint8 aDeviceSubClass, - TUint8 aDeviceProtocol, - TUint8 aMaxPacketSize0, - TUint8 aNumConfigurations, - TUint8 aReserved) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDeviceQualifierDescriptor::New()")); - TUsbcDeviceQualifierDescriptor* self = new TUsbcDeviceQualifierDescriptor(); - if (self) - { - if (self->Construct(aDeviceClass, aDeviceSubClass, aDeviceProtocol, aMaxPacketSize0, - aNumConfigurations, aReserved) != KErrNone) - { - delete self; - return NULL; - } - } - return self; - } - - -TInt TUsbcDeviceQualifierDescriptor::Construct(TUint8 aDeviceClass, TUint8 aDeviceSubClass, - TUint8 aDeviceProtocol, TUint8 aMaxPacketSize0, - TUint8 aNumConfigurations, TUint8 aReserved) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDeviceQualifierDescriptor::Construct()")); - iBuf.SetMax(); - SetBufferPointer(iBuf); - iBuf[0] = iBuf.Size(); // bLength - iBuf[1] = KUsbDescType_DeviceQualifier; // bDescriptorType - SetWord(2, KUsbcUsbVersion); // bcdUSB - iBuf[4] = aDeviceClass; // bDeviceClass - iBuf[5] = aDeviceSubClass; // bDeviceSubClass - iBuf[6] = aDeviceProtocol; // bDeviceProtocol - iBuf[7] = aMaxPacketSize0; // bMaxPacketSize0 - iBuf[8] = aNumConfigurations; // bNumConfigurations - if (aReserved) aReserved = 0; - iBuf[9] = aReserved; // Reserved for future use, must be zero - iEp0Size_Fs = aMaxPacketSize0; - return KErrNone; - } - - -void TUsbcDeviceQualifierDescriptor::UpdateFs() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDeviceQualifierDescriptor::UpdateFs()")); - // Here we do exactly the opposite of what's done in the Device descriptor (as this one's - // documenting the 'other than the current speed'). - SetByte(7, 64); // bMaxPacketSize0 - } - - -void TUsbcDeviceQualifierDescriptor::UpdateHs() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDeviceQualifierDescriptor::UpdateHs()")); - // Here we do exactly the opposite of what's done in the Device descriptor (as this one's - // documenting the 'other than the current speed'). - SetByte(7, iEp0Size_Fs); // bMaxPacketSize0 - } - - -// --- TUsbcConfigDescriptor - -TUsbcConfigDescriptor::TUsbcConfigDescriptor() - : iBuf() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcConfigDescriptor::TUsbcConfigDescriptor()")); - } - - -TUsbcConfigDescriptor* TUsbcConfigDescriptor::New(TUint8 aConfigurationValue, TBool aSelfPowered, - TBool aRemoteWakeup, TUint16 aMaxPower) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcConfigDescriptor::New()")); - TUsbcConfigDescriptor* self = new TUsbcConfigDescriptor(); - if (self) - { - if (self->Construct(aConfigurationValue, aSelfPowered, aRemoteWakeup, aMaxPower) != KErrNone) - { - delete self; - return NULL; - } - } - return self; - } - - -TInt TUsbcConfigDescriptor::Construct(TUint8 aConfigurationValue, TBool aSelfPowered, - TBool aRemoteWakeup, TUint16 aMaxPower) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcConfigDescriptor::Construct()")); - iBuf.SetMax(); - SetBufferPointer(iBuf); - iBuf[0] = iBuf.Size(); // bLength - iBuf[1] = KUsbDescType_Config; // bDescriptorType - SetWord(2, KUsbDescSize_Config); // wTotalLength - iBuf[4] = 0; // bNumInterfaces - iBuf[5] = aConfigurationValue; // bConfigurationValue - iBuf[6] = 0; // iConfiguration - iBuf[7] = 0x80 | - (aSelfPowered ? KUsbDevAttr_SelfPowered : 0) | - (aRemoteWakeup ? KUsbDevAttr_RemoteWakeup : 0); // bmAttributes (bit 7 always 1) - if (aMaxPower > 510) - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid value for bMaxPower: %d", aMaxPower)); - iBuf[8] = aMaxPower / 2; // bMaxPower (2mA units!) - return KErrNone; - } - - -// --- TUsbcInterfaceDescriptor - -TUsbcInterfaceDescriptor::TUsbcInterfaceDescriptor() - : iBuf() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcInterfaceDescriptor::TUsbcInterfaceDescriptor()")); - } - - -TUsbcInterfaceDescriptor* TUsbcInterfaceDescriptor::New(TUint8 aInterfaceNumber, TUint8 aAlternateSetting, - TInt aNumEndpoints, const TUsbcClassInfo& aClassInfo) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcInterfaceDescriptor::New()")); - TUsbcInterfaceDescriptor* self = new TUsbcInterfaceDescriptor(); - if (self) - { - if (self->Construct(aInterfaceNumber, aAlternateSetting, aNumEndpoints, aClassInfo) != KErrNone) - { - delete self; - return NULL; - } - } - return self; - } - - -TInt TUsbcInterfaceDescriptor::Construct(TUint8 aInterfaceNumber, TUint8 aAlternateSetting, - TInt aNumEndpoints, const TUsbcClassInfo& aClassInfo) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcInterfaceDescriptor::Construct()")); - iBuf.SetMax(); - SetBufferPointer(iBuf); - iBuf[0] = iBuf.Size(); // bLength - iBuf[1] = KUsbDescType_Interface; // bDescriptorType - iBuf[2] = aInterfaceNumber; // bInterfaceNumber - iBuf[3] = aAlternateSetting; // bAlternateSetting - iBuf[4] = aNumEndpoints; // bNumEndpoints - iBuf[5] = aClassInfo.iClassNum; // bInterfaceClass - iBuf[6] = aClassInfo.iSubClassNum; // bInterfaceSubClass - iBuf[7] = aClassInfo.iProtocolNum; // bInterfaceProtocol - iBuf[8] = 0; // iInterface - return KErrNone; - } - - -// --- TUsbcEndpointDescriptorBase - -TUsbcEndpointDescriptorBase::TUsbcEndpointDescriptorBase() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcEndpointDescriptorBase::TUsbcEndpointDescriptorBase()")); - } - - -TInt TUsbcEndpointDescriptorBase::Construct(const TUsbcEndpointInfo& aEpInfo) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcEndpointDescriptorBase::Construct()")); - // Adjust FS/HS endpoint sizes - if (aEpInfo.AdjustEpSizes(iEpSize_Fs, iEpSize_Hs) != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Unknown endpoint type: %d", aEpInfo.iType)); - } - __KTRACE_OPT(KUSB, Kern::Printf(" Now set: iEpSize_Fs=%d iEpSize_Hs=%d (aEpInfo.iSize=%d)", - iEpSize_Fs, iEpSize_Hs, aEpInfo.iSize)); - - // Adjust HS endpoint size for additional transactions - if ((aEpInfo.iType == UsbShai::KUsbEpTypeIsochronous) || (aEpInfo.iType == UsbShai::KUsbEpTypeInterrupt)) - { - if ((aEpInfo.iTransactions > 0) && (aEpInfo.iTransactions < 3)) - { - // Bits 12..11 specify the number of additional transactions per microframe - iEpSize_Hs |= (aEpInfo.iTransactions << 12); - __KTRACE_OPT(KUSB, Kern::Printf(" Adjusted for add. transact.: iEpSize_Hs=0x%02x " - "(aEpInfo.iTransactions=%d)", - iEpSize_Hs, aEpInfo.iTransactions)); - } - else if (aEpInfo.iTransactions != 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: Invalid iTransactions value: %d (ignored)", - aEpInfo.iTransactions)); - } - } - - // Adjust HS polling interval - TUsbcEndpointInfo info(aEpInfo); // create local writeable copy - if (info.AdjustPollInterval() != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Unknown ep type (%d) or invalid interval value (%d)", - info.iType, info.iInterval)); - } - iInterval_Fs = info.iInterval; - iInterval_Hs = info.iInterval_Hs; - __KTRACE_OPT(KUSB, Kern::Printf(" Now set: iInterval_Fs=%d iInterval_Hs=%d", - iInterval_Fs, iInterval_Hs)); - return KErrNone; - } - - -void TUsbcEndpointDescriptorBase::UpdateFs() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcEndpointDescriptorBase::UpdateFs()")); - // (TUsbcEndpointDescriptorBase's FS/HS endpoint sizes and interval values got - // adjusted in its Construct() method.) - SetWord(4, iEpSize_Fs); // wMaxPacketSize - SetByte(6, iInterval_Fs); // bInterval - } - - -void TUsbcEndpointDescriptorBase::UpdateHs() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcEndpointDescriptorBase::UpdateHs()")); - // (TUsbcEndpointDescriptorBase's FS/HS endpoint sizes and interval values get - // adjusted in its Construct() method.) - SetWord(4, iEpSize_Hs); // wMaxPacketSize - SetByte(6, iInterval_Hs); // bInterval - } - - -// --- TUsbcEndpointDescriptor - -TUsbcEndpointDescriptor::TUsbcEndpointDescriptor() - : iBuf() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcEndpointDescriptor::TUsbcEndpointDescriptor()")); - } - - -TUsbcEndpointDescriptor* TUsbcEndpointDescriptor::New(TUint8 aEndpointAddress, - const TUsbcEndpointInfo& aEpInfo) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcEndpointDescriptor::New()")); - TUsbcEndpointDescriptor* self = new TUsbcEndpointDescriptor(); - if (self) - { - if (self->Construct(aEndpointAddress, aEpInfo) != KErrNone) - { - delete self; - return NULL; - } - } - return self; - } - - -TInt TUsbcEndpointDescriptor::Construct(TUint8 aEndpointAddress, const TUsbcEndpointInfo& aEpInfo) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcEndpointDescriptor::Construct()")); - (void) TUsbcEndpointDescriptorBase::Construct(aEpInfo); // Init Base class - iBuf.SetMax(); - SetBufferPointer(iBuf); - iBuf[0] = iBuf.Size(); // bLength - iBuf[1] = KUsbDescType_Endpoint; // bDescriptorType - iBuf[2] = aEndpointAddress; // bEndpointAddress - iBuf[3] = EpTypeMask2Value(aEpInfo.iType); // bmAttributes - SetWord(4, iEpSize_Fs); // wMaxPacketSize (default is FS) - iBuf[6] = iInterval_Fs; // bInterval (default is FS) - return KErrNone; - } - - -// --- TUsbcAudioEndpointDescriptor - -TUsbcAudioEndpointDescriptor::TUsbcAudioEndpointDescriptor() - : iBuf() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcAudioEndpointDescriptor::TUsbcAudioEndpointDescriptor()")); - } - - -TUsbcAudioEndpointDescriptor* TUsbcAudioEndpointDescriptor::New(TUint8 aEndpointAddress, - const TUsbcEndpointInfo& aEpInfo) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcAudioEndpointDescriptor::New()")); - TUsbcAudioEndpointDescriptor* self = new TUsbcAudioEndpointDescriptor(); - if (self) - { - if (self->Construct(aEndpointAddress, aEpInfo) != KErrNone) - { - delete self; - return NULL; - } - } - return self; - } - - -TInt TUsbcAudioEndpointDescriptor::Construct(TUint8 aEndpointAddress, const TUsbcEndpointInfo& aEpInfo) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcAudioEndpointDescriptor::Construct()")); - (void) TUsbcEndpointDescriptorBase::Construct(aEpInfo); // Init Base class - iBuf.SetMax(); - SetBufferPointer(iBuf); - iBuf[0] = iBuf.Size(); // bLength - iBuf[1] = KUsbDescType_Endpoint; // bDescriptorType - iBuf[2] = aEndpointAddress; // bEndpointAddress - iBuf[3] = EpTypeMask2Value(aEpInfo.iType); // bmAttributes - SetWord(4, iEpSize_Fs); // wMaxPacketSize (default is FS) - iBuf[6] = iInterval_Fs; // bInterval (default is FS) - iBuf[7] = 0; - iBuf[8] = 0; - return KErrNone; - } - - -// --- TUsbcOtgDescriptor - -TUsbcOtgDescriptor* TUsbcOtgDescriptor::New(TBool aHnpSupport, TBool aSrpSupport) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcOtgDescriptor::New()")); - TUsbcOtgDescriptor* self = new TUsbcOtgDescriptor(); - if (self && (self->Construct(aHnpSupport, aSrpSupport) != KErrNone)) - { - delete self; - return NULL; - } - return self; - } - - -TUsbcOtgDescriptor::TUsbcOtgDescriptor() - : iBuf() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcOtgDescriptor::TUsbcOtgDescriptor()")); - } - - -TInt TUsbcOtgDescriptor::Construct(TBool aHnpSupport, TBool aSrpSupport) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcOtgDescriptor::Construct()")); - iBuf.SetMax(); - SetBufferPointer(iBuf); - iBuf[0] = iBuf.Size(); // bLength - iBuf[1] = KUsbDescType_Otg; // bDescriptorType - iBuf[2] = (aHnpSupport ? KUsbOtgAttr_HnpSupp : 0) | - (aSrpSupport ? KUsbOtgAttr_SrpSupp : 0); // bmAttributes - return KErrNone; - } - - -// --- TUsbcClassSpecificDescriptor - -TUsbcClassSpecificDescriptor::TUsbcClassSpecificDescriptor() - : iBuf(NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcClassSpecificDescriptor::TUsbcClassSpecificDescriptor()")); - } - - -TUsbcClassSpecificDescriptor::~TUsbcClassSpecificDescriptor() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcClassSpecificDescriptor::~TUsbcClassSpecificDescriptor()")); - delete iBuf; - } - - -TUsbcClassSpecificDescriptor* TUsbcClassSpecificDescriptor::New(TUint8 aType, TInt aSize) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcClassSpecificDescriptor::New()")); - TUsbcClassSpecificDescriptor* self = new TUsbcClassSpecificDescriptor(); - if (self) - { - if (self->Construct(aType, aSize) != KErrNone) - { - delete self; - return NULL; - } - } - return self; - } - - -TInt TUsbcClassSpecificDescriptor::Construct(TUint8 aType, TInt aSize) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcClassSpecificDescriptor::Construct()")); - iBuf = HBuf8::New(aSize); - if (!iBuf) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Allocation of CS desc buffer failed")); - return KErrNoMemory; - } - iBuf->SetMax(); - SetBufferPointer(*iBuf); - SetByte(1, aType); // bDescriptorType - return KErrNone; - } - - -// --- TUsbcStringDescriptorBase - -TUsbcStringDescriptorBase::TUsbcStringDescriptorBase() - : /*iIndex(0),*/ iSBuf(0), iBufPtr(NULL, 0) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcStringDescriptorBase::TUsbcStringDescriptorBase()")); - } - - -TUsbcStringDescriptorBase::~TUsbcStringDescriptorBase() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcStringDescriptorBase::~TUsbcStringDescriptorBase()")); - } - - -TUint16 TUsbcStringDescriptorBase::Word(TInt aPosition) const - { - if (aPosition <= 1) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Word(%d) in string descriptor " - "(TUsbcStringDescriptorBase::Word)", aPosition)); - return 0; - } - else - { - // since iBufPtr[0] is actually string descriptor byte index 2, - // we have to subtract 2 from the absolute position. - return SWAP_BYTES_16(*reinterpret_cast(&iBufPtr[aPosition - 2])); - } - } - - -void TUsbcStringDescriptorBase::SetWord(TInt aPosition, TUint16 aValue) - { - if (aPosition <= 1) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: SetWord(%d) in string descriptor " - "(TUsbcStringDescriptorBase::SetWord)", aPosition)); - return; - } - else - { - // since iBufPtr[0] is actually string descriptor byte index 2, - // we have to subtract 2 from the absolute position. - *reinterpret_cast(&iBufPtr[aPosition - 2]) = SWAP_BYTES_16(aValue); - } - } - - -TInt TUsbcStringDescriptorBase::GetDescriptorData(TUint8* aBuffer) const - { - aBuffer[0] = iSBuf[0]; - aBuffer[1] = iSBuf[1]; - memcpy(&aBuffer[2], iBufPtr.Ptr(), iBufPtr.Size()); - return Size(); - } - - -TInt TUsbcStringDescriptorBase::GetDescriptorData(TUint8* aBuffer, TUint aMaxSize) const - { - if (aMaxSize < Size()) - { - // No use to copy only half a string - return 0; - } - return GetDescriptorData(aBuffer); - } - - -const TDes8& TUsbcStringDescriptorBase::StringData() const - { - return iBufPtr; - } - - -TDes8& TUsbcStringDescriptorBase::StringData() - { - return iBufPtr; - } - - -TUint TUsbcStringDescriptorBase::Size() const - { - return iSBuf[0]; - } - - -void TUsbcStringDescriptorBase::SetBufferPointer(const TDesC8& aDes) - { - iBufPtr.Set(const_cast(aDes.Ptr()), aDes.Size(), aDes.Size()); - } - - -// --- TUsbcStringDescriptor - -TUsbcStringDescriptor::TUsbcStringDescriptor() - : iBuf(NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcStringDescriptor::TUsbcStringDescriptor()")); - } - - -TUsbcStringDescriptor::~TUsbcStringDescriptor() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcStringDescriptor::~TUsbcStringDescriptor()")); - delete iBuf; - } - - -TUsbcStringDescriptor* TUsbcStringDescriptor::New(const TDesC8& aString) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcStringDescriptor::New")); - TUsbcStringDescriptor* self = new TUsbcStringDescriptor(); - if (self) - { - if (self->Construct(aString) != KErrNone) - { - delete self; - return NULL; - } - } - return self; - } - - -TInt TUsbcStringDescriptor::Construct(const TDesC8& aString) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcStringDescriptor::Construct")); - iBuf = HBuf8::New(aString.Size()); // bytes, not UNICODE chars - if (!iBuf) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Allocation of string buffer failed")); - return KErrNoMemory; - } - iBuf->SetMax(); - SetBufferPointer(*iBuf); - iBufPtr.Copy(aString); - iSBuf.SetMax(); - iSBuf[0] = iBuf->Size() + 2; // Bytes - iSBuf[1] = KUsbDescType_String; - return KErrNone; - } - - -// --- TUsbcLangIdDescriptor - -TUsbcLangIdDescriptor::TUsbcLangIdDescriptor() - : iBuf(NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcLangIdDescriptor::TUsbcLangIdDescriptor()")); - } - - -TUsbcLangIdDescriptor::~TUsbcLangIdDescriptor() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcLangIdDescriptor::~TUsbcLangIdDescriptor()")); - } - - -TUsbcLangIdDescriptor* TUsbcLangIdDescriptor::New(TUint16 aLangId) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcLangIdDescriptor::New")); - TUsbcLangIdDescriptor* self = new TUsbcLangIdDescriptor(); - if (self) - { - if (self->Construct(aLangId) != KErrNone) - { - delete self; - return NULL; - } - } - return self; - } - - -TInt TUsbcLangIdDescriptor::Construct(TUint16 aLangId) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcLangIdDescriptor::Construct")); - iBuf.SetMax(); - SetBufferPointer(iBuf); - iBufPtr[0] = LowByte(SWAP_BYTES_16(aLangId)); // Language ID value - iBufPtr[1] = HighByte(SWAP_BYTES_16(aLangId)); - iSBuf.SetMax(); - iSBuf[0] = iBuf.Size() + 2; // Bytes - iSBuf[1] = KUsbDescType_String; - return KErrNone; - } - - -// --- TUsbcDescriptorPool - -TUsbcDescriptorPool::TUsbcDescriptorPool(TUint8* aEp0_TxBuf) -// -// The constructor for this class. -// - : iDescriptors(), iStrings(), iIfcIdx(0), iEp0_TxBuf(aEp0_TxBuf), iHighSpeed(EFalse) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::TUsbcDescriptorPool()")); - } - - -TUsbcDescriptorPool::~TUsbcDescriptorPool() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::~TUsbcDescriptorPool()")); - // The destructor of each object is called before the objects themselves are destroyed. - __KTRACE_OPT(KUSB, Kern::Printf(" iDescriptors.Count(): %d", iDescriptors.Count())); - iDescriptors.ResetAndDestroy(); - __KTRACE_OPT(KUSB, Kern::Printf(" iStrings.Count(): %d", iStrings.Count())); - iStrings.ResetAndDestroy(); - } - - -TInt TUsbcDescriptorPool::Init(TUsbcDeviceDescriptor* aDeviceDesc, TUsbcConfigDescriptor* aConfigDesc, - TUsbcLangIdDescriptor* aLangId, TUsbcStringDescriptor* aManufacturer, - TUsbcStringDescriptor* aProduct, TUsbcStringDescriptor* aSerialNum, - TUsbcStringDescriptor* aConfig, TUsbcOtgDescriptor* aOtgDesc) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::Init()")); - if (!aDeviceDesc || !aConfigDesc) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: No Device or Config descriptor specified")); - return KErrArgument; - } - for (TInt n = 0; n < KDescPosition_FirstAvailable; n++) - { - iDescriptors.Append(NULL); - } - __ASSERT_DEBUG((iDescriptors.Count() == KDescPosition_FirstAvailable), - Kern::Printf(" Error: iDescriptors.Count() (%d) != KDescPosition_FirstAvailable (%d)", - iDescriptors.Count(), KDescPosition_FirstAvailable)); - iDescriptors[KDescPosition_Device] = aDeviceDesc; - iDescriptors[KDescPosition_Config] = aConfigDesc; - if (aOtgDesc) - { - iDescriptors[KDescPosition_Otg] = aOtgDesc; - // Update the config descriptor's wTotalLength field - UpdateConfigDescriptorLength(KUsbDescSize_Otg); - } - if (!aLangId) - { - // USB spec 9.6.7 says: "String index zero for all languages returns a string descriptor - // that contains an array of two-byte LANGID codes supported by the device. ... - // USB devices that omit all string descriptors must not return an array of LANGID codes." - // So if we have at least one string descriptor, we must also have a LANGID descriptor. - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: No LANGID string descriptor specified")); - return KErrArgument; - } - iStrings.Insert(aLangId, KStringPosition_Langid); - iStrings.Insert(aManufacturer, KStringPosition_Manufact); - iStrings.Insert(aProduct, KStringPosition_Product); - iStrings.Insert(aSerialNum, KStringPosition_Serial); - iStrings.Insert(aConfig, KStringPosition_Config); - __ASSERT_DEBUG((iStrings.Count() == 5), - Kern::Printf(" Error: iStrings.Count() != 5 (%d)", iStrings.Count())); -#ifdef _DEBUG - for (TInt i = KStringPosition_Langid; i <= KStringPosition_Config; i++) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool.iStrings[%d] = 0x%x", i, iStrings[i])); - } -#endif - // Set string indices - if (aManufacturer) - iDescriptors[KDescPosition_Device]->SetByte(KUsbDescStringIndex_Manufact, - KStringPosition_Manufact); - if (aProduct) - iDescriptors[KDescPosition_Device]->SetByte(KUsbDescStringIndex_Product, - KStringPosition_Product); - if (aSerialNum) - iDescriptors[KDescPosition_Device]->SetByte(KUsbDescStringIndex_Serial, - KStringPosition_Serial); - if (aConfig) - iDescriptors[KDescPosition_Config]->SetByte(KUsbDescStringIndex_Config, - KStringPosition_Config); - return KErrNone; - } - - -TInt TUsbcDescriptorPool::InitHs() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::InitHs()")); - __ASSERT_DEBUG((iDescriptors.Count() >= KDescPosition_FirstAvailable), - Kern::Printf(" Error: Call Init() first)")); - - TUsbcDeviceQualifierDescriptor* const dq_desc = TUsbcDeviceQualifierDescriptor::New( - iDescriptors[KDescPosition_Device]->Byte(4), // aDeviceClass - iDescriptors[KDescPosition_Device]->Byte(5), // aDeviceSubClass - iDescriptors[KDescPosition_Device]->Byte(6), // aDeviceProtocol - iDescriptors[KDescPosition_Device]->Byte(7), // aMaxPacketSize0 - iDescriptors[KDescPosition_Device]->Byte(17)); // aNumConfigurations - if (!dq_desc) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Memory allocation for dev qualif desc failed.")); - return KErrGeneral; - } - iDescriptors[KDescPosition_DeviceQualifier] = dq_desc; - - TUsbcOtherSpeedConfigDescriptor* const osc_desc = TUsbcOtherSpeedConfigDescriptor::New( - iDescriptors[KDescPosition_Config]->Byte(5), // aConfigurationValue - iDescriptors[KDescPosition_Config]->Byte(7) & KUsbDevAttr_SelfPowered, // aSelfPowered - iDescriptors[KDescPosition_Config]->Byte(7) & KUsbDevAttr_RemoteWakeup, // aRemoteWakeup - iDescriptors[KDescPosition_Config]->Byte(8) * 2); // aMaxPower (mA) - if (!osc_desc) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Memory allocation for other speed conf desc failed.")); - return KErrGeneral; - } - - // We need to set the bDescriptorType field manually, as that's the only one - // that differs from a Configuration descriptor. - osc_desc->SetByte(1, KUsbDescType_OtherSpeedConfig); - - // Also, initially we set the iConfiguration string index to the same value as - // in the Configuration descriptor. - osc_desc->SetByte(KUsbDescStringIndex_Config, - iDescriptors[KDescPosition_Config]->Byte(KUsbDescStringIndex_Config)); - - iDescriptors[KDescPosition_OtherSpeedConfig] = osc_desc; - - return KErrNone; - } - - -TInt TUsbcDescriptorPool::UpdateDescriptorsFs() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::UpdateDescriptorsFs()")); - const TInt count = iDescriptors.Count(); - for (TInt i = KDescPosition_FirstAvailable; i < count; i++) - { - TUsbcDescriptorBase* const ptr = iDescriptors[i]; - ptr->UpdateFs(); - } - iHighSpeed = EFalse; - return KErrNone; - } - - -TInt TUsbcDescriptorPool::UpdateDescriptorsHs() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::UpdateDescriptorsHs()")); - const TInt count = iDescriptors.Count(); - for (TInt i = KDescPosition_FirstAvailable; i < count; i++) - { - TUsbcDescriptorBase* const ptr = iDescriptors[i]; - ptr->UpdateHs(); - } - iHighSpeed = ETrue; - return KErrNone; - } - - -// -// An error can be indicated by either a return value != KErrNone or by a descriptor size == 0. -// -TInt TUsbcDescriptorPool::FindDescriptor(TUint8 aType, TUint8 aIndex, TUint16 aLangid, TInt& aSize) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::FindDescriptor()")); - TInt result = KErrGeneral; - switch (aType) - { - case KUsbDescType_Device: - if (aLangid != 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: bad langid: 0x%04x", aLangid)); - } - else if (aIndex > 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: bad device index: %d", aIndex)); - } - else - { - aSize = GetDeviceDescriptor(KDescPosition_Device); - result = KErrNone; - } - break; - case KUsbDescType_Config: - if (aLangid != 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: bad langid: 0x%04x", aLangid)); - } - else if (aIndex > 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: bad config index: %d", aIndex)); - } - else - { - aSize = GetConfigurationDescriptor(KDescPosition_Config); - result = KErrNone; - } - break; - case KUsbDescType_DeviceQualifier: - if (aLangid != 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: bad langid: 0x%04x", aLangid)); - } - else if (aIndex > 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: bad device index: %d", aIndex)); - } - else - { - aSize = GetDeviceDescriptor(KDescPosition_DeviceQualifier); - result = KErrNone; - } - break; - case KUsbDescType_OtherSpeedConfig: - if (aLangid != 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: bad langid: 0x%04x", aLangid)); - } - else if (aIndex > 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: bad config index: %d", aIndex)); - } - else - { - aSize = GetConfigurationDescriptor(KDescPosition_OtherSpeedConfig); - result = KErrNone; - } - break; - case KUsbDescType_Otg: - aSize = GetOtgDescriptor(); - result = KErrNone; - break; - case KUsbDescType_String: - if (aIndex == 0) // 0 addresses the LangId array - { - if (AnyStringDescriptors()) - { - aSize = GetStringDescriptor(aIndex); - result = KErrNone; - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(" No string descriptors: not returning LANGID array")); - } - } - else - { - if (!aLangid) - { - __KTRACE_OPT(KUSB, - Kern::Printf(" Strange: LANGID=0 for a $ descriptor (ignoring LANGID)")); - // The USB spec doesn't really say what to do in this case, but as there are host apps - // that fail if we return an error here, we choose to ignore the issue. - } - else if (aLangid != iStrings[KStringPosition_Langid]->Word(2)) - { - // We have only one (this) language - __KTRACE_OPT(KUSB, - Kern::Printf(" Bad LANGID: 0x%04X requested, 0x%04X supported (ignoring LANGID)", - aLangid, iStrings[KStringPosition_Langid]->Word(2))); - // We could return an error here, but rather choose to ignore the discrepancy - // (the USB spec is not very clear what to do in such a case anyway). - } - aSize = GetStringDescriptor(aIndex); - result = KErrNone; - } - break; - case KUsbDescType_CS_Interface: - /* fall through */ - case KUsbDescType_CS_Endpoint: - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: finding of class specific descriptors not supported")); - break; - default: - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: unknown descriptor type requested: %d", aType)); - break; - } - return result; - } - - -void TUsbcDescriptorPool::InsertDescriptor(TUsbcDescriptorBase* aDesc) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::InsertDescriptor()")); - switch (aDesc->Type()) - { - case KUsbDescType_Interface: - InsertIfcDesc(aDesc); - break; - case KUsbDescType_Endpoint: - InsertEpDesc(aDesc); - break; - default: - __KTRACE_OPT(KUSB, Kern::Printf(" Error: unsupported descriptor type")); - } - } - - -void TUsbcDescriptorPool::SetIfcStringDescriptor(TUsbcStringDescriptor* aDesc, TInt aNumber, TInt aSetting) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::SetIfcDescriptor(%d, %d)", aNumber, aSetting)); - const TInt i = FindIfcDescriptor(aNumber, aSetting); - if (i < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Ifc descriptor not found (%d, %d)", - aNumber, aSetting)); - return; - } - // Try to find available NULL postition - TInt str_idx = FindAvailableStringPos(); - if (str_idx >= 0) - { - // Insert string descriptor for specified interface - ExchangeStringDescriptor(str_idx, aDesc); - } - else - { - // No NULL found - expand array - str_idx = iStrings.Count(); - if (str_idx > 0xff) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: $ descriptor array full (idx=%d)", str_idx)); - return; - } - while (str_idx < KStringPosition_FirstAvailable) - { - iStrings.Append(NULL); - str_idx = iStrings.Count(); - } - // Append string descriptor for specified interface - iStrings.Append(aDesc); - } - // Update this ifc descriptor's string index field - iDescriptors[i]->SetByte(8, str_idx); - __KTRACE_OPT(KUSB, Kern::Printf(" String for ifc %d/%d (@ pos %d): \"%S\"", aNumber, aSetting, str_idx, - &iStrings[str_idx]->StringData())); - } - - -void TUsbcDescriptorPool::DeleteIfcDescriptor(TInt aNumber, TInt aSetting) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::DeleteIfcDescriptor(%d, %d)", aNumber, aSetting)); - const TInt i = FindIfcDescriptor(aNumber, aSetting); - if (i < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: DeleteIfcDescriptor - descriptor not found (%d, %d)", - aNumber, aSetting)); - return; - } - // Delete (if necessary) specified interface's string descriptor - const TInt si = iDescriptors[i]->Byte(8); - if (si != 0) - { - ExchangeStringDescriptor(si, NULL); - } - // Delete specified ifc setting + all its cs descriptors + all its endpoints + all their cs descriptors: - // find position of the next interface descriptor: we need to delete everything in between - const TInt count = iDescriptors.Count(); - TInt j = i, n = 1; - while (++j < count && iDescriptors[j]->Type() != KUsbDescType_Interface) - ++n; - DeleteDescriptors(i, n); - // Update all the following interfaces' bInterfaceNumber field if required - // (because those descriptors might have moved down by one position) - UpdateIfcNumbers(aNumber); - iIfcIdx = 0; // ifc index no longer valid - } - - -// The TC in many of the following functions stands for 'ThreadCopy', -// because that's what's happening there. - -TInt TUsbcDescriptorPool::GetDeviceDescriptorTC(DThread* aThread, TDes8& aBuffer) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::GetDeviceDescriptorTC()")); - return Kern::ThreadDesWrite(aThread, &aBuffer, iDescriptors[KDescPosition_Device]->DescriptorData(), 0); - } - - -TInt TUsbcDescriptorPool::SetDeviceDescriptorTC(DThread* aThread, const TDes8& aBuffer) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::SetDeviceDescriptorTC()")); - TBuf8 device; - const TInt r = Kern::ThreadDesRead(aThread, &aBuffer, device, 0); - if (r != KErrNone) - { - return r; - } - iDescriptors[KDescPosition_Device]->SetByte(2, device[2]); // bcdUSB - iDescriptors[KDescPosition_Device]->SetByte(3, device[3]); // bcdUSB (part II) - iDescriptors[KDescPosition_Device]->SetByte(4, device[4]); // bDeviceClass - iDescriptors[KDescPosition_Device]->SetByte(5, device[5]); // bDeviceSubClass - iDescriptors[KDescPosition_Device]->SetByte(6, device[6]); // bDeviceProtocol - iDescriptors[KDescPosition_Device]->SetByte(8, device[8]); // idVendor - iDescriptors[KDescPosition_Device]->SetByte(9, device[9]); // idVendor (part II) - iDescriptors[KDescPosition_Device]->SetByte(10, device[10]); // idProduct - iDescriptors[KDescPosition_Device]->SetByte(11, device[11]); // idProduct (part II) - iDescriptors[KDescPosition_Device]->SetByte(12, device[12]); // bcdDevice - iDescriptors[KDescPosition_Device]->SetByte(13, device[13]); // bcdDevice (part II) - return KErrNone; - } - - -TInt TUsbcDescriptorPool::GetConfigurationDescriptorTC(DThread* aThread, TDes8& aBuffer) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::GetConfigurationDescriptorTC()")); - return Kern::ThreadDesWrite(aThread, &aBuffer, iDescriptors[KDescPosition_Config]->DescriptorData(), 0); - } - - -TInt TUsbcDescriptorPool::SetConfigurationDescriptorTC(DThread* aThread, const TDes8& aBuffer) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::SetConfigurationDescriptorTC()")); - TBuf8 config; - const TInt r = Kern::ThreadDesRead(aThread, &aBuffer, config, 0); - if (r != KErrNone) - { - return r; - } - iDescriptors[KDescPosition_Config]->SetByte(7, config[7]); // bmAttributes - iDescriptors[KDescPosition_Config]->SetByte(8, config[8]); // bMaxPower - return KErrNone; - } - - -TInt TUsbcDescriptorPool::GetOtgDescriptorTC(DThread* aThread, TDes8& aBuffer) const - { - return Kern::ThreadDesWrite(aThread, &aBuffer, iDescriptors[KDescPosition_Otg]->DescriptorData(), 0); - } - - -TInt TUsbcDescriptorPool::SetOtgDescriptor(const TDesC8& aBuffer) - { - iDescriptors[KDescPosition_Otg]->SetByte(2, aBuffer[2]); // bmAttributes - return KErrNone; - } - - -TInt TUsbcDescriptorPool::GetInterfaceDescriptorTC(DThread* aThread, TDes8& aBuffer, - TInt aInterface, TInt aSetting) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::GetInterfaceDescriptorTC()")); - const TInt i = FindIfcDescriptor(aInterface, aSetting); - if (i < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no such interface")); - return KErrNotFound; - } - return Kern::ThreadDesWrite(aThread, &aBuffer, iDescriptors[i]->DescriptorData(), 0); - } - - -TInt TUsbcDescriptorPool::SetInterfaceDescriptor(const TDes8& aBuffer, TInt aInterface, TInt aSetting) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::SetInterfaceDescriptor()")); - const TInt i = FindIfcDescriptor(aInterface, aSetting); - if (i < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no such interface")); - return KErrNotFound; - } - iDescriptors[i]->SetByte(2, aBuffer[2]); // bInterfaceNumber - iDescriptors[i]->SetByte(5, aBuffer[5]); // bInterfaceClass - iDescriptors[i]->SetByte(6, aBuffer[6]); // bInterfaceSubClass - iDescriptors[i]->SetByte(7, aBuffer[7]); // bInterfaceProtocol - return KErrNone; - } - - -TInt TUsbcDescriptorPool::GetEndpointDescriptorTC(DThread* aThread, TDes8& aBuffer, - TInt aInterface, TInt aSetting, TUint8 aEndpointAddress) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::GetEndpointDescriptorTC()")); - const TInt i = FindEpDescriptor(aInterface, aSetting, aEndpointAddress); - if (i < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no such endpoint")); - return KErrNotFound; - } - return Kern::ThreadDesWrite(aThread, &aBuffer, iDescriptors[i]->DescriptorData(), 0); - } - - -TInt TUsbcDescriptorPool::SetEndpointDescriptorTC(DThread* aThread, const TDes8& aBuffer, - TInt aInterface, TInt aSetting, TUint8 aEndpointAddress) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::SetEndpointDescriptorTC()")); - const TInt i = FindEpDescriptor(aInterface, aSetting, aEndpointAddress); - if (i < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no such endpoint")); - return KErrNotFound; - } - TBuf8 ep; // it could be an audio endpoint - const TInt r = Kern::ThreadDesRead(aThread, &aBuffer, ep, 0); - if (r != KErrNone) - { - return r; - } - iDescriptors[i]->SetByte(3, ep[3]); // bmAttributes - iDescriptors[i]->SetByte(6, ep[6]); // bInterval - if (iDescriptors[i]->Size() == KUsbDescSize_AudioEndpoint) - { - iDescriptors[i]->SetByte(7, ep[7]); // bRefresh - iDescriptors[i]->SetByte(8, ep[8]); // bSynchAddress - } - return KErrNone; - } - - -TInt TUsbcDescriptorPool::GetEndpointDescriptorSize(TInt aInterface, TInt aSetting, TUint8 aEndpointAddress, - TInt& aSize) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::GetEndpointDescriptorSize()")); - const TInt i = FindEpDescriptor(aInterface, aSetting, aEndpointAddress); - if (i < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no such endpoint")); - return KErrNotFound; - } - aSize = iDescriptors[i]->Size(); - return KErrNone; - } - - -TInt TUsbcDescriptorPool::GetDeviceQualifierDescriptorTC(DThread* aThread, TDes8& aBuffer) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::GetDeviceQualifierDescriptorTC()")); - if (iDescriptors[KDescPosition_DeviceQualifier] == NULL) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: Device_Qualifier descriptor not supported")); - return KErrNotSupported; - } - return Kern::ThreadDesWrite(aThread, &aBuffer, - iDescriptors[KDescPosition_DeviceQualifier]->DescriptorData(), 0); - } - - -TInt TUsbcDescriptorPool::SetDeviceQualifierDescriptorTC(DThread* aThread, const TDes8& aBuffer) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::SetDeviceQualifierDescriptorTC()")); - if (iDescriptors[KDescPosition_DeviceQualifier] == NULL) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: Device_Qualifier descriptor not supported")); - return KErrNotSupported; - } - TBuf8 device; - const TInt r = Kern::ThreadDesRead(aThread, &aBuffer, device, 0); - if (r != KErrNone) - { - return r; - } - iDescriptors[KDescPosition_DeviceQualifier]->SetByte(2, device[2]); // bcdUSB - iDescriptors[KDescPosition_DeviceQualifier]->SetByte(3, device[3]); // bcdUSB (part II) - iDescriptors[KDescPosition_DeviceQualifier]->SetByte(4, device[4]); // bDeviceClass - iDescriptors[KDescPosition_DeviceQualifier]->SetByte(5, device[5]); // bDeviceSubClass - iDescriptors[KDescPosition_DeviceQualifier]->SetByte(6, device[6]); // bDeviceProtocol - return KErrNone; - } - - -TInt TUsbcDescriptorPool::GetOtherSpeedConfigurationDescriptorTC(DThread* aThread, TDes8& aBuffer) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::GetOtherSpeedConfigurationDescriptorTC()")); - if (iDescriptors[KDescPosition_OtherSpeedConfig] == NULL) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: Other_Speed_Configuration descriptor not supported")); - return KErrNotSupported; - } - return Kern::ThreadDesWrite(aThread, &aBuffer, - iDescriptors[KDescPosition_OtherSpeedConfig]->DescriptorData(), 0); - } - - -TInt TUsbcDescriptorPool::SetOtherSpeedConfigurationDescriptorTC(DThread* aThread, const TDes8& aBuffer) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::SetOtherSpeedConfigurationDescriptorTC()")); - if (iDescriptors[KDescPosition_OtherSpeedConfig] == NULL) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: Other_Speed_Configuration descriptor not supported")); - return KErrNotSupported; - } - TBuf8 config; - const TInt r = Kern::ThreadDesRead(aThread, &aBuffer, config, 0); - if (r != KErrNone) - { - return r; - } - iDescriptors[KDescPosition_OtherSpeedConfig]->SetByte(7, config[7]); // bmAttributes - iDescriptors[KDescPosition_OtherSpeedConfig]->SetByte(8, config[8]); // bMaxPower - return KErrNone; - } - - -TInt TUsbcDescriptorPool::GetCSInterfaceDescriptorTC(DThread* aThread, TDes8& aBuffer, - TInt aInterface, TInt aSetting) const - { - // first find the interface - TInt i = FindIfcDescriptor(aInterface, aSetting); - if (i < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no such interface")); - return KErrNotFound; - } - TInt r = KErrNotFound; - TInt offset = 0; - const TInt count = iDescriptors.Count(); - while (++i < count && iDescriptors[i]->Type() == KUsbDescType_CS_Interface) - { - r = Kern::ThreadDesWrite(aThread, &aBuffer, - iDescriptors[i]->DescriptorData(), offset); - if (r != KErrNone) - break; - offset += iDescriptors[i]->Size(); - } - return r; - } - - -TInt TUsbcDescriptorPool::SetCSInterfaceDescriptorTC(DThread* aThread, const TDes8& aBuffer, - TInt aInterface, TInt aSetting, TInt aSize) - { - // First find the interface - TInt i = FindIfcDescriptor(aInterface, aSetting); - if (i < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no such interface")); - return KErrNotFound; - } - // Find a position where to insert the new class specific interface descriptor(s) - const TInt count = iDescriptors.Count(); - while (++i < count && iDescriptors[i]->Type() == KUsbDescType_CS_Interface) - ; - // Create a new cs descriptor - TUsbcClassSpecificDescriptor* desc = TUsbcClassSpecificDescriptor::New(KUsbDescType_CS_Interface, aSize); - if (!desc) - { - return KErrNoMemory; - } - __KTRACE_OPT(KUSB, Kern::Printf(" inserting descriptor at position %d", i)); - iDescriptors.Insert(desc, i); - - // Update the config descriptor's wTotalLength field - UpdateConfigDescriptorLength(aSize); - - // Copy contents from the user side - return Kern::ThreadDesRead(aThread, &aBuffer, iDescriptors[i]->DescriptorData(), 0); - } - - -TInt TUsbcDescriptorPool::GetCSInterfaceDescriptorSize(TInt aInterface, TInt aSetting, TInt& aSize) const - { - // first find the interface - TInt i = FindIfcDescriptor(aInterface, aSetting); - if (i < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no such interface")); - return KErrNotFound; - } - TInt r = KErrNotFound; - TInt size = 0; - const TInt count = iDescriptors.Count(); - while (++i < count && iDescriptors[i]->Type() == KUsbDescType_CS_Interface) - { - size += iDescriptors[i]->Size(); - r = KErrNone; - } - if (r == KErrNone) - aSize = size; - return r; - } - - -TInt TUsbcDescriptorPool::GetCSEndpointDescriptorTC(DThread* aThread, TDes8& aBuffer, TInt aInterface, - TInt aSetting, TUint8 aEndpointAddress) const - { - // first find the endpoint - TInt i = FindEpDescriptor(aInterface, aSetting, aEndpointAddress); - if (i < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no such endpoint")); - return KErrNotFound; - } - TInt r = KErrNotFound; - TInt offset = 0; - const TInt count = iDescriptors.Count(); - while (++i < count && iDescriptors[i]->Type() == KUsbDescType_CS_Endpoint) - { - r = Kern::ThreadDesWrite(aThread, &aBuffer, - iDescriptors[i]->DescriptorData(), offset); - if (r != KErrNone) - break; - offset += iDescriptors[i]->Size(); - } - return r; - } - - -TInt TUsbcDescriptorPool::SetCSEndpointDescriptorTC(DThread* aThread, const TDes8& aBuffer, TInt aInterface, - TInt aSetting, TUint8 aEndpointAddress, TInt aSize) - { - // first find the endpoint - TInt i = FindEpDescriptor(aInterface, aSetting, aEndpointAddress); - if (i < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no such endpoint")); - return KErrNotFound; - } - // find a position where to insert the new class specific endpoint descriptor(s) - const TInt count = iDescriptors.Count(); - while (++i < count && iDescriptors[i]->Type() == KUsbDescType_CS_Endpoint) - ; - // create a new cs descriptor - TUsbcClassSpecificDescriptor* desc = TUsbcClassSpecificDescriptor::New(KUsbDescType_CS_Endpoint, aSize); - if (!desc) - { - return KErrNoMemory; - } - iDescriptors.Insert(desc, i); - // update the config descriptor's wTotalLength field - UpdateConfigDescriptorLength(aSize); - // copy contents from user side - return Kern::ThreadDesRead(aThread, &aBuffer, iDescriptors[i]->DescriptorData(), 0); - } - - -TInt TUsbcDescriptorPool::GetCSEndpointDescriptorSize(TInt aInterface, TInt aSetting, - TUint8 aEndpointAddress, TInt& aSize) const - { - // first find the endpoint - TInt i = FindEpDescriptor(aInterface, aSetting, aEndpointAddress); - if (i < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no such endpoint")); - return KErrNotFound; - } - TInt r = KErrNotFound; - TInt size = 0; - const TInt count = iDescriptors.Count(); - while (++i < count && iDescriptors[i]->Type() == KUsbDescType_CS_Endpoint) - { - size += iDescriptors[i]->Size(); - r = KErrNone; - } - if (r == KErrNone) - aSize = size; - return r; - } - - -TInt TUsbcDescriptorPool::GetStringDescriptorLangIdTC(DThread* aThread, TDes8& aLangId) const - { - const TUint16 id = iStrings[KStringPosition_Langid]->Word(2); - const TPtrC8 id_des(reinterpret_cast(&id), sizeof(id)); - return Kern::ThreadDesWrite(aThread, &aLangId, id_des, 0); - } - - -TInt TUsbcDescriptorPool::SetStringDescriptorLangId(TUint16 aLangId) - { - iStrings[KStringPosition_Langid]->SetWord(2, aLangId); - return KErrNone; - } - - -TInt TUsbcDescriptorPool::GetManufacturerStringDescriptorTC(DThread* aThread, TDes8& aString) const - { - return GetDeviceStringDescriptorTC(aThread, aString, KUsbDescStringIndex_Manufact, - KStringPosition_Manufact); - } - - -TInt TUsbcDescriptorPool::SetManufacturerStringDescriptorTC(DThread* aThread, const TDes8& aString) - { - return SetDeviceStringDescriptorTC(aThread, aString, KUsbDescStringIndex_Manufact, - KStringPosition_Manufact); - } - - -TInt TUsbcDescriptorPool::RemoveManufacturerStringDescriptor() - { - return RemoveDeviceStringDescriptor(KUsbDescStringIndex_Manufact, KStringPosition_Manufact); - } - - -TInt TUsbcDescriptorPool::GetProductStringDescriptorTC(DThread* aThread, TDes8& aString) const - { - return GetDeviceStringDescriptorTC(aThread, aString, KUsbDescStringIndex_Product, - KStringPosition_Product); - } - - -TInt TUsbcDescriptorPool::SetProductStringDescriptorTC(DThread* aThread, const TDes8& aString) - { - return SetDeviceStringDescriptorTC(aThread, aString, KUsbDescStringIndex_Product, - KStringPosition_Product); - } - - -TInt TUsbcDescriptorPool::RemoveProductStringDescriptor() - { - return RemoveDeviceStringDescriptor(KUsbDescStringIndex_Product, KStringPosition_Product); - } - - -TInt TUsbcDescriptorPool::GetSerialNumberStringDescriptorTC(DThread* aThread, TDes8& aString) const - { - return GetDeviceStringDescriptorTC(aThread, aString, KUsbDescStringIndex_Serial, - KStringPosition_Serial); - } - - -TInt TUsbcDescriptorPool::SetSerialNumberStringDescriptorTC(DThread* aThread, const TDes8& aString) - { - return SetDeviceStringDescriptorTC(aThread, aString, KUsbDescStringIndex_Serial, - KStringPosition_Serial); - } - - -TInt TUsbcDescriptorPool::RemoveSerialNumberStringDescriptor() - { - return RemoveDeviceStringDescriptor(KUsbDescStringIndex_Serial, KStringPosition_Serial); - } - - -TInt TUsbcDescriptorPool::GetConfigurationStringDescriptorTC(DThread* aThread, TDes8& aString) const - { - const TInt str_idx = iDescriptors[KDescPosition_Config]->Byte(KUsbDescStringIndex_Config); - if (str_idx) - { - __ASSERT_ALWAYS((str_idx == KStringPosition_Config), Kern::Fault(KUsbPanicCat, __LINE__)); - __KTRACE_OPT(KUSB, Kern::Printf(" String @ pos %d (conf $): \"%S\"", - str_idx, &iStrings[str_idx]->StringData())); - return Kern::ThreadDesWrite(aThread, &aString, - iStrings[str_idx]->StringData(), 0); - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(" No config string descriptor @ pos %d", str_idx)); - return KErrNotFound; - } - } - - -TInt TUsbcDescriptorPool::SetConfigurationStringDescriptorTC(DThread* aThread, const TDes8& aString) - { - // we don't know the length of the string, so we have to allocate memory dynamically - TUint strlen = Kern::ThreadGetDesLength(aThread, &aString); - if (strlen > KUsbStringDescStringMaxSize) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: config $ descriptor too long - will be truncated")); - strlen = KUsbStringDescStringMaxSize; - } - HBuf8* const strbuf = HBuf8::New(strlen); - if (!strbuf) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Memory allocation for config $ desc string failed (1)")); - return KErrNoMemory; - } - strbuf->SetMax(); - // the aString points to data that lives in user memory, so we have to copy it: - const TInt r = Kern::ThreadDesRead(aThread, &aString, *strbuf, 0); - if (r != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Thread read error")); - delete strbuf; - return r; - } - TUsbcStringDescriptor* sd = TUsbcStringDescriptor::New(*strbuf); - if (!sd) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Memory allocation for config $ desc failed (2)")); - delete strbuf; - return KErrNoMemory; - } - // Delete old string, put in new one - ExchangeStringDescriptor(KStringPosition_Config, sd); - // Update Config descriptor string index field - iDescriptors[KDescPosition_Config]->SetByte(KUsbDescStringIndex_Config, KStringPosition_Config); - // Update Other_Speed_Config descriptor string index field as well, if applicable - if (iDescriptors[KDescPosition_OtherSpeedConfig]) - iDescriptors[KDescPosition_OtherSpeedConfig]->SetByte(KUsbDescStringIndex_Config, - KStringPosition_Config); - delete strbuf; - return KErrNone; - } - - -TInt TUsbcDescriptorPool::RemoveConfigurationStringDescriptor() - { - if (iDescriptors[KDescPosition_Config]->Byte(KUsbDescStringIndex_Config) == 0) - { - __KTRACE_OPT(KUSB, Kern::Printf(" RemoveConfigurationStringDescriptor: no $ desc @ index %d", - KUsbDescStringIndex_Config)); - return KErrNotFound; - } - // Delete old string, put in NULL pointer - ExchangeStringDescriptor(KStringPosition_Config, NULL); - // Update Config descriptor string index field - iDescriptors[KDescPosition_Config]->SetByte(KUsbDescStringIndex_Config, 0); - // Update Other_Speed_Config descriptor string index field as well, if applicable - if (iDescriptors[KDescPosition_OtherSpeedConfig]) - iDescriptors[KDescPosition_OtherSpeedConfig]->SetByte(KUsbDescStringIndex_Config, 0); - return KErrNone; - } - - -TInt TUsbcDescriptorPool::GetStringDescriptorTC(DThread* aThread, TInt aIndex, TDes8& aString) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::GetStringDescriptorTC()")); - if (!StringDescriptorExists(aIndex)) - { - return KErrNotFound; - } - __KTRACE_OPT(KUSB, Kern::Printf(" String @ pos %d: \"%S\"", - aIndex, &iStrings[aIndex]->StringData())); - return Kern::ThreadDesWrite(aThread, &aString, iStrings[aIndex]->StringData(), 0); - } - - -TInt TUsbcDescriptorPool::SetStringDescriptorTC(DThread* aThread, TInt aIndex, const TDes8& aString) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::SetStringDescriptorTC()")); - // we don't know the length of the string, so we have to allocate memory dynamically - TUint strlen = Kern::ThreadGetDesLength(aThread, &aString); - if (strlen > KUsbStringDescStringMaxSize) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: $ descriptor too long - will be truncated")); - strlen = KUsbStringDescStringMaxSize; - } - HBuf8* strbuf = HBuf8::New(strlen); - if (!strbuf) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Mem alloc for $ desc string failed (1)")); - return KErrNoMemory; - } - strbuf->SetMax(); - // the aString points to data that lives in user memory, so we have to copy it over: - const TInt r = Kern::ThreadDesRead(aThread, &aString, *strbuf, 0); - if (r != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Thread read error")); - delete strbuf; - return r; - } - TUsbcStringDescriptor* const sd = TUsbcStringDescriptor::New(*strbuf); - if (!sd) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Mem alloc for $ desc failed (2)")); - delete strbuf; - return KErrNoMemory; - } - if (aIndex < iStrings.Count()) - { - ExchangeStringDescriptor(aIndex, sd); - } - else // if (aIndex >= iStrings.Count()) - { - while (aIndex > iStrings.Count()) - { - iStrings.Append(NULL); - } - iStrings.Append(sd); - } - delete strbuf; - return KErrNone; - } - - -TInt TUsbcDescriptorPool::RemoveStringDescriptor(TInt aIndex) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::RemoveStringDescriptor()")); - if (!StringDescriptorExists(aIndex)) - { - return KErrNotFound; - } - __KTRACE_OPT(KUSB, Kern::Printf(" Removing string @ pos %d: \"%S\"", - aIndex, &iStrings[aIndex]->StringData())); - ExchangeStringDescriptor(aIndex, NULL); - - // Make sure there's no $ after aIndex. - const TInt n = iStrings.Count(); - for (TInt i = aIndex; i < n; i++) - { - if (iStrings[i] != NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Found $ @ idx %d - not compressing", i)); - return KErrNone; - } - } - - __KTRACE_OPT(KUSB, Kern::Printf(" No $ found after idx %d - compressing array", aIndex)); - // Move aIndex back just before the first !NULL element. - while (iStrings[--aIndex] == NULL) - ; - // Let aIndex point to first NULL. - aIndex++; - __KTRACE_OPT(KUSB, Kern::Printf(" Starting at index %d", aIndex)); - // Now remove NULL pointers until (Count() == aIndex). - __KTRACE_OPT(KUSB, Kern::Printf(" iStrings.Count() before: %d", iStrings.Count())); - do - { - iStrings.Remove(aIndex); - __KTRACE_OPT(KUSB, Kern::Printf(" Removing $")); - } - while (iStrings.Count() > aIndex); - __KTRACE_OPT(KUSB, Kern::Printf(" iStrings.Count() after: %d", iStrings.Count())); - - // Regain some memory. - iStrings.Compress(); - - return KErrNone; - } - - -// =================================================================== -// --- private --- -// =================================================================== - -// -// Insert an Interface descriptor into the descriptor array at the appropriate index. -// -void TUsbcDescriptorPool::InsertIfcDesc(TUsbcDescriptorBase* aDesc) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::InsertIfcDesc()")); - - const TInt count = iDescriptors.Count(); - TBool ifc_exists = EFalse; // set to 'true' if we're adding an alternate - // setting to an already existing interface - TInt i = KDescPosition_FirstAvailable; - while (i < count) - { - __KTRACE_OPT(KUSB, Kern::Printf(" already descriptors there (%d)...", count)); - if (iDescriptors[i]->Type() == KUsbDescType_Interface) - { - if (iDescriptors[i]->Byte(2) > aDesc->Byte(2)) - { - // our interface number is less than the one's just found => insert before it (= here) - break; - } - else if (iDescriptors[i]->Byte(2) == aDesc->Byte(2)) - { - ifc_exists = ETrue; - // same interface number => look at settings number - if (iDescriptors[i]->Byte(3) > aDesc->Byte(3)) - { - // our setting number is less than the one's found => insert before (= here) - break; - } - else if (iDescriptors[i]->Byte(3) == aDesc->Byte(3)) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: first delete old desc " - "(TUsbcDescriptorPool::InsertIfcDesc)")); - return; - } - } - } - ++i; - } - // In any case: put the new descriptor at position i. - __KTRACE_OPT(KUSB, Kern::Printf(" inserting descriptor at position %d", i)); - iDescriptors.Insert(aDesc, i); - - // Update the config descriptor's wTotalLength field. - UpdateConfigDescriptorLength(KUsbDescSize_Interface); - - if (!ifc_exists) - { - // If this is the first setting for the interface, increment bNumInterfaces. - UpdateConfigDescriptorNumIfcs(1); - } - - iIfcIdx = i; - } - - -// -// Insert an Endpoint descriptor into the descriptor array at the appropriate index. -// -void TUsbcDescriptorPool::InsertEpDesc(TUsbcDescriptorBase* aDesc) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::InsertEpDesc()")); - if (iIfcIdx == 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: only after interface " - "(TUsbcDescriptorPool::InsertEpDesc)")); - return; - } - const TInt count = iDescriptors.Count(); - TInt i = iIfcIdx + 1; - while (i < count) - { - if (iDescriptors[i]->Type() != KUsbDescType_Endpoint) - break; - ++i; - } - // put the new descriptor at position i - iDescriptors.Insert(aDesc, i); - // update the config descriptor's wTotalLength field - UpdateConfigDescriptorLength(aDesc->Size()); - } - - -// -// Find the index of the Interface descriptor for a given interface setting. -// -TInt TUsbcDescriptorPool::FindIfcDescriptor(TInt aIfcNumber, TInt aIfcSetting) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::FindIfcDescriptor(%d, %d)", - aIfcNumber, aIfcSetting)); - const TInt count = iDescriptors.Count(); - for (TInt i = KDescPosition_FirstAvailable; i < count; i++) - { - if ((iDescriptors[i]->Type() == KUsbDescType_Interface) && - (iDescriptors[i]->Byte(2) == aIfcNumber) && - (iDescriptors[i]->Byte(3) == aIfcSetting)) - { - return i; - } - } - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no such interface")); - return -1; - } - - -// -// Find the index of the Endpoint descriptor for a given endpoint on a given interface setting. -// -TInt TUsbcDescriptorPool::FindEpDescriptor(TInt aIfcNumber, TInt aIfcSetting, TUint8 aEpAddress) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::FindEpDescriptor(%d, %d, 0x%02x)", - aIfcNumber, aIfcSetting, aEpAddress)); - // first find the interface - const TInt ifc = FindIfcDescriptor(aIfcNumber, aIfcSetting); - if (ifc < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no such interface")); - return ifc; - } - const TInt count = iDescriptors.Count(); - // then, before the next interface, try to locate the endpoint - for (TInt i = ifc + 1; i < count; i++) - { - if (iDescriptors[i]->Type() == KUsbDescType_Interface) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no such endpoint before next interface")); - return -1; - } - else if ((iDescriptors[i]->Type() == KUsbDescType_Endpoint) && - (iDescriptors[i]->Byte(2) == aEpAddress)) - { - // found - return i; - } - } - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no such endpoint")); - return -1; - } - - -// -// Delete n descriptors starting from aIndex and remove their pointers from the array. -// -void TUsbcDescriptorPool::DeleteDescriptors(TInt aIndex, TInt aCount) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::DeleteDescriptors()")); - if (aIndex < KDescPosition_FirstAvailable) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: aIndex < KDescPosition_FirstAvailable")); - return; - } - if (aCount <= 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: aCount <= 0")); - return; - } - __KTRACE_OPT(KUSB, Kern::Printf(" Removing descriptors at index %d:", aIndex)); - // Try to update wTotalLength field in Config descriptor - while (aCount--) - { - // In this loop we don't decrement aIndex, because after deleting an element - // aIndex is already indexing the next one. - TUsbcDescriptorBase* const ptr = iDescriptors[aIndex]; - switch (ptr->Type()) - { - case KUsbDescType_Interface: - __KTRACE_OPT(KUSB, Kern::Printf(" - an interface descriptor")); - UpdateConfigDescriptorLength(-KUsbDescSize_Interface); - break; - case KUsbDescType_Endpoint: - __KTRACE_OPT(KUSB, Kern::Printf(" - an endpoint descriptor")); - UpdateConfigDescriptorLength(-ptr->Size()); - break; - case KUsbDescType_CS_Interface: - /* fall through */ - case KUsbDescType_CS_Endpoint: - __KTRACE_OPT(KUSB, Kern::Printf(" - a class specific descriptor")); - UpdateConfigDescriptorLength(-ptr->Size()); - break; - default: - __KTRACE_OPT(KUSB, Kern::Printf(" - an unknown descriptor")); - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: unknown descriptor type")); - } - iDescriptors.Remove(aIndex); - delete ptr; - } - } - - -// -// Update the wTotalLength field in the Configuration descriptor (aLength can be negative). -// -void TUsbcDescriptorPool::UpdateConfigDescriptorLength(TInt aLength) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::UpdateConfigDescriptorLength(%d)", aLength)); - TUsbcDescriptorBase* const cnf = iDescriptors[KDescPosition_Config]; - __KTRACE_OPT(KUSB, Kern::Printf(" wTotalLength old: %d", cnf->Word(2))); - // Update Config descriptor - cnf->SetWord(2, cnf->Word(2) + aLength); - __KTRACE_OPT(KUSB, Kern::Printf(" wTotalLength new: %d", cnf->Word(2))); - // Update Other_Speed_Config descriptor as well, if applicable - if (iDescriptors[KDescPosition_OtherSpeedConfig]) - iDescriptors[KDescPosition_OtherSpeedConfig]->SetWord(2, cnf->Word(2)); - } - - -// -// Update the bNumInterfaces field in the Configuration descriptor (aNumber can be negative). -// -void TUsbcDescriptorPool::UpdateConfigDescriptorNumIfcs(TInt aNumber) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::UpdateConfigDescriptorNumIfcs(%d)", aNumber)); - TUsbcDescriptorBase* const cnf = iDescriptors[KDescPosition_Config]; - __KTRACE_OPT(KUSB, Kern::Printf(" bNumInterfaces old: %d", cnf->Byte(4))); - const TInt n = cnf->Byte(4) + aNumber; - if (n < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: bNumInterfaces + aNumber < 0")); - return; - } - // Update Config descriptor - cnf->SetByte(4, n); - __KTRACE_OPT(KUSB, Kern::Printf(" bNumInterfaces new: %d", cnf->Byte(4))); - // Update Other_Speed_Config descriptor as well, if applicable - if (iDescriptors[KDescPosition_OtherSpeedConfig]) - iDescriptors[KDescPosition_OtherSpeedConfig]->SetByte(4, n); - } - - -// -// Update the bNumInterfaces field in the Configuration descriptor if necessary. -// -void TUsbcDescriptorPool::UpdateIfcNumbers(TInt aNumber) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::UpdateIfcNumbers(%d)", aNumber)); - const TInt count = iDescriptors.Count(); - for (TInt i = KDescPosition_FirstAvailable; i < count; i++) - { - if ((iDescriptors[i]->Type() == KUsbDescType_Interface) && - (iDescriptors[i]->Byte(2) == aNumber)) - { - // there's still an interface with 'number' so we don't need to update anything - return; - } - } - // if we haven't returned yet, we decrement bNumInterfaces - UpdateConfigDescriptorNumIfcs(-1); - } - - -// -// Put the current Device or Device_Qualifier descriptor in the Ep0 Tx buffer. -// Only used for Ep0 standard requests, so target buffer can be hard-wired. -// -TInt TUsbcDescriptorPool::GetDeviceDescriptor(TInt aIndex) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::GetDeviceDescriptor()")); - __ASSERT_DEBUG((aIndex == KDescPosition_Device) || (aIndex == KDescPosition_DeviceQualifier), - Kern::Printf(" Error: invalid descriptor index: %d", aIndex)); - if (iDescriptors[aIndex] == NULL) - { - // This doesn't have to be an error - we might get asked here for the Device_Qualifier descriptor - // on a FS-only device. - __KTRACE_OPT(KUSB, Kern::Printf(" Descriptor #%d requested but not available", aIndex)); - return 0; - } - return iDescriptors[aIndex]->GetDescriptorData(iEp0_TxBuf, KUsbcBufSz_Ep0Tx); - } - - -// -// Put the current Configuration or Other_Speed_Configuration descriptor + all the following -// descriptors in the Ep0 Tx buffer. -// Only used for Ep0 standard requests, so target buffer can be hard-wired. -// -TInt TUsbcDescriptorPool::GetConfigurationDescriptor(TInt aIndex) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::GetConfigDescriptor(%d)", aIndex)); - __ASSERT_DEBUG((aIndex == KDescPosition_Config) || (aIndex == KDescPosition_OtherSpeedConfig), - Kern::Printf(" Error: invalid descriptor index: %d", aIndex)); - if (iDescriptors[aIndex] == NULL) - { - // This is always an error: We should always have a Configuration descriptor and we should never - // get asked for the Other_Speed_Configuration descriptor if we don't have one (9.6.2). - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: Descriptor %d requested but not available", aIndex)); - return 0; - } - const TInt count = iDescriptors.Count(); - TInt copied = 0; - TUint8* buf = iEp0_TxBuf; - for (TInt i = aIndex; i < count; i++) - { - TUsbcDescriptorBase* const ptr = iDescriptors[i]; - if ((aIndex == KDescPosition_OtherSpeedConfig) && (i == KDescPosition_Config)) - { - // Skip Config descriptor when returning Other_Speed_Config - continue; - } - if ((i == KDescPosition_Otg) && (iDescriptors[i] == NULL)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" no OTG descriptor -> next")); - continue; - } - // We need to edit endpoint descriptors on the fly because we have only one copy - // of each and that copy has to contain different information, depending on the - // current speed and the type of descriptor requested. - if (ptr->Type() == KUsbDescType_Endpoint) - { - if ((iHighSpeed && (aIndex == KDescPosition_Config)) || - (!iHighSpeed && (aIndex == KDescPosition_OtherSpeedConfig))) - { - ptr->UpdateHs(); - } - else - { - ptr->UpdateFs(); - } - } - __KTRACE_OPT(KUSB, Kern::Printf(" desc[%02d]: type = 0x%02x size = %d ", - i, ptr->Type(), ptr->Size())); - const TInt size = ptr->GetDescriptorData(buf, KUsbcBufSz_Ep0Tx - copied); - if (size == 0) - { - __KTRACE_OPT(KPANIC, - Kern::Printf(" Error: No Tx buffer space to copy this descriptor -> exiting")); - break; - } - copied += size; - if (copied >= KUsbcBufSz_Ep0Tx) - { - __KTRACE_OPT(KPANIC, - Kern::Printf(" Error: No Tx buffer space left -> stopping here")); - break; - } - buf += size; - } - __KTRACE_OPT(KUSB, Kern::Printf(" copied %d bytes", copied)); - return copied; - } - - -// -// Put the current OTG descriptor in the Ep0 Tx buffer. -// Only used for Ep0 standard requests, so target buffer can be hard-wired. -// -TInt TUsbcDescriptorPool::GetOtgDescriptor() const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::GetOtgDescriptor()")); - if (iDescriptors[KDescPosition_Otg] == NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf(" OTG Descriptor not set")); - return 0; - } - return iDescriptors[KDescPosition_Otg]->GetDescriptorData(iEp0_TxBuf, KUsbcBufSz_Ep0Tx); - } - - -// -// Put a specific String descriptor in the Ep0 Tx buffer. -// Only used for Ep0 standard requests, so target buffer can be hard-wired. -// -TInt TUsbcDescriptorPool::GetStringDescriptor(TInt aIndex) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::GetStringDescriptor(%d)", aIndex)); - // I really would have liked to display the descriptor contents here, but without trailing zero - // we got a problem: how can we tell printf where the string ends? We would have to - // dynamically allocate memory (since we don't know the size in advance), copy the descriptor - // contents there, append a zero, and give this to printf. That's a bit too much effort... - if (!StringDescriptorExists(aIndex)) - { - return 0; - } - return iStrings[aIndex]->GetDescriptorData(iEp0_TxBuf, KUsbcBufSz_Ep0Tx); - } - - -// -// Write a String descriptor pointed to by the Device descriptor to the user side -// (one of Manufacturer, Product, SerialNumber). -// -TInt TUsbcDescriptorPool::GetDeviceStringDescriptorTC(DThread* aThread, TDes8& aString, - TInt aIndex, TInt aPosition) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::GetDeviceStringDescriptorTC()")); - const TInt str_idx = iDescriptors[KDescPosition_Device]->Byte(aIndex); - if (str_idx) - { - __ASSERT_ALWAYS((str_idx == aPosition), Kern::Fault(KUsbPanicCat, __LINE__)); - __KTRACE_OPT(KUSB, Kern::Printf(" String @ pos %d (device $): \"%S\"", - str_idx, &iStrings[str_idx]->StringData())); - return Kern::ThreadDesWrite(aThread, &aString, - iStrings[str_idx]->StringData(), 0); - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(" No string descriptor @ pos %d", aIndex)); - return KErrNotFound; - } - } - - -// -// Read a Device String descriptor from the user side and put in the descriptor arrays -// (one of Manufacturer, Product, SerialNumber). -// -TInt TUsbcDescriptorPool::SetDeviceStringDescriptorTC(DThread* aThread, const TDes8& aString, - TInt aIndex, TInt aPosition) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::SetDeviceStringDescriptorTC()")); - // we don't know the length of the string, so we have to allocate memory dynamically - TUint strlen = Kern::ThreadGetDesLength(aThread, &aString); - if (strlen > KUsbStringDescStringMaxSize) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: $ descriptor too long - will be truncated")); - strlen = KUsbStringDescStringMaxSize; - } - HBuf8* const strbuf = HBuf8::New(strlen); - if (!strbuf) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Memory allocation for dev $ desc string failed (1)")); - return KErrNoMemory; - } - strbuf->SetMax(); - // the aString points to data that lives in user memory, so we have to copy it: - const TInt r = Kern::ThreadDesRead(aThread, &aString, *strbuf, 0); - if (r != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Thread read error")); - delete strbuf; - return r; - } - TUsbcStringDescriptor* const sd = TUsbcStringDescriptor::New(*strbuf); - if (!sd) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Memory allocation for dev $ desc failed (2)")); - delete strbuf; - return KErrNoMemory; - } - ExchangeStringDescriptor(aPosition, sd); - iDescriptors[KDescPosition_Device]->SetByte(aIndex, aPosition); - delete strbuf; - return r; - } - - -// -// Remove a Device String descriptor from the descriptor arrays -// (one of Manufacturer, Product, SerialNumber). -// -TInt TUsbcDescriptorPool::RemoveDeviceStringDescriptor(TInt aIndex, TInt aPosition) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::RemoveDeviceStringDescriptor()")); - if (iDescriptors[KDescPosition_Device]->Byte(aIndex) == 0) - { - __KTRACE_OPT(KUSB, Kern::Printf(" RemoveDeviceStringDescriptor: no $ desc @ index %d", aIndex)); - return KErrNotFound; - } - ExchangeStringDescriptor(aPosition, NULL); - iDescriptors[KDescPosition_Device]->SetByte(aIndex, 0); - return KErrNone; - } - - -// -// Puts aDesc at postion aIndex in the string descriptor array, after deleting what was (possibly) there. -// -void TUsbcDescriptorPool::ExchangeStringDescriptor(TInt aIndex, const TUsbcStringDescriptor* aDesc) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::ExchangeStringDescriptor()")); - TUsbcStringDescriptorBase* const ptr = iStrings[aIndex]; - __KTRACE_OPT(KUSB, Kern::Printf(" Deleting string descriptor at index %d: 0x%x", aIndex, ptr)); - iStrings.Remove(aIndex); - delete ptr; - __KTRACE_OPT(KUSB, Kern::Printf(" Inserting string descriptor at index %d: 0x%x", aIndex, aDesc)); - iStrings.Insert(aDesc, aIndex); - } - - -// -// Checks whether there are any string descriptors in the array (apart from LangID). -// -TBool TUsbcDescriptorPool::AnyStringDescriptors() const - { - const TInt n = iStrings.Count(); - for (TInt i = 1; i < n; i++) - { - if (iStrings[i] != NULL) - return ETrue; - } - return EFalse; - } - - -// -// Returns true if aIndex exists and what is at that positition is not a NULL pointer. -// -TBool TUsbcDescriptorPool::StringDescriptorExists(TInt aIndex) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::StringDescriptorExists()")); - if (aIndex >= iStrings.Count()) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Bad string index: %d", aIndex)); - return EFalse; - } - else if (iStrings[aIndex] == NULL) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: No $ descriptor @ pos %d", aIndex)); - return EFalse; - } - return ETrue; - } - - -// -// -// -TInt TUsbcDescriptorPool::FindAvailableStringPos() const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcDescriptorPool::FindAvailableStringPos()")); - const TInt n = iStrings.Count(); - // We don't start from 0 because the first few locations are 'reserved'. - for (TInt i = KStringPosition_FirstAvailable; i < n; i++) - { - if (iStrings[i] == NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Found available NULL position: %d", i)); - return i; - } - } - return -1; - } - - -// -eof- diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/pdd/pil/src/misc.cpp --- a/usbdrv/peripheral/pdd/pil/src/misc.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,413 +0,0 @@ -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32/drivers/usbcc/misc.cpp -// Platform independent layer (PIL) of the USB Device controller driver: -// Implementations of misc. classes defined in usbc.h. -// -// - -/** - @file misc.cpp - @internalTechnology -*/ -// #include -#include - - -/** Helper function for logical endpoints and endpoint descriptors: - Split single Ep size into separate FS/HS sizes. - This function modifies its arguments. - */ -TInt TUsbcEndpointInfo::AdjustEpSizes(TInt& aEpSize_Fs, TInt& aEpSize_Hs) const - { - if (iType == UsbShai::KUsbEpTypeBulk) - { - // FS: [8|16|32|64] HS: 512 - if (iSize < 64) - { - aEpSize_Fs = iSize; - } - else - { - aEpSize_Fs = 64; - } - aEpSize_Hs = 512; - } - else if (iType == UsbShai::KUsbEpTypeInterrupt) - { - // FS: [0..64] HS: [0..1024] - if (iSize < 64) - { - aEpSize_Fs = iSize; - } - else - { - aEpSize_Fs = 64; - } - aEpSize_Hs = iSize; - } - else if (iType == UsbShai::KUsbEpTypeIsochronous) - { - // FS: [0..1023] HS: [0..1024] - if (iSize < 1023) - { - aEpSize_Fs = iSize; - } - else - { - aEpSize_Fs = 1023; - } - aEpSize_Hs = iSize; - } - else if (iType == UsbShai::KUsbEpTypeControl) - { - // FS: [8|16|32|64] HS: 64 - if (iSize < 64) - { - aEpSize_Fs = iSize; - } - else - { - aEpSize_Fs = 64; - } - aEpSize_Hs = 64; - } - else - { - aEpSize_Fs = aEpSize_Hs = 0; - return KErrGeneral; - } - - // For the reason of the following checks see Table 9-14. "Allowed wMaxPacketSize - // Values for Different Numbers of Transactions per Microframe". - if ((iType == UsbShai::KUsbEpTypeInterrupt) || (iType == UsbShai::KUsbEpTypeIsochronous)) - { - if (iTransactions == 1) - { - if (aEpSize_Hs < 513) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: Ep size too small: %d < 513. Correcting...", - aEpSize_Hs)); - aEpSize_Hs = 513; - } - } - else if (iTransactions == 2) - { - if (aEpSize_Hs < 683) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: Ep size too small: %d < 683. Correcting...", - aEpSize_Hs)); - aEpSize_Hs = 683; - } - } - } - return KErrNone; - } - - -/** Helper function for logical endpoints and endpoint descriptors: - If not set, assign a valid and meaningful value to iInterval_Hs, deriving from iInterval. - This function modifies the objects's data member(s). - */ -TInt TUsbcEndpointInfo::AdjustPollInterval() - { - if (iInterval_Hs != -1) - { - // Already done. - return KErrNone; - } - if ((iType == UsbShai::KUsbEpTypeBulk) || (iType == UsbShai::KUsbEpTypeControl)) - { - // Valid range: 0..255 (maximum NAK rate). - // (The host controller will probably ignore this value though - - // see the last sentence of section 9.6.6 for details.) - iInterval_Hs = 255; - } - else if (iType == UsbShai::KUsbEpTypeInterrupt) - { - // HS interval = 2^(iInterval_Hs-1) with a valid iInterval_Hs range of 1..16. - // The following table shows the mapping of HS values to actual intervals (and - // thus FS values) for the range of possible FS values (1..255). - // There is not always a 1:1 mapping possible, but we want at least to make sure - // that the HS polling interval is never longer than the FS one (except for 255). - // - // 1 = 1 - // 2 = 2 - // 3 = 4 - // 4 = 8 - // 5 = 16 - // 6 = 32 - // 7 = 64 - // 8 = 128 - // 9 = 256 - if (iInterval == 255) - iInterval_Hs = 9; - else if (iInterval >= 128) - iInterval_Hs = 8; - else if (iInterval >= 64) - iInterval_Hs = 7; - else if (iInterval >= 32) - iInterval_Hs = 6; - else if (iInterval >= 16) - iInterval_Hs = 5; - else if (iInterval >= 8) - iInterval_Hs = 4; - else if (iInterval >= 4) - iInterval_Hs = 3; - else if (iInterval >= 2) - iInterval_Hs = 2; - else if (iInterval == 1) - iInterval_Hs = 1; - else - { - // iInterval wasn't set properly by the user - iInterval_Hs = 1; - return KErrGeneral; - } - } - else if (iType == UsbShai::KUsbEpTypeIsochronous) - { - // Interpretation is the same for FS and HS. - iInterval_Hs = iInterval; - } - else - { - // '1' is a valid value for all endpoint types... - iInterval_Hs = 1; - return KErrGeneral; - } - return KErrNone; - } - - -TUsbcPhysicalEndpoint::TUsbcPhysicalEndpoint() - : iEndpointAddr(0), iIfcNumber(NULL), iLEndpoint(NULL), iSettingReserve(EFalse), iHalt(EFalse) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcPhysicalEndpoint::TUsbcPhysicalEndpoint")); - } - - -TInt TUsbcPhysicalEndpoint::TypeAvailable(TUint aType) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcPhysicalEndpoint::TypeAvailable")); - switch (aType) - { - case UsbShai::KUsbEpTypeControl: - return (iCaps.iTypesAndDir & UsbShai::KUsbEpTypeControl); - case UsbShai::KUsbEpTypeIsochronous: - return (iCaps.iTypesAndDir & UsbShai::KUsbEpTypeIsochronous); - case UsbShai::KUsbEpTypeBulk: - return (iCaps.iTypesAndDir & UsbShai::KUsbEpTypeBulk); - case UsbShai::KUsbEpTypeInterrupt: - return (iCaps.iTypesAndDir & UsbShai::KUsbEpTypeInterrupt); - default: - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: invalid EP type: %d", aType)); - return 0; - } - } - - -TInt TUsbcPhysicalEndpoint::DirAvailable(TUint aDir) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcPhysicalEndpoint::DirAvailable")); - switch (aDir) - { - case UsbShai::KUsbEpDirIn: - return (iCaps.iTypesAndDir & UsbShai::KUsbEpDirIn); - case UsbShai::KUsbEpDirOut: - return (iCaps.iTypesAndDir & UsbShai::KUsbEpDirOut); - default: - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: invalid EP direction: %d", aDir)); - return 0; - } - } - - -TInt TUsbcPhysicalEndpoint::EndpointSuitable(const TUsbcEndpointInfo* aEpInfo, TInt aIfcNumber) const - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcPhysicalEndpoint::EndpointSuitable")); - __KTRACE_OPT(KUSB, Kern::Printf(" looking for EP: type=0x%x dir=0x%x size=%d (ifc_num=%d)", - aEpInfo->iType, aEpInfo->iDir, aEpInfo->iSize, aIfcNumber)); - if (iSettingReserve) - { - __KTRACE_OPT(KUSB, Kern::Printf(" -> setting conflict")); - return 0; - } - // (aIfcNumber == -1) means the ep is for a new default interface setting - else if (iIfcNumber && (*iIfcNumber != aIfcNumber)) - { - // If this endpoint has already been claimed (iIfcNumber != NULL), - // but by a different interface(-set) than the currently looking one - // (*iIfcNumber != aIfcNumber), then it's not available. - // This works because we can assign the same physical endpoint - // to different alternate settings of the *same* interface, and - // because we check for available endpoints for every alternate setting - // as a whole. - __KTRACE_OPT(KUSB, Kern::Printf(" -> ifc conflict")); - return 0; - } - else if (!TypeAvailable(aEpInfo->iType)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" -> type conflict")); - return 0; - } - else if (!DirAvailable(aEpInfo->iDir)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" -> direction conflict")); - return 0; - } - else if (!(iCaps.iSizes & PacketSize2Mask(aEpInfo->iSize)) && !(iCaps.iSizes & UsbShai::KUsbEpSizeCont)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" -> size conflict")); - return 0; - } - else - return 1; - } - - -TUsbcPhysicalEndpoint::~TUsbcPhysicalEndpoint() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcPhysicalEndpoint::~TUsbcPhysicalEndpoint()")); - iLEndpoint = NULL; - } - - -TUsbcLogicalEndpoint::TUsbcLogicalEndpoint(DUsbClientController* aController, TUint aEndpointNum, - const TUsbcEndpointInfo& aEpInfo, TUsbcInterface* aInterface, - TUsbcPhysicalEndpoint* aPEndpoint) - : iController(aController), iLEndpointNum(aEndpointNum), iInfo(aEpInfo), iInterface(aInterface), - iPEndpoint(aPEndpoint) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcLogicalEndpoint::TUsbcLogicalEndpoint()")); - // Adjust FS/HS endpoint sizes - if (iInfo.AdjustEpSizes(iEpSize_Fs, iEpSize_Hs) != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Unknown endpoint type: %d", iInfo.iType)); - } - __KTRACE_OPT(KUSB, Kern::Printf(" Now set: iEpSize_Fs=%d iEpSize_Hs=%d (iInfo.iSize=%d)", - iEpSize_Fs, iEpSize_Hs, iInfo.iSize)); - // Adjust HS polling interval - if (iInfo.AdjustPollInterval() != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Unknown ep type (%d) or invalid interval value (%d)", - iInfo.iType, iInfo.iInterval)); - } - __KTRACE_OPT(KUSB, Kern::Printf(" Now set: iInfo.iInterval=%d iInfo.iInterval_Hs=%d", - iInfo.iInterval, iInfo.iInterval_Hs)); - // Additional transactions requested on a non High Bandwidth ep? - if ((iInfo.iTransactions > 0) && !aPEndpoint->iCaps.iHighBandwidth) - { - __KTRACE_OPT(KPANIC, - Kern::Printf(" Warning: Additional transactions requested but not a High Bandwidth ep")); - } - } - - -TUsbcLogicalEndpoint::~TUsbcLogicalEndpoint() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcLogicalEndpoint::~TUsbcLogicalEndpoint: #%d", iLEndpointNum)); - // If the real endpoint this endpoint points to is also used by - // any other logical endpoint in any other setting of this interface - // then we leave the real endpoint marked as used. Otherwise we mark - // it as available (set its ifc number pointer to NULL). - const TInt n = iInterface->iInterfaceSet->iInterfaces.Count(); - for (TInt i = 0; i < n; ++i) - { - const TUsbcInterface* const ifc = iInterface->iInterfaceSet->iInterfaces[i]; - const TInt m = ifc->iEndpoints.Count(); - for (TInt j = 0; j < m; ++j) - { - const TUsbcLogicalEndpoint* const ep = ifc->iEndpoints[j]; - if ((ep->iPEndpoint == iPEndpoint) && (ep != this)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Physical endpoint still in use -> we leave it as is")); - return; - } - } - } - __KTRACE_OPT(KUSB, Kern::Printf(" Closing DMA channel")); - const TInt idx = iController->EpAddr2Idx(iPEndpoint->iEndpointAddr); - // If the endpoint doesn't support DMA (now or ever) the next operation will be a no-op. - // iController->CloseDmaChannel(idx); - __KTRACE_OPT(KUSB, Kern::Printf(" Setting physical ep 0x%02x ifc number to NULL (was %d)", - iPEndpoint->iEndpointAddr, *iPEndpoint->iIfcNumber)); - iPEndpoint->iIfcNumber = NULL; - } - - -TUsbcInterface::TUsbcInterface(TUsbcInterfaceSet* aIfcSet, TUint8 aSetting, TBool aNoEp0Requests) - : iEndpoints(2), iInterfaceSet(aIfcSet), iSettingCode(aSetting), iNoEp0Requests(aNoEp0Requests) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcInterface::TUsbcInterface()")); - } - - -TUsbcInterface::~TUsbcInterface() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcInterface::~TUsbcInterface()")); - iEndpoints.ResetAndDestroy(); - } - - -TUsbcInterfaceSet::TUsbcInterfaceSet(const DBase* aClientId, TUint8 aIfcNum) - : iInterfaces(2), iClientId(aClientId), iInterfaceNumber(aIfcNum), iCurrentInterface(0) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcInterfaceSet::TUsbcInterfaceSet()")); - } - - -TUsbcInterfaceSet::~TUsbcInterfaceSet() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcInterfaceSet::~TUsbcInterfaceSet()")); - iInterfaces.ResetAndDestroy(); - } - - -TUsbcConfiguration::TUsbcConfiguration(TUint8 aConfigVal) - : iInterfaceSets(1), iConfigValue(aConfigVal) // iInterfaceSets(1): granularity - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcConfiguration::TUsbcConfiguration()")); - } - - -TUsbcConfiguration::~TUsbcConfiguration() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcConfiguration::~TUsbcConfiguration()")); - iInterfaceSets.ResetAndDestroy(); - } - - -_LIT(KDriverName, "Usbcc"); - -DUsbcPowerHandler::DUsbcPowerHandler(DUsbClientController* aController) - : DPowerHandler(KDriverName), iController(aController) - {} - - -void DUsbcPowerHandler::PowerUp() - { - if (iController) - iController->iPowerUpDfc.Enque(); - } - - -void DUsbcPowerHandler::PowerDown(TPowerState) - { - if (iController) - iController->iPowerDownDfc.Enque(); - } - - -// -eof- diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/pdd/pil/src/ps_usbc.cpp --- a/usbdrv/peripheral/pdd/pil/src/ps_usbc.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4832 +0,0 @@ -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32/drivers/usbcc/ps_usbc.cpp -// Platform independent layer (PIL) of the USB Device controller driver (PDD). -// Interface to the USB LDD. -// -// - -/** - @file ps_usbc.cpp - @internalTechnology -*/ -//#include -#include - -#include "controltransfersm.h" -/** - TUsbcInterfaceSet and TUsbcInterface - ==================================== - - TUsbcInterfaceSet represents a 'USB Interface' and TUsbcInterface - represents an 'Alternate Setting of a USB Interface'. - - Since every LDD governs exactly one interface, the above distinction is - made only within the USB implementation. At the LDD API, there is/are - simply one or more settings for this single interface, numbered from '0' - (the default) to 'n', and specified by the parameter 'TInt aInterfaceNum'. - - Within the PDD implementation, for a TUsbcInterfaceSet number the parameter - 'TInt aIfcSet' is used (local variable ifcset); for a TUsbcInterface number - the parameter 'TInt aIfc' is used (local variable ifc). - - - iConfigs[0] and CurrentConfig() - =============================== - - One problem with this file is that it always uses iConfigs[0] and not - CurrentConfig(). This is mainly because the API to the LDD doesn't know - about the concept of multiple configurations, and thus always assumes one - single configuration (which is also always active: a further problem). - - In the file chapter9.cpp this issue doesn't exist, since there we always - have to obey the USB protocol, and in this way will use the configuration - which is selected by the host (which will then again currently always be - iConfigs[0].) - - iEp0ClientId - ================================== - - The purpose of these two members of class DUsbClientController is the - following. - - They are used only during Ep0 control transactions which have an OUT (Rx) - data stage. We cannot deduce from the received data itself to whom - it is addressed (that's because of the shared nature of Ep0). - - In order to be able to tell whether received Ep0 data is to be processed by - the PIL or a LDD, we use iEp0ClientId. iEp0ClientId is usually NULL, which - means it is our data. However it is set to the client ID of an LDD in case - 2) above. That way we can subsequently hand over received data to the - correct client LDD. - - iEp0DataReceived tracks the amount of data already received - it is used to - determine the end of the DATA_OUT phase, irrespective of the owner of the - data. The total amount that is to be received can be obtained via - iConTransferMgr->PktParser().Length(). (iConTransferMgr->PktParser() holds in - that case the Setup packet of the current Control transfer.) - - iEp0ClientDataTransmitting is only set to TRUE if a client sets up an Ep0 - write. After that transmission has completed we use this value to decide - whether we have to report the completion to a client or not. (If this - variable is FALSE, we did set up the write and thus no client notification - is necessary.) - -*/ - -// -// === Global and Local Variables ================================================================== -// - -// Currently we support at most 2 peripheral stack -GLDEF_D DUsbClientController* DUsbClientController::UsbClientController[] = {NULL, NULL}; - -static const TInt KUsbReconnectDelay = 500; // milliseconds - -// Charger detector is the guy(PSL) who can detect the charger type and report -// it via a charger type observer -static UsbShai::MChargerDetectorIf* gChargerDetector = NULL; - -// Charger observer is the guy who want to monitor the chager type event. -static UsbShai::MChargerDetectorObserverIf* gChargerObsever = NULL; - - -// Those const variables are used to construct the default -// Usb descriptors, Upper layer can change them later. -/** Default vendor ID to set in device descriptor */ -static const TUint16 KUsbVendorId = KUsbVendorId_Symbian; -/** Default product ID to set in device descriptor */ -static const TUint16 KUsbProductId = 0x1111; -/** Default language ID (US English) to set in device descriptor */ -static const TUint16 KUsbLangId = 0x0409; -static const TUint8 KUsbNumberOfConfiguration = 0x01; -/** Default manufacturer string */ -static const wchar_t KStringManufacturer[] = L"Nokia Corporation"; -/** Default product name string */ -static const wchar_t KStringProduct[] = L"Nokia USB Driver"; -/** Default configuration name string */ -static const wchar_t KStringConfig[] = L"Bulk transfer method configuration"; -/** Default configuration name string */ -static const wchar_t KStringSerial[] = L"Serial Not defined"; - - -// -// === USB Controller member function implementations - LDD API (public) =========================== -// - -DECLARE_STANDARD_EXTENSION()//lint !e1717 !e960 defined by symbian - { - __KTRACE_OPT(KUSB, Kern::Printf("> Peripheral PIL Extension entry")); - // Don't need to do anything here, using extension just to make sure - // we're loaded when peripheral PSL trying to register itself to us. - __KTRACE_OPT(KUSB, Kern::Printf("< Peripheral PIL Extension exit")); - return KErrNone; - } - -/** The class destructor. - - This rarely gets called, except, for example when something goes - wrong during construction. - - It's not exported because it is virtual. -*/ -DUsbClientController::~DUsbClientController() - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::~DUsbClientController()")); - if (iPowerHandler) - { - iPowerHandler->Remove(); - delete iPowerHandler; - } - - // ResetAndDestroy() will call for every array element the destructor of the pointed-to object, - // before deleting the element itself, and closing the array. - iConfigs.ResetAndDestroy(); - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::~DUsbClientController(): Done.")); - } - -EXPORT_C DUsbClientController* DUsbClientController::Create(UsbShai::MPeripheralControllerIf& aPeripheralControllerIf, - const UsbShai::TPeripheralControllerProperties& aProperties, - TBool aIsOtgPort) - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::Create")); - // Attempt to create the object - DUsbClientController* usbcc = new DUsbClientController(aPeripheralControllerIf, - aProperties, - aIsOtgPort); - - __ASSERT_DEBUG( (usbcc != NULL), Kern::Fault( " USB PSL Out of memory, DUsbClientController", __LINE__ ) ); - - if (usbcc != NULL) - { - // Second phase constructor - TInt err = usbcc->Construct(); - __ASSERT_DEBUG( (err == KErrNone), Kern::Fault( "DUsbClientController::Construct failed", err) ); - - if (err != KErrNone) - { - delete usbcc; - usbcc = NULL; - } - } - - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::Create instance = %d",usbcc)); - - return usbcc; - } - -/** - * FIXME: This function used to be called by the dummy DCD to disable - * the peripheral stack. It has been deprecated and we currently use - * DisablePeripheralStack() to achieve the same effect. - */ -EXPORT_C void DUsbClientController::DisableClientStack() - { - __KTRACE_OPT(KUSB, Kern::Printf("CALL TO OBSOLETE FUNCTION: DUsbClientController::DisableClientStack()")); - } - - -/** - * FIXME: This function used to be called by the dummy DCD to enable - * the peripheral stack. It has been deprecated and we currently use - * EnablePeripheralStack() to achieve the same effect. - */ -EXPORT_C void DUsbClientController::EnableClientStack() - { - __KTRACE_OPT(KUSB, Kern::Printf("CALL TO OBSOLETE FUNCTION: DUsbClientController::EnableClientStack()")); - } - - -/** Called by LDD to see if controller is usable. - - @return ETrue if controller is in normal state, EFalse if it is disabled. -*/ -EXPORT_C TBool DUsbClientController::IsActive() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::IsActive = %d",iStackIsActive)); - return iStackIsActive; - } - - -/** Called by LDD to register client callbacks. - - @return KErrNone if successful, KErrAlreadyExists callback exists. -*/ -EXPORT_C TInt DUsbClientController::RegisterClientCallback(TUsbcClientCallback& aCallback) - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::RegisterClientCallback()")); - if (iClientCallbacks.Elements() == KUsbcMaxListLength) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Maximum list length reached: %d", - KUsbcMaxListLength)); - return KErrGeneral; - } - TSglQueIter iter(iClientCallbacks); - TUsbcClientCallback* p; - while ((p = iter++) != NULL) - if (p == &aCallback) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Error: ClientCallback @ 0x%x already registered", &aCallback)); - return KErrAlreadyExists; - } - iClientCallbacks.AddLast(aCallback); - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::RegisterClientCallback()")); - return KErrNone; - } - - -/** Returns a pointer to the USB client controller object. - - This function is static. - - @param aUdc The number of the UDC (0..n) for which the pointer is to be returned. - - @return A pointer to the USB client controller object. -*/ -EXPORT_C DUsbClientController* DUsbClientController::UsbcControllerPointer(TInt aUdc) - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::UsbcControllerPointer()")); - - if (aUdc < 0 || aUdc > 1) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: aUdc out of range (%d)", aUdc)); - return NULL; - } - - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::UsbcControllerPointer()")); - - return UsbClientController[aUdc]; - } - - -/** Fills the buffer passed in as an argument with endpoint capability information. - - @see DUsbClientController::DeviceCaps() - @see TUsbcEndpointData - @see TUsbDeviceCaps - - @param aClientId A pointer to the LDD making the enquiry. - @param aCapsBuf A reference to a descriptor buffer, which, on return, contains an array of - TUsbcEndpointData elements; there are TUsbDeviceCaps::iTotalEndpoints elements in the array; - call DeviceCaps() to get the number of elements required. -*/ -EXPORT_C void DUsbClientController::EndpointCaps(const DBase* aClientId, TDes8& aCapsBuf) const - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::EndpointCaps()")); - // Here we do not simply call DUsbClientController::DeviceEndpointCaps(), - // because that function fills an array which comprises of _all_ endpoints, - // whereas this function omits ep0 and all unusable endpoints. - // Apart from that, we have to fill an array of TUsbcEndpointData, not TUsbcEndpointCaps. - TUsbcEndpointData data[KUsbcMaxEndpoints]; - const TInt ifcset_num = ClientId2InterfaceNumber(aClientId); - for (TInt i = 2, j = 0; i < iDeviceTotalEndpoints; ++i) - { - __KTRACE_OPT(KUSB, Kern::Printf(" DUsbClientController::Caps: RealEndpoint #%d", i)); - if (iRealEndpoints[i].iCaps.iTypesAndDir != UsbShai::KUsbEpNotAvailable) - { - __KTRACE_OPT(KUSB, Kern::Printf(" DUsbClientController::Caps: --> UsableEndpoint #%d", j)); - - data[j].iCaps.iSizes = iRealEndpoints[i].iCaps.iSizes; - data[j].iCaps.iTypesAndDir = iRealEndpoints[i].iCaps.iTypesAndDir; - data[j].iCaps.iHighBandwidth = iRealEndpoints[i].iCaps.iHighBandwidth; - data[j].iCaps.iReserved[0] = iRealEndpoints[i].iCaps.iReserved[0]; - data[j].iCaps.iReserved[1] = iRealEndpoints[i].iCaps.iReserved[1]; - - if (ifcset_num < 0) - { - // If this LDD doesn't own an interface, but the Ep points to one, - // then that must be the interface of a different LDD. Hence the Ep - // is not available for this LDD. - data[j].iInUse = (iRealEndpoints[i].iIfcNumber != NULL); - } - else - { - // If this LDD does already own an interface, and the Ep also points to one, - // then the Ep is not available for this LDD only if that interface is owned - // by a different LDD (i.e. if the interface number is different). - // Reason: Even though the endpoint might already be part of an interface setting, - // it is still available for a different alternate setting of the same interface. - data[j].iInUse = ((iRealEndpoints[i].iIfcNumber != NULL) && - (*(iRealEndpoints[i].iIfcNumber) != ifcset_num)); - } - - j++; - } - } - // aCapsBuf resides in userland - TPtrC8 des((TUint8*)data, sizeof(data)); - const TInt r = Kern::ThreadDesWrite((reinterpret_cast(aClientId))->Client(), - &aCapsBuf, des, 0, KChunkShiftBy0, NULL); - if (r != KErrNone) - { - Kern::ThreadKill((reinterpret_cast(aClientId))->Client(), - EExitPanic, r, KUsbPILKillCat); - } - - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::EndpointCaps()")); - } - - -/** Fills the buffer passed in as an argument with device capability information. - - @see TUsbDeviceCaps - @see TUsbDeviceCapsV01 - - @param aClientId A pointer to the LDD making the enquiry. - @param aCapsBuf A reference to a descriptor buffer which, on return, contains - a TUsbDeviceCaps structure. -*/ -EXPORT_C void DUsbClientController::DeviceCaps(const DBase* aClientId, TDes8& aCapsBuf) const - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::DeviceCaps()")); - TUsbDeviceCaps caps; - caps().iTotalEndpoints = iDeviceUsableEndpoints; // not DeviceTotalEndpoints()! - - caps().iSelfPowered = iSelfPowered; - caps().iRemoteWakeup = iRemoteWakeup; - caps().iHighSpeed = (iControllerProperties.iControllerCaps & UsbShai::KDevCapHighSpeed)?ETrue:EFalse; - - // PIL always assume controller support this caps, see explaination in peripheral shai header - caps().iFeatureWord1 = caps().iFeatureWord1 | KUsbDevCapsFeatureWord1_CableDetectWithoutPower; - - caps().iFeatureWord1 = caps().iFeatureWord1 | KUsbDevCapsFeatureWord1_EndpointResourceAllocV2; - caps().iReserved = 0; - - // aCapsBuf resides in userland - const TInt r = Kern::ThreadDesWrite((reinterpret_cast(aClientId))->Client(), - &aCapsBuf, caps, 0, KChunkShiftBy0, NULL); - if (r != KErrNone) - { - Kern::ThreadKill((reinterpret_cast(aClientId))->Client(), - EExitPanic, r, KUsbPILKillCat); - } - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::DeviceCaps()")); - } - - -TUsbcEndpointInfoArray::TUsbcEndpointInfoArray(const TUsbcEndpointInfo* aData, TInt aDataSize) - { - iType = EUsbcEndpointInfo; - iData = (TUint8*) aData; - if (aDataSize > 0) - iDataSize = aDataSize; - else - iDataSize = sizeof(TUsbcEndpointInfo); - } - - -inline TUsbcEndpointInfo& TUsbcEndpointInfoArray::operator[](TInt aIndex) const - { - return *(TUsbcEndpointInfo*) &iData[aIndex * iDataSize]; - } - - -EXPORT_C TInt DUsbClientController::SetInterface(const DBase* aClientId, DThread* aThread, - TInt aInterfaceNum, TUsbcClassInfo& aClass, - TDesC8* aString, TInt aTotalEndpointsUsed, - const TUsbcEndpointInfo aEndpointData[], - TInt (*aRealEpNumbers)[6], TUint32 aFeatureWord) - { - TUsbcEndpointInfoArray endpointData = TUsbcEndpointInfoArray(aEndpointData); - return SetInterface(aClientId, aThread, aInterfaceNum, aClass, aString, aTotalEndpointsUsed, - endpointData, (TInt*) aRealEpNumbers, aFeatureWord); - } - - -/** Creates a new USB interface (one setting), complete with endpoints, descriptors, etc., - and chains it into the internal device configuration tree. - - @param aClientId A pointer to the LDD owning the new interface. - @param aThread A pointer to the thread the owning LDD is running in. - @param aInterfaceNum The interface setting number of the new interface setting. This must be 0 - if it is the first setting of the interface that gets created, or 1 more than the last setting - that was created for this interface. - @param aClass Contains information about the device class this interface might belong to. - @param aString A pointer to a string that is used for the string descriptor of this interface. - @param aTotalEndpointsUsed The number of endpoints used by this interface (and also the number of - elements of the following array). - @param aEndpointData An array with aTotalEndpointsUsed elements, containing information about the - endpoints of this interface. - - @return KErrNotSupported if Control endpoints are requested by the LDD but aren't supported by the PIL, - KErrInUse if at least one requested endpoint is - temporarily or permanently - not available for use, - KErrNoMemory if (endpoint, interface, string) descriptor allocation fails, KErrGeneral if something else - goes wrong during endpoint or interface or descriptor creation, KErrNone if interface successfully set up. -*/ -EXPORT_C TInt DUsbClientController::SetInterface(const DBase* aClientId, DThread* aThread, - TInt aInterfaceNum, TUsbcClassInfo& aClass, - TDesC8* aString, TInt aTotalEndpointsUsed, - const TUsbcEndpointInfoArray aEndpointData, - TInt aRealEpNumbers[], TUint32 aFeatureWord) - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::SetInterface()")); - if (aInterfaceNum != 0) - { - __KTRACE_OPT(KUSB, Kern::Printf(" alternate interface setting request: #%d", aInterfaceNum)); - } - -#ifndef USB_SUPPORTS_CONTROLENDPOINTS - for (TInt i = 0; i < aTotalEndpointsUsed; ++i) - { - if (aEndpointData[i].iType == UsbShai::KUsbEpTypeControl) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: control endpoints not supported")); - return KErrNotSupported; - } - } -#endif - - // Check for endpoint availability & check those endpoint's capabilities - const TInt ifcset_num = ClientId2InterfaceNumber(aClientId); - - // The passed-in ifcset_num may be -1 now, but that's intended. - if (!CheckEpAvailability(aTotalEndpointsUsed, aEndpointData, ifcset_num)) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: endpoints not (all) available")); - return KErrInUse; - } - - // Create & setup new interface - TUsbcInterface* ifc = CreateInterface(aClientId, aInterfaceNum, aFeatureWord); - if (ifc == NULL) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: ifc == NULL")); - return KErrGeneral; - } - - // Create logical endpoints - TInt r = CreateEndpoints(ifc, aTotalEndpointsUsed, aEndpointData, aRealEpNumbers); - if (r != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: CreateEndpoints() err = %d ",r)); - DeleteInterface(ifc->iInterfaceSet->iInterfaceNumber, aInterfaceNum); - return r; - } - - // Create & setup interface, string, and endpoint descriptors - r = SetupIfcDescriptor(ifc, aClass, aThread, aString, aEndpointData); - if (r != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: SetupIfcDescriptor() err = %d",r)); - return r; - } - - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::SetInterface()")); - return KErrNone; - } - - -/** Releases an existing USB interface (one setting), complete with endpoints, descriptors, etc., - and removes it from the internal device configuration tree. - - @param aClientId A pointer to the LDD owning the interface. - @param aInterfaceNum The setting number of the interface setting to be deleted. This must be - the highest numbered (or 'last') setting for this interface. - - @return KErrNotFound if interface (not setting) for some reason cannot be found, KErrArgument if an - invalid interface setting number is specified (not existing or existing but too small), KErrNone if - interface successfully released or if this client doesn't own any interface. -*/ -EXPORT_C TInt DUsbClientController::ReleaseInterface(const DBase* aClientId, TInt aInterfaceNum) - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::ReleaseInterface(..., %d)", aInterfaceNum)); - const TInt ifcset = ClientId2InterfaceNumber(aClientId); - if (ifcset < 0) - { - __KTRACE_OPT(KUSB, Kern::Printf(" interface not found")); // no error - return KErrNone; - } - TUsbcInterfaceSet* const ifcset_ptr = InterfaceNumber2InterfacePointer(ifcset); - if (!ifcset_ptr) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Error: interface number %d doesn't exist", ifcset)); - return KErrNotFound; - } - const TInt setting_count = ifcset_ptr->iInterfaces.Count(); - if ((setting_count - 1) != aInterfaceNum) - { - __KTRACE_OPT(KUSB, - Kern::Printf(" Error: interface settings must be released in descending order:\n\r" - " %d setting(s) exist, #%d was requested to be released.\n\r" - " (#%d has to be released first)", - setting_count, aInterfaceNum, setting_count - 1)); - return KErrArgument; - } - // Tear down current setting (invalidate configured state) - __KTRACE_OPT(KUSB, Kern::Printf(" tearing down InterfaceSet %d", ifcset)); - // Cancel all transfers on the current setting of this interface and deconfigure all its endpoints. - InterfaceSetTeardown(ifcset_ptr); - // 'Setting 0' means: delete all existing settings. - if (aInterfaceNum == 0) - { - TInt m = ifcset_ptr->iInterfaces.Count(); - while (m > 0) - { - m--; - // Ground the physical endpoints' logical_endpoint_pointers - const TInt n = ifcset_ptr->iInterfaces[m]->iEndpoints.Count(); - for (TInt i = 0; i < n; ++i) - { - TUsbcPhysicalEndpoint* ptr = const_cast - (ifcset_ptr->iInterfaces[m]->iEndpoints[i]->iPEndpoint); - ptr->iLEndpoint = NULL; - } - // Delete the setting itself + its ifc & ep descriptors - DeleteInterface(ifcset, m); - iDescriptors.DeleteIfcDescriptor(ifcset, m); - } - } - else - { - // Ground the physical endpoints' logical_endpoint_pointers - const TInt n = ifcset_ptr->iInterfaces[aInterfaceNum]->iEndpoints.Count(); - for (TInt i = 0; i < n; ++i) - { - TUsbcPhysicalEndpoint* ptr = const_cast - (ifcset_ptr->iInterfaces[aInterfaceNum]->iEndpoints[i]->iPEndpoint); - ptr->iLEndpoint = NULL; - } - // Delete the setting itself + its ifc & ep descriptors - DeleteInterface(ifcset, aInterfaceNum); - iDescriptors.DeleteIfcDescriptor(ifcset, aInterfaceNum); - } - // Delete the whole interface if all settings are gone - if (ifcset_ptr->iInterfaces.Count() == 0) - { - DeleteInterfaceSet(ifcset); - } - // We now no longer have a valid current configuration - iCurrentConfig = 0; - if (iDeviceState == UsbShai::EUsbPeripheralStateConfigured) - { - NextDeviceState(UsbShai::EUsbPeripheralStateAddress); - } - // If it was the last interface(set)... - if (iConfigs[0]->iInterfaceSets.Count() == 0) - { - __KTRACE_OPT(KUSB, Kern::Printf(" No ifc left -> turning off UDC")); - // First disconnect the device from the bus - UsbDisconnect(); - DeActivateHardwareController(); - // (this also disables endpoint zero; we cannot have a USB device w/o interface, see 9.6.3) - } - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::ReleaseInterface")); - return KErrNone; - } - - -/** Enforces a USB re-enumeration by disconnecting the UDC from the bus (if it is currently connected) and - re-connecting it. - - This only works if the PSL supports it, i.e. if SoftConnectCaps() returns ETrue. -*/ -EXPORT_C TInt DUsbClientController::ReEnumerate() - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::ReEnumerate()")); - - // ReEnumerate is possible only when stack is enabled - if (!iStackIsActive) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Client stack disabled -> returning here")); - return KErrNotReady; - } - - // If no interfaces setup, there is no point to reenumerate - if (iConfigs[0]->iInterfaceSets.Count() == 0) - { - __KTRACE_OPT(KUSB, Kern::Printf(" > No interface registered -> no need to re-enumerate")); - return KErrNone;; - } - - if (!iHardwareActivated) - { - // If the UDC is still off, we switch it on here. - const TInt r = ActivateHardwareController(); - if (r != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: ActivateHardwareController() failed: %d", r)); - return r; - } - - // Finally connect the device to the bus - UsbConnect(); - } - else - { - UsbDisconnect(); - - // Now we have to wait a certain amount of time, in order to give the host the opportunity - // to come to terms with the new situation. - // (The ETrue parameter makes the callback get called in DFC instead of in ISR context.) - iReconnectTimer.OneShot(KUsbReconnectDelay, ETrue); - } - - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::ReEnumerate()")); - return KErrNone;; - } - - -/** Powers up the UDC if one or more interfaces exist. - - @return KErrNone if UDC successfully powered up, KErrNotReady if no - interfaces have been registered yet, KErrHardwareNotAvailable if UDC - couldn't be activated. -*/ -EXPORT_C TInt DUsbClientController::PowerUpUdc() - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::PowerUpUdc()")); - - // we need to check whether Stack is activate or not(can be done by otg sw in otg setup - // or by vBus risen/fallen event in a non-otg env) - if (!iStackIsActive) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Client stack disabled -> returning here")); - return KErrNotReady; - } - - if (iConfigs[0]->iInterfaceSets.Count() == 0) - { - __KTRACE_OPT(KUSB, Kern::Printf(" No interface registered -> won't power up UDC")); - return KErrNotReady; - } - - // If the UDC is still off, we switch it on here. - const TInt r = ActivateHardwareController(); - if (r != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: ActivateHardwareController() failed: %d", r)); - } - - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::PowerUpUdc() returns %d",r)); - return r; - } - - -/** Connects the UDC to the bus. - - @return KErrNone if UDC successfully connected, - KErrNotSupported if KDevCapSoftConnect not supported - KErrGeneral if there was an error. - -*/ -EXPORT_C TInt DUsbClientController::UsbConnect() - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::UsbConnect()")); - iClientSupportReady = ETrue; - - // If a deferred reset is pending, service it now - const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); - if (iUsbResetDeferred) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Resetting USB Reset 'defer' flag")); - iUsbResetDeferred = EFalse; - (void) ProcessResetEvent(EFalse); - } - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - - // Indicate readiness to connect to the PSL - const TInt r = iController.PeripheralConnect(); - - // Check whether Stack is activated by OTG controller - // or Vbus Risen had been detected. - // If either of them is true and HW is not activated yet, do it here. - if (iStackIsActive && !iHardwareActivated ) - { - // PowerUpUdc only do Activating Hardware when there are at least 1 - // Iterface registered - PowerUpUdc(); - } - - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::UsbConnect()")); - return r; - } - - -/** Disconnects the UDC from the bus. - - This only works if the PSL supports it, i.e. if SoftConnectCaps() returns ETrue. - - @return KErrNone if UDC successfully disconnected, KErrGeneral if there was an error. -*/ -EXPORT_C TInt DUsbClientController::UsbDisconnect() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::UsbDisconnect()")); - iClientSupportReady = EFalse; - - // Indicate to PSL that we are no longer ready to connect - const TInt r = iController.PeripheralDisconnect(); - - // There won't be any notification by the PSL about this, - // so we have to notify the LDD/user ourselves: - if ((r == KErrNone) && (iDeviceState != UsbShai::EUsbPeripheralStateUndefined)) - { - // Not being in state UNDEFINED implies that the cable is inserted. - if (iHardwareActivated) - { - NextDeviceState(UsbShai::EUsbPeripheralStatePowered); - } - // (If the hardware is NOT activated at this point, we can only be in - // state UsbShai::EUsbPeripheralStateAttached, so we don't have to move to it.) - } - return r; - } - - -/** Registers a notification callback for changes of the USB device state. - - In the event of a device state change, the callback's state member gets updated (using SetState) with a - new UsbShai::TUsbPeripheralState value, and then the callback is executed (DoCallback). 'USB device state' here refers - to the Visible Device States as defined in chapter 9 of the USB specification. - - @param aCallback A reference to a properly filled in status 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::RegisterForStatusChange(TUsbcStatusCallback& aCallback) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::RegisterForStatusChange()")); - if (iStatusCallbacks.Elements() == KUsbcMaxListLength) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Maximum list length reached: %d", - KUsbcMaxListLength)); - return KErrGeneral; - } - if (IsInTheStatusList(aCallback)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Error: StatusCallback @ 0x%x already registered", &aCallback)); - return KErrGeneral; - } - const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); - iStatusCallbacks.AddLast(aCallback); - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return KErrNone; - } - - -/** De-registers (removes from the list of pending requests) a notification callback for the USB device - status. - - @param aClientId A pointer to the LDD owning the status change callback. - - @return KErrNone if callback successfully unregistered, KErrNotFound if the callback couldn't be found. -*/ -EXPORT_C TInt DUsbClientController::DeRegisterForStatusChange(const DBase* aClientId) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::DeRegisterForStatusChange()")); - __ASSERT_DEBUG((aClientId != NULL), Kern::Fault(KUsbPILPanicCat, __LINE__)); - const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); - TSglQueIter iter(iStatusCallbacks); - TUsbcStatusCallback* p; - while ((p = iter++) != NULL) - { - if (p->Owner() == aClientId) - { - __KTRACE_OPT(KUSB, Kern::Printf(" removing StatusCallback @ 0x%x", p)); - iStatusCallbacks.Remove(*p); - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return KErrNone; - } - } - __KTRACE_OPT(KUSB, Kern::Printf(" client not found")); - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return KErrNotFound; - } - - -/** Registers a notification callback for changes of the state of endpoints. - - In the event of a state change of an endpoint that is spart of an interface which is owned by the LDD - specified in the callback structure, the callback's state member gets updated (using SetState) with a new - value, and the callback is executed (DoCallback). 'Endpoint state' here refers to the state of the - ENDPOINT_HALT feature of an endpoint as described in chapter 9 of the USB specification. The contents of - the state variable reflects the state of the halt features for all endpoints of the current interface - setting: bit 0 represents endpoint 1, bit 1 endpoint 2, etc. A set bit means 'endpoint halted', a cleared - bit 'endpoint not halted'. - - @param aCallback A reference to a properly filled in endpoint status 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::RegisterForEndpointStatusChange(TUsbcEndpointStatusCallback& aCallback) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::RegisterForEndpointStatusChange()")); - if (iEpStatusCallbacks.Elements() == KUsbcMaxListLength) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Maximum list length reached: %d", - KUsbcMaxListLength)); - return KErrGeneral; - } - if (IsInTheEpStatusList(aCallback)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Error: EpStatusCallback @ 0x%x already registered", &aCallback)); - return KErrGeneral; - } - const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); - iEpStatusCallbacks.AddLast(aCallback); - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return KErrNone; - } - - -/** De-registers (removes from the list of pending requests) a notification callback for changes of the state - of endpoints. - - @param aClientId A pointer to the LDD owning the endpoint status change callback. - - @return KErrNone if callback successfully unregistered, KErrNotFound if the callback couldn't be found. -*/ -EXPORT_C TInt DUsbClientController::DeRegisterForEndpointStatusChange(const DBase* aClientId) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::DeRegisterForEndpointStatusChange()")); - __ASSERT_DEBUG((aClientId != NULL), Kern::Fault(KUsbPILPanicCat, __LINE__)); - const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); - TSglQueIter iter(iEpStatusCallbacks); - TUsbcEndpointStatusCallback* p; - while ((p = iter++) != NULL) - { - if (p->Owner() == aClientId) - { - __KTRACE_OPT(KUSB, Kern::Printf(" removing EpStatusCallback @ 0x%x", p)); - iEpStatusCallbacks.Remove(*p); - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return KErrNone; - } - } - __KTRACE_OPT(KUSB, Kern::Printf(" client not found")); - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return KErrNotFound; - } - - -/** Returns the number of the currently active alternate interface setting for this interface. - - @param aClientId A pointer to the LDD owning the interface. - @param aInterfaceNum Here the interface gets written to. - - @return KErrNotFound if an interface for this client couldn't be found, KErrNone if setting value was - successfully written. -*/ -EXPORT_C TInt DUsbClientController::GetInterfaceNumber(const DBase* aClientId, TInt& aInterfaceNum) const - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetInterfaceNumber()")); - const TInt ifcset = ClientId2InterfaceNumber(aClientId); - if (ifcset < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error (ifc < 0)")); - return KErrNotFound; - } - const TUsbcInterfaceSet* const ifcset_ptr = InterfaceNumber2InterfacePointer(ifcset); - if (!ifcset_ptr) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: interface number %d doesn't exist", ifcset)); - return KErrNotFound; - } - aInterfaceNum = ifcset_ptr->iCurrentInterface; - return KErrNone; - } - - -/** This is normally called once by an LDD's destructor, either after a Close() on the user side, - or during general cleanup. - - It might also be called by the LDD when some internal unrecoverable error occurs. - - This function - - de-registers a possibly pending device state change notification request, - - de-registers a possibly pending endpoint state change notification request, - - releases all interfaces + settings owned by this LDD, - - cancels all remaining (if any) read/write requests. - - @param aClientId A pointer to the LDD to be unregistered. - - @return KErrNone. -*/ -EXPORT_C TInt DUsbClientController::DeRegisterClient(const DBase* aClientId) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::DeRegisterClient(0x%x)", aClientId)); - // Cancel all device state notification requests - DeRegisterForStatusChange(aClientId); - // Cancel all endpoint state notification requests - DeRegisterForEndpointStatusChange(aClientId); - DeRegisterForOtgFeatureChange(aClientId); - DeRegisterClientCallback(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); - // Cancel all remaining (if any) read/write requests - DeleteRequestCallbacks(aClientId); - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::DeRegisterClient: Done.")); - return r; - } - - -/** Returns the currently used Ep0 max packet size. - - @return The currently used Ep0 max packet size. -*/ -EXPORT_C TInt DUsbClientController::Ep0PacketSize() const - { - const TUsbcLogicalEndpoint* const ep = iRealEndpoints[0].iLEndpoint; - if (iHighSpeed) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Ep0 size = %d (HS)", ep->iEpSize_Hs)); - return ep->iEpSize_Hs; - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(" Ep0 size = %d (FS)", ep->iEpSize_Fs)); - return ep->iEpSize_Fs; - } - } - - -/** Stalls Ep0. - - @param aClientId A pointer to the LDD wishing to stall Ep0 (this is for PIL internal purposes only). - - @return KErrNone if endpoint zero successfully stalled, KErrGeneral otherwise. -*/ -EXPORT_C TInt DUsbClientController::Ep0Stall(const DBase* aClientId) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::Ep0Stall()")); - if (aClientId == iEp0ClientId) - { - ResetEp0DataOutVars(); - } - const TInt err = iConTransferMgr->StallEndpoint(KEp0_Out); - if (err < 0) - { - return err; - } - else - return iConTransferMgr->StallEndpoint(KEp0_In); - } - - -/** Sends a zero-byte status packet on Ep0. - - @param aClientId A pointer to the LDD wishing to send the status packet (not used at present). -*/ -EXPORT_C void DUsbClientController::SendEp0StatusPacket(const DBase* /* aClientId */) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SendEp0StatusPacket()")); - iConTransferMgr->SendEp0ZeroByteStatusPacket(); - } - - -/** Returns the current USB device state. - - 'USB device state' here refers to the Visible Device States as defined in chapter 9 of the USB - specification. - - @return The current USB device state, or UsbShai::EUsbPeripheralStateUndefined -*/ -EXPORT_C UsbShai::TUsbPeripheralState DUsbClientController::GetDeviceStatus() const - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetDeviceStatus()")); - return iDeviceState; - } - - -/** Returns the state of an endpoint. - - 'Endpoint state' here refers to the state of the ENDPOINT_HALT feature of - an endpoint as described in chapter 9 of the USB specification. - - @param aClientId A pointer to the LDD owning the interface which contains the endpoint to be queried. - @param aEndpointNum The number of the endpoint to be queried. - - @return The current endpoint state, or EEndpointStateUnknown if the endpoint couldn't be found. -*/ -EXPORT_C TEndpointState DUsbClientController::GetEndpointStatus(const DBase* aClientId, TInt aEndpointNum) const - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::GetEndpointStatus()")); - - TEndpointState ret = (iRealEndpoints[aEndpointNum].iHalt)?EEndpointStateStalled : EEndpointStateNotStalled; - - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::GetEndpointStatus() %d",ret)); - - return ret; - } - - -/** Sets up a data read request for an endpoint. - - @param aCallback A reference to a properly filled in data transfer request callback structure. - - @return KErrNone if callback successfully registered or if this callback is already registered - (but it won't be registered twice), KErrNotFound if the endpoint couldn't be found, KErrArgument if - endpoint number invalid (PSL), KErrGeneral if something else goes wrong. -*/ -EXPORT_C TInt DUsbClientController::SetupReadBuffer(TUsbcRequestCallback& aCallback) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetupReadBuffer()")); - const TInt ep = aCallback.iRealEpNum; - __KTRACE_OPT(KUSB, Kern::Printf(" logical ep: #%d", aCallback.iEndpointNum)); - __KTRACE_OPT(KUSB, Kern::Printf(" real ep: #%d", ep)); - TInt err = KErrGeneral; - if (ep != 0) - { - if (iRequestCallbacks[ep]) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: RequestCallback already registered for that ep")); - if (iRequestCallbacks[ep] == &aCallback) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" (this same RequestCallback @ 0x%x)", &aCallback)); - } - else - { - __KTRACE_OPT(KPANIC, Kern::Printf(" (a different RequestCallback @ 0x%x)", &aCallback)); - } - return KErrNone; - } - // This may seem awkward: - // First we add a callback, and then, in case of an error, we remove it again. - // However this is necessary because the transfer request might complete (through - // an ISR) _before_ the SetupEndpointRead function returns. Since we don't know the - // outcome, we have to provide the callback before making the setup call. - // - __KTRACE_OPT(KUSB, Kern::Printf(" adding RequestCallback[%d] @ 0x%x", ep, &aCallback)); - iRequestCallbacks[ep] = &aCallback; - if ((err = iController.SetupEndpointRead(ep, aCallback)) != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" removing RequestCallback @ 0x%x (due to error)", - &aCallback)); - iRequestCallbacks[ep] = NULL; - } - } - else // (ep == 0) - { - if (iEp0ReadRequestCallbacks.Elements() == KUsbcMaxListLength) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Maximum list length reached: %d", - KUsbcMaxListLength)); - return KErrGeneral; - } - if (IsInTheRequestList(aCallback)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" RequestCallback @ 0x%x already registered", &aCallback)); - return KErrNone; - } - // Ep0 reads don't need to be prepared - there's always one pending - __KTRACE_OPT(KUSB, Kern::Printf(" adding RequestCallback @ 0x%x (ep0)", &aCallback)); - const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); - iEp0ReadRequestCallbacks.AddLast(aCallback); - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - err = KErrNone; - if (iEp0_RxExtraCount != 0) - { - __KTRACE_OPT(KUSB, Kern::Printf(" iEp0_RxExtraData: trying again...")); - - const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); - - // Extra data is either a setup packet or a data packet - // They are not possible to be both - // And, the error code must be KErrNone, otherwise, we can not arrive here - if( iSetupPacketPending ) - { - ProcessSetupPacket(iEp0_RxExtraCount,KErrNone); - } - else - { - ProcessDataOutPacket(iEp0_RxExtraCount,KErrNone); - } - - // clear it since already completed to client - iEp0_RxExtraCount = 0; - - err = iLastError; - - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - if (err == KErrNone) - { - //iEp0_RxExtraData = EFalse; - // Queue a new Ep0 read (because xxxProceed only re-enables the interrupt) - iConTransferMgr->SetupEndpointZeroRead(); - if (iSetupPacketPending) - { - iConTransferMgr->Ep0SetupPacketProceed(); - iSetupPacketPending = EFalse; - } - else - { - iConTransferMgr->Ep0DataPacketProceed(); - } - - __KTRACE_OPT(KUSB, Kern::Printf(" :-)")); - } - else - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: :-(")); - err = KErrGeneral; - } - return err; - } - } - return err; - } - - -/** Sets up a data write request for an endpoint. - - @param aCallback A reference to a properly filled in data transfer request callback structure. - - @return KErrNone if callback successfully registered or if this callback is already registered - (but it won't be registered twice), KErrNotFound if the endpoint couldn't be found, KErrArgument if - endpoint number invalid (PSL), KErrGeneral if something else goes wrong. -*/ -EXPORT_C TInt DUsbClientController::SetupWriteBuffer(TUsbcRequestCallback& aCallback) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetupWriteBuffer()")); - TInt ep = aCallback.iRealEpNum; - __KTRACE_OPT(KUSB, Kern::Printf(" logical ep: #%d", aCallback.iEndpointNum)); - __KTRACE_OPT(KUSB, Kern::Printf(" real ep: #%d", ep)); - if (iRequestCallbacks[ep]) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: RequestCallback already registered for that ep")); - if (iRequestCallbacks[ep] == &aCallback) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" (this same RequestCallback @ 0x%x)", &aCallback)); - return KErrNone; - } - else - { - __KTRACE_OPT(KPANIC, Kern::Printf(" (a different RequestCallback @ 0x%x - poss. error)", - &aCallback)); - return KErrGeneral; - } - } - if (ep == 0) - { - if (iEp0_TxNonStdCount) - { - if (iEp0_TxNonStdCount > aCallback.iLength) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: Ep0 is sending less data than requested")); - if ((aCallback.iLength % iEp0MaxPacketSize == 0) && !aCallback.iZlpReqd) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: Zlp should probably be requested")); - } - } - else if (iEp0_TxNonStdCount < aCallback.iLength) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: Ep0 is sending more data than requested")); - } - iEp0_TxNonStdCount = 0; - } - // Ep0 IN needs to be adjusted: the LDD uses 0 for both Ep0 directions. - ep = KEp0_Tx; - } - // This may seem awkward: - // First we add a callback, and then, in case of an error, we remove it again. - // However this is necessary because the transfer request might complete (through - // an ISR) _before_ the SetupEndpointWrite function returns. Since we don't know the - // outcome, we have to provide the callback before making the setup call. - // - __KTRACE_OPT(KUSB, Kern::Printf(" adding RequestCallback[%d] @ 0x%x", ep, &aCallback)); - iRequestCallbacks[ep] = &aCallback; - if (ep == KEp0_Tx) - { - iEp0ClientDataTransmitting = ETrue; // this must be set before calling SetupEndpointZeroWrite - TInt ret = iConTransferMgr->SetupEndpointZeroWrite(aCallback.iBufferStart, aCallback.iLength, aCallback.iZlpReqd); - if (ret != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" removing RequestCallback @ 0x%x (due to error)", &aCallback)); - iRequestCallbacks[ep] = NULL; - iEp0ClientDataTransmitting = EFalse; - return ret; - } - } - else if (iController.SetupEndpointWrite(ep, aCallback) != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" removing RequestCallback @ 0x%x (due to error)", &aCallback)); - iRequestCallbacks[ep] = NULL; - } - return KErrNone; - } - - -/** Cancels a data read request for an endpoint. - - The request callback will be removed from the queue and the - callback function won't be executed. - - @param aClientId A pointer to the LDD owning the interface which contains the endpoint. - @param aRealEndpoint The number of the endpoint for which the transfer request is to be cancelled. -*/ -EXPORT_C void DUsbClientController::CancelReadBuffer(const DBase* aClientId, TInt aRealEndpoint) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::CancelReadBuffer(%d)", aRealEndpoint)); - if (aRealEndpoint < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: ep # < 0: %d", aRealEndpoint)); - return; - } - // Note that we here don't cancel Ep0 read requests at the PSL level! - if (aRealEndpoint > 0) - { - iController.CancelEndpointRead(aRealEndpoint); - } - DeleteRequestCallback(aClientId, aRealEndpoint, UsbShai::EControllerRead); - } - - -/** Cancels a data write request for an endpoint. - - It cannot be guaranteed that the data is not sent nonetheless, as some UDCs don't permit a flushing of a - TX FIFO once it has been filled. The request callback will be removed from the queue in any case and the - callback function won't be executed. - - @param aClientId A pointer to the LDD owning the interface which contains the endpoint. - @param aRealEndpoint The number of the endpoint for which the transfer request is to be cancelled. -*/ -EXPORT_C void DUsbClientController::CancelWriteBuffer(const DBase* aClientId, TInt aRealEndpoint) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::CancelWriteBuffer(%d)", aRealEndpoint)); - if (aRealEndpoint < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: ep # < 0: %d", aRealEndpoint)); - return; - } - if (aRealEndpoint == 0) - { - // Ep0 IN needs to be adjusted: the LDD uses 0 for both Ep0 directions. - aRealEndpoint = KEp0_Tx; - } - iController.CancelEndpointWrite(aRealEndpoint); - if (aRealEndpoint == KEp0_Tx) - { - // Since Ep0 is shared among clients, we don't have to care about the client id. - iEp0WritePending = EFalse; - } - DeleteRequestCallback(aClientId, aRealEndpoint, UsbShai::EControllerWrite); - } - - -/** Halts (stalls) an endpoint (but not Ep0). - - @param aClientId A pointer to the LDD owning the interface which contains the endpoint to be stalled. - @param aEndpointNum The number of the endpoint. - - @return KErrNotFound if endpoint couldn't be found (includes Ep0), KErrNone if endpoint successfully - stalled, KErrGeneral otherwise. -*/ -EXPORT_C TInt DUsbClientController::HaltEndpoint(const DBase* aClientId, TInt aEndpointNum) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::HaltEndpoint(%d)", aEndpointNum)); - const TInt r = iController.StallEndpoint(aEndpointNum); - if (r == KErrNone) - { - iRealEndpoints[aEndpointNum].iHalt = ETrue; - } - else if (r == KErrArgument) - { - return KErrNotFound; - } - return r; - } - - -/** Clears the halt condition of an endpoint (but not Ep0). - - @param aClientId A pointer to the LDD owning the interface which contains the endpoint to be un-stalled. - @param aEndpointNum The number of the endpoint. - - @return KErrNotFound if endpoint couldn't be found (includes Ep0), KErrNone if endpoint successfully - stalled, KErrGeneral otherwise. -*/ -EXPORT_C TInt DUsbClientController::ClearHaltEndpoint(const DBase* aClientId, TInt aEndpointNum) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ClearHaltEndpoint(%d)", aEndpointNum)); - const TInt r = iController.ClearStallEndpoint(aEndpointNum); - if (r == KErrNone) - { - iRealEndpoints[aEndpointNum].iHalt = EFalse; - } - else if (r == KErrArgument) - { - return KErrNotFound; - } - return r; - } - - -/** This function requests 'device control' for an LDD. - - Class or vendor specific Ep0 requests addressed to the USB device as a whole (Recipient field in - bmRequestType byte of a Setup packet set to zero) are delivered to the LDD that owns device control. For - obvious reasons only one USB LDD can have device control at any given time. - - @param aClientId A pointer to the LDD requesting device control. - - @return KErrNone if device control successfully claimed or if this LDD already owns it, KErrGeneral if - device control already owned by a different client. -*/ -EXPORT_C TInt DUsbClientController::SetDeviceControl(const DBase* aClientId) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetDeviceControl()")); - if (iEp0DeviceControl) - { - if (iEp0DeviceControl == aClientId) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: Device Control already owned by this client")); - return KErrNone; - } - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Device Control already claimed by a different client")); - return KErrGeneral; - } - iEp0DeviceControl = aClientId; - return KErrNone; - } - - -/** This function releases device control for an LDD. - - @see DUsbClientController::SetDeviceControl() - - @param aClientId A pointer to the LDD releasing device control. - - @return KErrNone if device control successfully released, KErrGeneral if device control owned by a - different client or by no client at all. -*/ -EXPORT_C TInt DUsbClientController::ReleaseDeviceControl(const DBase* aClientId) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ReleaseDeviceControl()")); - if (iEp0DeviceControl) - { - if (iEp0DeviceControl == aClientId) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Releasing Device Control")); - iEp0DeviceControl = NULL; - return KErrNone; - } - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Device Control owned by a different client")); - } - else - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Device Control not owned by any client")); - } - return KErrGeneral; - } - - -/** Returns all available (configurable) max packet sizes for Ep0. - - The information is coded as bitwise OR'ed values of KUsbEpSizeXXX constants (the bitmap format used for - TUsbcEndpointCaps.iSupportedSizes). - - @return All available (configurable) max packet sizes for Ep0. -*/ -EXPORT_C TUint DUsbClientController::EndpointZeroMaxPacketSizes() const - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::EndpointZeroMaxPacketSizes()")); - return iRealEndpoints[0].iCaps.iSizes; - } - - -/** Sets (configures) the max packet size for Ep0. - - For available sizes as returned by DUsbClientController::EndpointZeroMaxPacketSizes() - - Note that for HS operation the Ep0 size cannot be chosen, but is fixed at 64 bytes. - - @return KErrNotSupported if invalid size specified, KErrNone if new max packet size successfully set or - requested size was already set. -*/ -EXPORT_C TInt DUsbClientController::SetEndpointZeroMaxPacketSize(TInt aMaxPacketSize) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetEndpointZeroMaxPacketSize(%d)", - aMaxPacketSize)); - - if (iControllerProperties.iControllerCaps & UsbShai::KDevCapHighSpeed) - { - // We're not going to mess with this on a HS device. - return KErrNone; - } - - if (!(iRealEndpoints[0].iCaps.iSizes & PacketSize2Mask(aMaxPacketSize))) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: invalid size")); - return KErrNotSupported; - } - if (iRealEndpoints[0].iLEndpoint->iEpSize_Fs == aMaxPacketSize) - { - __KTRACE_OPT(KUSB, Kern::Printf(" this packet size already set -> returning")); - return KErrNone; - } - const TUsbcLogicalEndpoint* const ep0_0 = iRealEndpoints[0].iLEndpoint; - const TUsbcLogicalEndpoint* const ep0_1 = iRealEndpoints[1].iLEndpoint; - const_cast(ep0_0)->iEpSize_Fs = aMaxPacketSize; - const_cast(ep0_1)->iEpSize_Fs = aMaxPacketSize; - - // @@@ We should probably modify the device descriptor here as well... - - if (iHardwareActivated) - { - // De-configure endpoint zero - iController.DeConfigureEndpoint(KEp0_Out); - iController.DeConfigureEndpoint(KEp0_In); - // Re-configure endpoint zero - const_cast(ep0_0)->iInfo.iSize = ep0_0->iEpSize_Fs; - const_cast(ep0_1)->iInfo.iSize = ep0_1->iEpSize_Fs; - iController.ConfigureEndpoint(0, ep0_0->iInfo); - iController.ConfigureEndpoint(1, ep0_1->iInfo); - iEp0MaxPacketSize = ep0_0->iInfo.iSize; - } - return KErrNone; - } - - -/** Returns the current USB Device descriptor. - - @param aThread A pointer to the thread the LDD requesting the descriptor is running in. - @param aDeviceDescriptor A reference to a buffer into which the requested descriptor should be written - (most likely located user-side). - - @return The return value of the thread write operation, Kern::ThreadWrite(), when writing to the target - buffer. -*/ -EXPORT_C TInt DUsbClientController::GetDeviceDescriptor(DThread* aThread, TDes8& aDeviceDescriptor) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetDeviceDescriptor()")); - return iDescriptors.GetDeviceDescriptorTC(aThread, aDeviceDescriptor); - } - - -/** Sets a new USB Device descriptor. - - @param aThread A pointer to the thread the LDD requesting the setting of the descriptor is running in. - @param aDeviceDescriptor A reference to a buffer which contains the descriptor to be set (most likely - located user-side). - - @return The return value of the thread read operation, Kern::ThreadRead(), when reading from the source - buffer in case of a failure, KErrNone if the new descriptor was successfully set. -*/ -EXPORT_C TInt DUsbClientController::SetDeviceDescriptor(DThread* aThread, const TDes8& aDeviceDescriptor) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetDeviceDescriptor()")); - return iDescriptors.SetDeviceDescriptorTC(aThread, aDeviceDescriptor); - } - - -/** Returns the current USB Device descriptor size. - - @param aThread A pointer to the thread the LDD requesting the descriptor size is running in. - @param aSize A reference to a buffer into which the requested descriptor size should be written - (most likely located user-side). - - @return The return value of the thread write operation, Kern::ThreadWrite(), when writing to the target - buffer. -*/ -EXPORT_C TInt DUsbClientController::GetDeviceDescriptorSize(DThread* aThread, TDes8& aSize) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetDeviceDescriptorSize()")); - // We do not really enquire here.... - const TPtrC8 size(reinterpret_cast(&KUsbDescSize_Device), sizeof(KUsbDescSize_Device)); - return Kern::ThreadDesWrite(aThread, &aSize, size, 0); - } - - -/** Returns the current USB configuration descriptor. - - @param aThread A pointer to the thread the LDD requesting the descriptor is running in. - @param aConfigurationDescriptor A reference to a buffer into which the requested descriptor should be - written (most likely located user-side). - - @return The return value of the thread write operation, Kern::ThreadWrite(), when writing to the target - buffer. -*/ -EXPORT_C TInt DUsbClientController::GetConfigurationDescriptor(DThread* aThread, TDes8& aConfigurationDescriptor) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetConfigurationDescriptor()")); - return iDescriptors.GetConfigurationDescriptorTC(aThread, aConfigurationDescriptor); - } - - -/** Sets a new USB configuration descriptor. - - @param aThread A pointer to the thread the LDD requesting the setting of the descriptor is running in. - @param aConfigurationDescriptor A reference to a buffer which contains the descriptor to be set (most - likely located user-side). - - @return The return value of the thread read operation, Kern::ThreadRead() when reading from the source - buffer in case of a failure, KErrNone if the new descriptor was successfully set. -*/ -EXPORT_C TInt DUsbClientController::SetConfigurationDescriptor(DThread* aThread, - const TDes8& aConfigurationDescriptor) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetConfigurationDescriptor()")); - return iDescriptors.SetConfigurationDescriptorTC(aThread, aConfigurationDescriptor); - } - - -/** Returns the current USB configuration descriptor size. - - @param aThread A pointer to the thread the LDD requesting the descriptor size is running in. - @param aSize A reference to a buffer into which the requested descriptor size should be written - (most likely located user-side). - - @return The return value of the thread write operation, Kern::ThreadWrite(), when writing to the target - buffer. -*/ -EXPORT_C TInt DUsbClientController::GetConfigurationDescriptorSize(DThread* aThread, TDes8& aSize) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetConfigurationDescriptorSize()")); - // We do not really enquire here.... - const TPtrC8 size(reinterpret_cast(&KUsbDescSize_Config), sizeof(KUsbDescSize_Config)); - return Kern::ThreadDesWrite(aThread, &aSize, size, 0); - } - - -/** Returns the current USB OTG descriptor. - - @param aThread A pointer to the thread the LDD requesting the descriptor size is running in. - @param aOtgDesc A reference to a buffer into which the requested descriptor should be - written (most likely located user-side). - - @return KErrNotSupported or the return value of the thread write operation, Kern::ThreadDesWrite(), - when writing to the target buffer. -*/ -EXPORT_C TInt DUsbClientController::GetOtgDescriptor(DThread* aThread, TDes8& aOtgDesc) const - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetOtgDescriptor()")); - if (!iOtgSupport) - { - return KErrNotSupported; - } - return iDescriptors.GetOtgDescriptorTC(aThread, aOtgDesc); - } - - -/** Sets a new OTG descriptor. - - @param aThread A pointer to the thread the LDD requesting the descriptor size is running in. - @param aOtgDesc A reference to a buffer which contains new OTG descriptor. - - @return KErrNotSupported or the return value of the thread read operation, Kern::ThreadDesRead(). -*/ -EXPORT_C TInt DUsbClientController::SetOtgDescriptor(DThread* aThread, const TDesC8& aOtgDesc) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetOtgDescriptor()")); - if (!iOtgSupport) - { - return KErrNotSupported; - } - TBuf8 otg; - const TInt r = Kern::ThreadDesRead(aThread, &aOtgDesc, otg, 0); - if (r != KErrNone) - { - return r; - } - // Check descriptor validity - if (otg[0] != KUsbDescSize_Otg || otg[1] != KUsbDescType_Otg || otg[2] > 3) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Invalid OTG descriptor")); - return KErrGeneral; - } - __KTRACE_OPT(KUSB, Kern::Printf(" iOtgFuncMap before: 0x%x", iOtgFuncMap)); - // Update value in controller as well - const TUint8 hnp = otg[2] & KUsbOtgAttr_HnpSupp; - const TUint8 srp = otg[2] & KUsbOtgAttr_SrpSupp; - if (hnp && !srp) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: Invalid OTG attribute combination (HNP && !SRP")); - } - if (hnp && !(iOtgFuncMap & KUsbOtgAttr_HnpSupp)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Setting attribute KUsbOtgAttr_HnpSupp")); - iOtgFuncMap |= KUsbOtgAttr_HnpSupp; - } - else if (!hnp && (iOtgFuncMap & KUsbOtgAttr_HnpSupp)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Removing attribute KUsbOtgAttr_HnpSupp")); - iOtgFuncMap &= ~KUsbOtgAttr_HnpSupp; - } - if (srp && !(iOtgFuncMap & KUsbOtgAttr_SrpSupp)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Setting attribute KUsbOtgAttr_SrpSupp")); - iOtgFuncMap |= KUsbOtgAttr_SrpSupp; - } - else if (!srp && (iOtgFuncMap & KUsbOtgAttr_SrpSupp)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Removing attribute KUsbOtgAttr_SrpSupp")); - iOtgFuncMap &= ~KUsbOtgAttr_SrpSupp; - } - __KTRACE_OPT(KUSB, Kern::Printf(" iOtgFuncMap after: 0x%x", iOtgFuncMap)); - return iDescriptors.SetOtgDescriptor(otg); - } - - -/** Returns current OTG features of USB device. - - @param aThread A pointer to the thread the LDD requesting the descriptor size is running in. - @param aFeatures A reference to a buffer into which the requested OTG features should be written. - - @return KErrNotSupported or the return value of the thread write operation, Kern::ThreadDesWrite(). -*/ -EXPORT_C TInt DUsbClientController::GetOtgFeatures(DThread* aThread, TDes8& aFeatures) const - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetOtgFeatures()")); - if (!iOtgSupport) - { - return KErrNotSupported; - } - TBuf8<1> features(1); - features[0] = iOtgFuncMap & 0x1C; - return Kern::ThreadDesWrite(aThread, &aFeatures, features, 0); - } - - -/** Returns current OTG features of USB device. This function is intended to be - called only from kernel side. - - @param aFeatures The reference to which the current features should be set at. - @return KErrNone if successful, KErrNotSupported if OTG is unavailable. -*/ -EXPORT_C TInt DUsbClientController::GetCurrentOtgFeatures(TUint8& aFeatures) const - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetCurrentOtgFeatures()")); - if (!iOtgSupport) - { - return KErrNotSupported; - } - aFeatures = iOtgFuncMap & 0x1C; - return KErrNone; - } - - -/** Registers client request for OTG feature change. Client is notified when any OTG - feature is changed. - - @see KUsbOtgAttr_B_HnpEnable, KUsbOtgAttr_A_HnpSupport, KUsbOtgAttr_A_AltHnpSupport - - @param aCallback Callback function. Gets called when OTG features change - - @return KErrNone if successful, KErrAlreadyExists if aCallback is already in the queue. -*/ -EXPORT_C TInt DUsbClientController::RegisterForOtgFeatureChange(TUsbcOtgFeatureCallback& aCallback) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::RegisterForOtgFeatureChange()")); - if (iOtgCallbacks.Elements() == KUsbcMaxListLength) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Maximum list length reached: %d", - KUsbcMaxListLength)); - return KErrGeneral; - } - if (IsInTheOtgFeatureList(aCallback)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Error: OtgFeatureCallback @ 0x%x already registered", &aCallback)); - return KErrAlreadyExists; - } - const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); - iOtgCallbacks.AddLast(aCallback); - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return KErrNone; - } - - -/** De-registers (removes from the list of pending requests) a notification callback for - OTG feature change. - - @param aClientId A pointer to the LDD owning the endpoint status change callback. - - @return KErrNone if callback successfully unregistered, KErrNotFound if the callback couldn't be found. -*/ -EXPORT_C TInt DUsbClientController::DeRegisterForOtgFeatureChange(const DBase* aClientId) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::DeRegisterForOtgFeatureChange()")); - __ASSERT_DEBUG((aClientId != NULL), Kern::Fault(KUsbPILPanicCat, __LINE__)); - const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); - TSglQueIter iter(iOtgCallbacks); - TUsbcOtgFeatureCallback* p; - while ((p = iter++) != NULL) - { - if (!aClientId || p->Owner() == aClientId) - { - __KTRACE_OPT(KUSB, Kern::Printf(" removing OtgFeatureCallback @ 0x%x", p)); - iOtgCallbacks.Remove(*p); - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return KErrNone; - } - } - __KTRACE_OPT(KUSB, Kern::Printf(" client not found")); - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return KErrNotFound; - } - - -/** Returns a specific standard USB interface descriptor. - - @param aThread A pointer to the thread the LDD requesting the descriptor is running in. - @param aClientId A pointer to the LDD requesting the descriptor. - @param aSettingNum The setting number of the interface for which the descriptor is requested. - @param aInterfaceDescriptor A reference to a buffer into which the requested descriptor should be written - (most likely located user-side). - - @return KErrNotFound if the specified interface couldn't be found, otherwise the return value of the thread - write operation, Kern::ThreadWrite(), when writing to the target buffer. -*/ -EXPORT_C TInt DUsbClientController::GetInterfaceDescriptor(DThread* aThread, const DBase* aClientId, - TInt aSettingNum, TDes8& aInterfaceDescriptor) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetInterfaceDescriptor(x, 0x%08x, %d, y)", - aClientId, aSettingNum)); - const TInt ifcset = ClientId2InterfaceNumber(aClientId); - if (ifcset < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Interface not found from client ID")); - return KErrNotFound; - } - return iDescriptors.GetInterfaceDescriptorTC(aThread, aInterfaceDescriptor, ifcset, aSettingNum); - } - - -/** Sets a new standard USB interface descriptor. - - This function can also be used, by the user, and under certain conditions, to change an interface's number - (reported as bInterfaceNumber in the descriptor). The conditions are: 1) We cannot accept a number that is - already used by another interface, 2) We allow the interface number to be changed only when it's still the - only setting, and 3) We allow the interface number to be changed only for the default setting (0). (All - alternate settings created for that interface thereafter will inherit the new, changed number.) - - @param aThread A pointer to the thread the LDD requesting the setting of the descriptor is running in. - @param aClientId A pointer to the LDD requesting the setting of the descriptor. - @param aSettingNum The setting number of the interface for which the descriptor is to be set. - @param aInterfaceDescriptor A reference to a buffer which contains the descriptor to be set (most - likely located user-side). - - @return KErrNotFound if the specified interface couldn't be found, the return value of the thread read - operation, Kern::ThreadRead(), when reading from the source buffer in case of a failure, KErrArgument if the - interface number is to be changed (via bInterfaceNumber in the descriptor) and either the requested - interface number is already used by another interface or the interface has more than one setting. KErrNone - if the new descriptor was successfully set. -*/ -EXPORT_C TInt DUsbClientController::SetInterfaceDescriptor(DThread* aThread, const DBase* aClientId, - TInt aSettingNum, const TDes8& aInterfaceDescriptor) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetInterfaceDescriptor(x, 0x%08x, %d, y)", - aClientId, aSettingNum)); - const TInt ifcset = ClientId2InterfaceNumber(aClientId); - if (ifcset < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Interface not found from client ID")); - return KErrNotFound; - } - TBuf8 new_ifc; - TInt r = Kern::ThreadDesRead(aThread, &aInterfaceDescriptor, new_ifc, 0); - if (r != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Copying interface descriptor buffer failed (%d)", r)); - return r; - } - const TInt ifcset_new = new_ifc[2]; - const TBool ifc_num_changes = (ifcset != ifcset_new); - TUsbcInterfaceSet* const ifcset_ptr = InterfaceNumber2InterfacePointer(ifcset); - if (!ifcset_ptr) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: interface number %d doesn't exist", ifcset)); - return KErrNotFound; - } - if (ifc_num_changes) - { - // If the user wants to change the interface number, we need to do some sanity checks: - if (InterfaceExists(ifcset_new)) - { - // Obviously we cannot accept a number that is already used by another interface. - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: interface number %d already in use", ifcset_new)); - return KErrArgument; - } - if (ifcset_ptr->iInterfaces.Count() > 1) - { - // We allow the interface number to be changed only when it's the only setting. - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: interface has more than one alternate setting")); - return KErrArgument; - } - if (aSettingNum != 0) - { - // We allow the interface number to be changed only when it's the default setting. - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: interface number can only be changed for setting 0")); - return KErrArgument; - } - } - if ((r = iDescriptors.SetInterfaceDescriptor(new_ifc, ifcset, aSettingNum)) != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: iDescriptors.SetInterfaceDescriptorfailed")); - return r; - } - if (ifc_num_changes) - { - // Alright then, let's do it... - __KTRACE_OPT(KUSB, Kern::Printf(" about to change interface number from %d to %d", - ifcset, ifcset_new)); - ifcset_ptr->iInterfaceNumber = ifcset_new; - } - return KErrNone; - } - - -/** Returns the size of a specific standard USB interface descriptor. - - @param aThread A pointer to the thread the LDD requesting the descriptor size is running in. - @param aClientId A pointer to the LDD requesting the descriptor size. - @param aSettingNum The setting number of the interface for which the descriptor size is requested. - @param aSize A reference to a buffer into which the requested descriptor size should be written (most - likely located user-side). - - @return KErrNotFound if the specified interface couldn't be found, otherwise the return value of the thread - write operation, Kern::ThreadWrite(), when writing to the target buffer. -*/ -EXPORT_C TInt DUsbClientController::GetInterfaceDescriptorSize(DThread* aThread, const DBase* aClientId, - TInt /*aSettingNum*/, TDes8& aSize) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetInterfaceDescriptorSize()")); - const TInt ifcset = ClientId2InterfaceNumber(aClientId); - if (ifcset < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Interface not found from client ID")); - return KErrNotFound; - } - // Actually, we do not really enquire here.... - const TPtrC8 size(reinterpret_cast(&KUsbDescSize_Interface), sizeof(KUsbDescSize_Interface)); - Kern::ThreadDesWrite(aThread, &aSize, size, 0); - return KErrNone; - } - - -/** Returns a specific standard USB endpoint descriptor. - - @param aThread A pointer to the thread the LDD requesting the descriptor is running in. - @param aClientId A pointer to the LDD requesting the descriptor. - @param aSettingNum The setting number of the interface that contains the endpoint for which the - descriptor is requested. - @param aEndpointNum The endpoint for which the descriptor is requested. - @param aEndpointDescriptor A reference to a buffer into which the requested descriptor should be written - (most likely located user-side). - - @return KErrNotFound if the specified interface or endpoint couldn't be found, otherwise the return value - of the thread write operation, Kern::ThreadWrite(), when writing to the target buffer. -*/ -EXPORT_C TInt DUsbClientController::GetEndpointDescriptor(DThread* aThread, const DBase* aClientId, - TInt aSettingNum, TInt aEndpointNum, - TDes8& aEndpointDescriptor) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetEndpointDescriptor(x, 0x%08x, %d, %d, y)", - aClientId, aSettingNum, aEndpointNum)); - const TInt ifcset = ClientId2InterfaceNumber(aClientId); - if (ifcset < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Interface not found from client ID")); - return KErrNotFound; - } - return iDescriptors.GetEndpointDescriptorTC(aThread, aEndpointDescriptor, ifcset, - aSettingNum, EpIdx2Addr(aEndpointNum)); - } - - -/** Sets a new standard USB endpoint descriptor. - - @param aThread A pointer to the thread the LDD requesting the setting of the descriptor is running in. - @param aClientId A pointer to the LDD requesting the setting of the descriptor. - @param aSettingNum The setting number of the interface that contains the endpoint for which the - descriptor is to be set. - @param aEndpointNum The endpoint for which the descriptor is to be set. - @param aEndpointDescriptor A reference to a buffer which contains the descriptor to be set (most - likely located user-side). - - @return KErrNotFound if the specified interface or endpoint couldn't be found, the return value of the - thread read operation, Kern::ThreadRead(), when reading from the source buffer in case of a read failure, - KErrNone if the new descriptor was successfully set. -*/ -EXPORT_C TInt DUsbClientController::SetEndpointDescriptor(DThread* aThread, const DBase* aClientId, - TInt aSettingNum, TInt aEndpointNum, - const TDes8& aEndpointDescriptor) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetEndpointDescriptor(x, 0x%08x, %d, %d, y)", - aClientId, aSettingNum, aEndpointNum)); - const TInt ifcset = ClientId2InterfaceNumber(aClientId); - if (ifcset < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Interface not found from client ID")); - return KErrNotFound; - } - return iDescriptors.SetEndpointDescriptorTC(aThread, aEndpointDescriptor, ifcset, - aSettingNum, EpIdx2Addr(aEndpointNum)); - } - - -/** Returns the size of a specific standard USB endpoint descriptor. - - @param aThread A pointer to the thread the LDD requesting the descriptor size is running in. - @param aClientId A pointer to the LDD requesting the descriptor size. - @param aSettingNum The setting number of the interface that contains the endpoint for which the - descriptor size is requested. - @param aEndpointNum The endpoint for which the descriptor size is requested. - @param aEndpointDescriptor A reference to a buffer into which the requested descriptor size should be - written (most likely located user-side). - - @return KErrNotFound if the specified interface or endpoint couldn't be found, otherwise the return value - of the thread write operation, kern::ThreadWrite(), when writing to the target buffer. -*/ -EXPORT_C TInt DUsbClientController::GetEndpointDescriptorSize(DThread* aThread, const DBase* aClientId, - TInt aSettingNum, TInt aEndpointNum, - TDes8& aSize) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetEndpointDescriptorSize(x, 0x%08x, %d, %d, y)", - aClientId, aSettingNum, aEndpointNum)); - const TInt ifcset = ClientId2InterfaceNumber(aClientId); - if (ifcset < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Interface not found from client ID")); - return KErrNotFound; - } - TInt s; - TInt r = iDescriptors.GetEndpointDescriptorSize(ifcset, aSettingNum, - EpIdx2Addr(aEndpointNum), s); - if (r == KErrNone) - { - TPtrC8 size(reinterpret_cast(&s), sizeof(s)); - r = Kern::ThreadDesWrite(aThread, &aSize, size, 0); - } - else - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: endpoint descriptor not found")); - } - return r; - } - - -/** Returns the current Device_Qualifier descriptor. On a USB device which doesn't support high-speed - operation this function will return an error. Note that the contents of the descriptor depend on - the current device speed (full-speed or high-speed). - - @param aThread A pointer to the thread the LDD requesting the descriptor is running in. - @param aDeviceQualifierDescriptor A reference to a buffer into which the requested descriptor - should be written (most likely located user-side). - - @return KErrNotSupported if this descriptor is not supported, otherwise the return value of the thread - write operation, Kern::ThreadWrite(), when writing to the target buffer. -*/ -EXPORT_C TInt DUsbClientController::GetDeviceQualifierDescriptor(DThread* aThread, - TDes8& aDeviceQualifierDescriptor) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetDeviceQualifierDescriptor()")); - return iDescriptors.GetDeviceQualifierDescriptorTC(aThread, aDeviceQualifierDescriptor); - } - - -/** Sets a new Device_Qualifier descriptor. On a USB device which doesn't support high-speed - operation this function will return an error. Note that the contents of the descriptor should take - into account the current device speed (full-speed or high-speed) as it is dependent on it. - - @param aThread A pointer to the thread the LDD requesting the setting of the descriptor is running in. - @param aDeviceQualifierDescriptor A reference to a buffer which contains the descriptor to be set (most - likely located user-side). - - @return KErrNotSupported if this descriptor is not supported, otherwise the return value of the thread - read operation, Kern::ThreadRead(), when reading from the source buffer in case of a failure, KErrNone if - the new descriptor was successfully set. -*/ -EXPORT_C TInt DUsbClientController::SetDeviceQualifierDescriptor(DThread* aThread, - const TDes8& aDeviceQualifierDescriptor) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetDeviceQualifierDescriptor()")); - return iDescriptors.SetDeviceQualifierDescriptorTC(aThread, aDeviceQualifierDescriptor); - } - - -/** Returns the current Other_Speed_Configuration descriptor. On a USB device which doesn't support high-speed - operation this function will return an error. Note that the contents of the descriptor depend on the - current device speed (full-speed or high-speed). - - @param aThread A pointer to the thread the LDD requesting the descriptor is running in. - @param aConfigurationDescriptor A reference to a buffer into which the requested descriptor - should be written (most likely located user-side). - - @return KErrNotSupported if this descriptor is not supported, otherwise the return value of the thread - write operation, Kern::ThreadWrite(), when writing to the target buffer. -*/ -EXPORT_C TInt DUsbClientController::GetOtherSpeedConfigurationDescriptor(DThread* aThread, - TDes8& aConfigurationDescriptor) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetOtherSpeedConfigurationDescriptor()")); - return iDescriptors.GetOtherSpeedConfigurationDescriptorTC(aThread, aConfigurationDescriptor); - } - - -/** Sets a new Other_Speed_Configuration descriptor. On a USB device which doesn't support high-speed - operation this function will return an error. Note that the contents of the descriptor should take - into account the current device speed (full-speed or high-speed) as it is dependent on it. - - @param aThread A pointer to the thread the LDD requesting the setting of the descriptor is running in. - @param aConfigurationDescriptor A reference to a buffer which contains the descriptor to be set (most - likely located user-side). - - @return KErrNotSupported if this descriptor is not supported, otherwise the return value of the thread - read operation, Kern::ThreadRead(), when reading from the source buffer in case of a failure, KErrNone if - the new descriptor was successfully set. -*/ -EXPORT_C TInt DUsbClientController::SetOtherSpeedConfigurationDescriptor(DThread* aThread, - const TDes8& aConfigurationDescriptor) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetOtherSpeedConfigurationDescriptor()")); - return iDescriptors.SetOtherSpeedConfigurationDescriptorTC(aThread, aConfigurationDescriptor); - } - - -/** Returns a block of all available non-standard (class-specific) interface descriptors for a specific - interface. - - @param aThread A pointer to the thread the LDD requesting the descriptor block is running in. - @param aClientId A pointer to the LDD requesting the descriptor block. - @param aSettingNum The setting number of the interface for which the descriptor block is requested. - @param aInterfaceDescriptor A reference to a buffer into which the requested descriptor(s) should be - written (most likely located user-side). - - @return KErrNotFound if the specified interface couldn't be found, otherwise the return value of the thread - write operation, Kern::ThreadWrite(), when writing to the target buffer. -*/ -EXPORT_C TInt DUsbClientController::GetCSInterfaceDescriptorBlock(DThread* aThread, const DBase* aClientId, - TInt aSettingNum, - TDes8& aInterfaceDescriptor) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetCSInterfaceDescriptorBlock(x, 0x%08x, %d, y)", - aClientId, aSettingNum)); - const TInt ifcset = ClientId2InterfaceNumber(aClientId); - if (ifcset < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Interface not found from client ID")); - return KErrNotFound; - } - return iDescriptors.GetCSInterfaceDescriptorTC(aThread, aInterfaceDescriptor, ifcset, aSettingNum); - } - - -/** Sets a block of (i.e. one or more) non-standard (class-specific) interface descriptors for a specific - interface. - - @param aThread A pointer to the thread the LDD requesting the setting of the descriptor block is running - in. - @param aClientId A pointer to the LDD requesting the setting of the descriptor block. - @param aSettingNum The setting number of the interface for which the setting of the descriptor block is - requested. - @param aInterfaceDescriptor A reference to a buffer which contains the descriptor block to be set (most - likely located user-side). - @param aSize The size of the descriptor block to be set. - - @return KErrNotFound if the specified interface couldn't be found, KErrArgument if aSize is less than 2, - KErrNoMemory if enough memory for the new descriptor(s) couldn't be allocated, otherwise the return value - of the thread read operation, Kern::ThreadRead(), when reading from the source buffer. -*/ -EXPORT_C TInt DUsbClientController::SetCSInterfaceDescriptorBlock(DThread* aThread, const DBase* aClientId, - TInt aSettingNum, - const TDes8& aInterfaceDescriptor, TInt aSize) - { - __KTRACE_OPT(KUSB, - Kern::Printf("DUsbClientController::SetCSInterfaceDescriptorBlock(x, 0x%08x, %d, y, %d)", - aClientId, aSettingNum, aSize)); - const TInt ifcset = ClientId2InterfaceNumber(aClientId); - if (ifcset < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Interface not found from client ID")); - return KErrNotFound; - } - if (aSize < 2) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: aSize < 2 (%d)", aSize)); - return KErrArgument; - } - return iDescriptors.SetCSInterfaceDescriptorTC(aThread, aInterfaceDescriptor, ifcset, aSettingNum, aSize); - } - - -/** Returns the total size all non-standard (class-specific) interface descriptors for a specific interface. - - @param aThread A pointer to the thread the LDD requesting the descriptor block size is running in. - @param aClientId A pointer to the LDD requesting the descriptor block size. - @param aSettingNum The setting number of the interface for which the descriptor block size is - requested. - @param aSize A reference to a buffer into which the requested descriptor block size should be written (most - likely located user-side). - - @return KErrNotFound if the specified interface couldn't be found, otherwise the return value of the thread - write operation, Kern::ThreadWrite(), when writing to the target buffer. -*/ -EXPORT_C TInt DUsbClientController::GetCSInterfaceDescriptorBlockSize(DThread* aThread, const DBase* aClientId, - TInt aSettingNum, TDes8& aSize) - { - __KTRACE_OPT(KUSB, - Kern::Printf("DUsbClientController::GetCSInterfaceDescriptorBlockSize(x, 0x%08x, %d, y)", - aClientId, aSettingNum)); - const TInt ifcset = ClientId2InterfaceNumber(aClientId); - if (ifcset < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Interface not found from client ID")); - return KErrNotFound; - } - TInt s; - const TInt r = iDescriptors.GetCSInterfaceDescriptorSize(ifcset, aSettingNum, s); - if (r == KErrNone) - { - const TPtrC8 size(reinterpret_cast(&s), sizeof(s)); - Kern::ThreadDesWrite(aThread, &aSize, size, 0); - } - else - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: cs interface descriptor not found")); - } - return r; - } - - -/** Returns a block of all available non-standard (class-specific) endpoint descriptors for a specific endpoint. - - @param aThread A pointer to the thread the LDD requesting the descriptor block is running in. - @param aClientId A pointer to the LDD requesting the descriptor block. - @param aSettingNum The setting number of the interface that contains the endpoint for which the - descriptor block is requested. - @param aEndpointNum The endpoint for which the descriptor block is requested. - @param aEndpointDescriptor A reference to a buffer into which the requested descriptor(s) should be written - (most likely located user-side). - - @return KErrNotFound if the specified interface or endpoint couldn't be found, otherwise the return value - of the thread write operation, Kern::ThreadWrite(), when writing to the target buffer. -*/ -EXPORT_C TInt DUsbClientController::GetCSEndpointDescriptorBlock(DThread* aThread, const DBase* aClientId, - TInt aSettingNum, TInt aEndpointNum, - TDes8& aEndpointDescriptor) - { - __KTRACE_OPT(KUSB, - Kern::Printf("DUsbClientController::GetCSEndpointDescriptorBlock(x, 0x%08x, %d, %d, y)", - aClientId, aSettingNum, aEndpointNum)); - const TInt ifcset = ClientId2InterfaceNumber(aClientId); - if (ifcset < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Interface not found from client ID")); - return KErrNotFound; - } - return iDescriptors.GetCSEndpointDescriptorTC(aThread, aEndpointDescriptor, ifcset, - aSettingNum, EpIdx2Addr(aEndpointNum)); - } - - -/** Sets a block of (i.e. one or more) non-standard (class-specific) endpoint descriptors for a specific - endpoint. - - @param aThread A pointer to the thread the LDD requesting the setting of the descriptor block is running - in. - @param aClientId A pointer to the LDD requesting the setting of the descriptor block. - @param aSettingNum The setting number of the interface that contains the endpoint for which the - descriptor block is to be set. - @param aEndpointNum The endpoint for which the descriptor block is to be set. - @param aEndpointDescriptor A reference to a buffer which contains the descriptor block to be set (most - likely located user-side). - @param aSize The size of the descriptor block to be set. - - @return KErrNotFound if the specified interface or endpoint couldn't be found, KErrArgument if aSize is - less than 2, KErrNoMemory if enough memory for the new descriptor(s) couldn't be allocated, otherwise the - return value of the thread read operation, Kern::ThreadRead(), when reading from the source buffer. -*/ -EXPORT_C TInt DUsbClientController::SetCSEndpointDescriptorBlock(DThread* aThread, const DBase* aClientId, - TInt aSettingNum, TInt aEndpointNum, - const TDes8& aEndpointDescriptor, TInt aSize) - { - __KTRACE_OPT(KUSB, - Kern::Printf("DUsbClientController::SetCSEndpointDescriptorBlock(x, 0x%08x, %d, %d, y)", - aClientId, aSettingNum, aEndpointNum)); - const TInt ifcset = ClientId2InterfaceNumber(aClientId); - if (ifcset < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Interface not found from client ID")); - return KErrNotFound; - } - if (aSize < 2) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: aSize < 2 (%d)", aSize)); - return KErrArgument; - } - return iDescriptors.SetCSEndpointDescriptorTC(aThread, aEndpointDescriptor, ifcset, - aSettingNum, EpIdx2Addr(aEndpointNum), aSize); - } - - -/** Returns the total size all non-standard (class-specific) endpoint descriptors for a specific endpoint. - - @param aThread A pointer to the thread the LDD requesting the descriptor block size is running in. - @param aClientId A pointer to the LDD requesting the descriptor block size. - @param aSettingNum The setting number of the interface for which the descriptor block size is - requested. - @param aEndpointNum The endpoint for which the descriptor block size is requested. - @param aSize A reference to a buffer into which the requested descriptor block size should be written (most - likely located user-side). - - @return KErrNotFound if the specified interface or endpoint couldn't be found, otherwise the return value - of the thread write operation, Kern::ThreadWrite(), when writing to the target buffer. -*/ -EXPORT_C TInt DUsbClientController::GetCSEndpointDescriptorBlockSize(DThread* aThread, const DBase* aClientId, - TInt aSettingNum, TInt aEndpointNum, - TDes8& aSize) - { - __KTRACE_OPT(KUSB, - Kern::Printf("DUsbClientController::GetCSEndpointDescriptorBlockSize(x, 0x%08x, %d, %d, y)", - aClientId, aSettingNum, aEndpointNum)); - const TInt ifcset = ClientId2InterfaceNumber(aClientId); - if (ifcset < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Interface not found from client ID")); - return KErrNotFound; - } - TInt s; - const TInt r = iDescriptors.GetCSEndpointDescriptorSize(ifcset, aSettingNum, - EpIdx2Addr(aEndpointNum), s); - if (r == KErrNone) - { - const TPtrC8 size(reinterpret_cast(&s), sizeof(s)); - Kern::ThreadDesWrite(aThread, &aSize, size, 0); - } - else - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: cs endpoint descriptor not found")); - } - return r; - } - - -/** Returns the currently set string descriptor language ID (LANGID) code. - - @param aThread A pointer to the thread the LDD requesting the LANGID is running in. - @param aLangId A reference to a buffer into which the requested code should be written (most likely - located user-side). - - @return The return value of the thread write operation, Kern::ThreadDesWrite(), - when writing to the target buffer. -*/ -EXPORT_C TInt DUsbClientController::GetStringDescriptorLangId(DThread* aThread, TDes8& aLangId) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetStringDescriptorLangId()")); - return iDescriptors.GetStringDescriptorLangIdTC(aThread, aLangId); - } - - -/** Sets the string descriptor language ID (LANGID) code. - - @param aLangId The langauge ID code to be written. - - @return KErrNone. -*/ -EXPORT_C TInt DUsbClientController::SetStringDescriptorLangId(TUint16 aLangId) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetStringDescriptorLangId()")); - return iDescriptors.SetStringDescriptorLangId(aLangId); - } - - -/** Returns the currently set Manufacturer string (which is referenced by the iManufacturer field in the device - descriptor). - - (Thus, the function should actually be called either 'GetManufacturerString' - or 'GetManufacturerStringDescriptorString'.) - - @param aThread A pointer to the thread the LDD requesting the string is running in. - @param aString A reference to a buffer into which the requested string should be written (most likely - located user-side). - - @return KErrNotFound if the string descriptor couldn't be found (PIL internal error), otherwise the return - value of the thread write operation, Kern::ThreadWrite(), when writing to the target buffer. -*/ -EXPORT_C TInt DUsbClientController::GetManufacturerStringDescriptor(DThread* aThread, TDes8& aString) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetManufacturerStringDescriptor()")); - return iDescriptors.GetManufacturerStringDescriptorTC(aThread, aString); - } - - -/** Sets a new Manufacturer string in the Manufacturer string descriptor (which is referenced by the - iManufacturer field in the device descriptor). - - (Thus, the function should actually be called either - 'SetManufacturerString' or 'SetManufacturerStringDescriptorString'.) - - @param aThread A pointer to the thread the LDD requesting the setting of the string is running in. - @param aString A reference to a buffer which contains the string to be set (most likely located - user-side). - - @return KErrNoMemory if not enough memory for the new descriptor or the string could be allocated, the - return value of the thread read operation, Kern::ThreadRead(), if reading from the source buffer goes wrong, - KErrNone if new string descriptor successfully set. -*/ -EXPORT_C TInt DUsbClientController::SetManufacturerStringDescriptor(DThread* aThread, const TDes8& aString) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetManufacturerStringDescriptor()")); - return iDescriptors.SetManufacturerStringDescriptorTC(aThread, aString); - } - - -/** Removes (deletes) the Manufacturer string descriptor (which is referenced by the - iManufacturer field in the device descriptor). - - @return KErrNone if successful, KErrNotFound if the string descriptor couldn't be found -*/ -EXPORT_C TInt DUsbClientController::RemoveManufacturerStringDescriptor() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::RemoveManufacturerStringDescriptor()")); - return iDescriptors.RemoveManufacturerStringDescriptor(); - } - - -/** Returns the currently set Product string (which is referenced by the iProduct field in the device - descriptor). - - (Thus, the function should actually be called either 'GetProductString' or - 'GetProductStringDescriptorString'.) - - @param aThread A pointer to the thread the LDD requesting the string is running in. - @param aString A reference to a buffer into which the requested string should be written (most likely - located user-side). - - @return KErrNotFound if the string descriptor couldn't be found (PIL internal error), otherwise the return - value of the thread write operation, Kern::ThreadWrite(), when writing to the target buffer. -*/ -EXPORT_C TInt DUsbClientController::GetProductStringDescriptor(DThread* aThread, TDes8& aString) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetProductStringDescriptor()")); - return iDescriptors.GetProductStringDescriptorTC(aThread, aString); - } - - -/** Sets a new Product string in the Product string descriptor (which is referenced by the iProduct field in - the device descriptor). - - (Thus, the function should actually be called either 'SetProductString' or - 'SetProductStringDescriptorString'.) - - @param aThread A pointer to the thread the LDD requesting the setting of the string is running in. - @param aString A reference to a buffer which contains the string to be set (most likely located - user-side). - - @return KErrNoMemory if not enough memory for the new descriptor or the string could be allocated, the - return value of the thread read operation, Kern::ThreadRead(), if reading from the source buffer goes wrong, - KErrNone if new string descriptor successfully set. -*/ -EXPORT_C TInt DUsbClientController::SetProductStringDescriptor(DThread* aThread, const TDes8& aString) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetProductStringDescriptor()")); - return iDescriptors.SetProductStringDescriptorTC(aThread, aString); - } - - -/** Removes (deletes) the Product string descriptor (which is referenced by the - iProduct field in the device descriptor). - - @return KErrNone if successful, KErrNotFound if the string descriptor couldn't be found -*/ -EXPORT_C TInt DUsbClientController::RemoveProductStringDescriptor() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::RemoveProductStringDescriptor()")); - return iDescriptors.RemoveProductStringDescriptor(); - } - - -/** Returns the currently set SerialNumber string (which is referenced by the iSerialNumber field in the device - descriptor). - - (Thus, the function should actually be called either 'GetSerialNumberString' or - 'GetSerialNumberStringDescriptorString'.) - - @param aThread A pointer to the thread the LDD requesting the string is running in. - @param aString A reference to a buffer into which the requested string should be written (most likely - located user-side). - - @return KErrNotFound if the string descriptor couldn't be found (PIL internal error), otherwise the return - value of the thread write operation, Kern::ThreadWrite(), when writing to the target buffer. -*/ -EXPORT_C TInt DUsbClientController::GetSerialNumberStringDescriptor(DThread* aThread, TDes8& aString) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetSerialNumberStringDescriptor()")); - return iDescriptors.GetSerialNumberStringDescriptorTC(aThread, aString); - } - - -/** Sets a new SerialNumber string in the SerialNumber string descriptor (which is referenced by the - iSerialNumber field in the device descriptor). - - (Thus, the function should actually be called either - 'SetSerialNumberString' or 'SetSerialNumberStringDescriptorString'.) - - @param aThread A pointer to the thread the LDD requesting the setting of the string is running in. - @param aString A reference to a buffer which contains the string to be set (most likely located - user-side). - - @return KErrNoMemory if not enough memory for the new descriptor or the string could be allocated, the - return value of the thread read operation, Kern::ThreadRead(), if reading from the source buffer goes wrong, - KErrNone if new string descriptor successfully set. -*/ -EXPORT_C TInt DUsbClientController::SetSerialNumberStringDescriptor(DThread* aThread, const TDes8& aString) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetSerialNumberStringDescriptor()")); - return iDescriptors.SetSerialNumberStringDescriptorTC(aThread, aString); - } - - -/** Removes (deletes) the Serial Number string descriptor (which is referenced by the - iSerialNumber field in the device descriptor). - - @return KErrNone if successful, KErrNotFound if the string descriptor couldn't be found -*/ -EXPORT_C TInt DUsbClientController::RemoveSerialNumberStringDescriptor() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::RemoveSerialNumberStringDescriptor()")); - return iDescriptors.RemoveSerialNumberStringDescriptor(); - } - - -/** Returns the currently set Configuration string (which is referenced by the iConfiguration field in the - configuration descriptor). - - (Thus, the function should actually be called either 'GetConfigurationString' or - 'GetConfigurationStringDescriptorString'.) - - @param aThread A pointer to the thread the LDD requesting the string is running in. - @param aString A reference to a buffer into which the requested string should be written (most likely - located user-side). - - @return KErrNotFound if the string descriptor couldn't be found (PIL internal error), otherwise the return - value of the thread write operation, Kern::ThreadWrite(), when writing to the target buffer. -*/ -EXPORT_C TInt DUsbClientController::GetConfigurationStringDescriptor(DThread* aThread, TDes8& aString) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetConfigurationStringDescriptor()")); - return iDescriptors.GetConfigurationStringDescriptorTC(aThread, aString); - } - - -/** Sets a new Configuration string in the Configuration string descriptor (which is referenced by the - iConfiguration field in the configuration descriptor). - - (Thus, the function should actually be called either - 'SetConfigurationString' or 'SetConfigurationStringDescriptorString'.) - - @param aThread A pointer to the thread the LDD requesting the setting of the string is running in. - @param aString A reference to a buffer which contains the string to be set (most likely located - user-side). - - @return KErrNoMemory if not enough memory for the new descriptor or the string could be allocated, the - return value of the thread read operation, Kern::ThreadRead(), if reading from the source buffer goes wrong, - KErrNone if new string descriptor successfully set. -*/ -EXPORT_C TInt DUsbClientController::SetConfigurationStringDescriptor(DThread* aThread, const TDes8& aString) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetConfigurationStringDescriptor()")); - return iDescriptors.SetConfigurationStringDescriptorTC(aThread, aString); - } - - -/** Removes (deletes) the Configuration string descriptor (which is referenced by the - iConfiguration field in the configuration descriptor). - - @return KErrNone if successful, KErrNotFound if the string descriptor couldn't be found. -*/ -EXPORT_C TInt DUsbClientController::RemoveConfigurationStringDescriptor() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::RemoveConfigurationStringDescriptor()")); - return iDescriptors.RemoveConfigurationStringDescriptor(); - } - - -/** Copies the string descriptor at the specified index in the string descriptor array into - the aString argument. - - @param aIndex The position of the string descriptor in the string descriptor array. - @param aThread A pointer to the thread the LDD requesting the string is running in. - @param aString A reference to a buffer into which the requested string should be written (most likely - located user-side). - - @return KErrNone if successful, KErrNotFound if no string descriptor exists at the specified index, or the - return value of the thread write operation, Kern::ThreadWrite(), when writing to the target buffer. -*/ -EXPORT_C TInt DUsbClientController::GetStringDescriptor(DThread* aThread, TUint8 aIndex, TDes8& aString) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::GetStringDescriptor(%d)", aIndex)); - return iDescriptors.GetStringDescriptorTC(aThread, aIndex, aString); - } - - -/** Sets the aString argument to be a string descriptor at the specified index in the string - descriptor array. If a string descriptor already exists at that position then it will be replaced. - - @param aIndex The position of the string descriptor in the string descriptor array. - @param aThread A pointer to the thread the LDD requesting the setting of the string is running in. - @param aString A reference to a buffer which contains the string to be set (most likely located - user-side). - - @return KErrNone if successful, KErrArgument if aIndex is invalid, KErrNoMemory if no memory is available - to store the new string (an existing descriptor at that index will be preserved), or the return value of - the thread read operation, Kern::ThreadRead(), if reading from the source buffer goes wrong. -*/ -EXPORT_C TInt DUsbClientController::SetStringDescriptor(DThread* aThread, TUint8 aIndex, const TDes8& aString) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetStringDescriptor(%d)", aIndex)); - return iDescriptors.SetStringDescriptorTC(aThread, aIndex, aString); - } - - -/** Removes (deletes) the string descriptor at the specified index in the string descriptor array. - - @param aIndex The position of the string descriptor in the string descriptor array. - - @return KErrNone if successful, KErrNotFound if no string descriptor exists at the specified index. -*/ -EXPORT_C TInt DUsbClientController::RemoveStringDescriptor(TUint8 aIndex) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::RemoveStringDescriptor(%d)", aIndex)); - return iDescriptors.RemoveStringDescriptor(aIndex); - } - - -/** Queries the use of and endpoint resource. - - If the resource gets successfully allocated, it will be used from when the current bus transfer - has been completed. - - @param aClientId A pointer to the LDD querying the endpoint resource. - @param aEndpointNum The number of the endpoint. - @param aResource The endpoint resource to be queried. - - @return ETrue if the specified resource is in use at the endpoint, EFalse if not or if there was any error - during the execution of the function. -*/ -EXPORT_C TBool DUsbClientController::QueryEndpointResource(const DBase* /*aClientId*/, TInt aEndpointNum, - TUsbcEndpointResource aResource) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::QueryEndpointResource()")); - return iController.QueryEndpointResource(aEndpointNum, aResource); - } - - -EXPORT_C TInt DUsbClientController::EndpointPacketSize(const DBase* aClientId, TInt aEndpointNum) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::EndpointPacketSize(0x%08x, %d)", - aClientId, aEndpointNum)); - - const TUsbcInterfaceSet* const ifcset_ptr = ClientId2InterfacePointer(aClientId); - if (!ifcset_ptr) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: interface or clientid not found")); - return -1; - } - const TUsbcInterface* const ifc_ptr = ifcset_ptr->iInterfaces[ifcset_ptr->iCurrentInterface]; - const RPointerArray& ep_array = ifc_ptr->iEndpoints; - const TInt n = ep_array.Count(); - for (TInt i = 0; i < n; i++) - { - const TUsbcLogicalEndpoint* const ep = ep_array[i]; - if (EpAddr2Idx(ep->iPEndpoint->iEndpointAddr) == static_cast(aEndpointNum)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Endpoint packet sizes: FS = %d HS = %d", - ep->iEpSize_Fs, ep->iEpSize_Hs)); - const TInt size = iHighSpeed ? ep->iEpSize_Hs : ep->iEpSize_Fs; - __KTRACE_OPT(KUSB, Kern::Printf(" Returning %d", size)); - return size; - } - } - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: endpoint not found")); - return -1; - } - -EXPORT_C TDfcQue* DUsbClientController::DfcQ(TInt /*aIndex*/) - { - return iControllerProperties.iDfcQueue; - } - -EXPORT_C void DUsbClientController::DumpRegisters() - { - return; - } - -EXPORT_C TInt DUsbClientController::SignalRemoteWakeup() - { - return iController.SignalRemoteWakeup(); - } - -EXPORT_C TBool DUsbClientController::CurrentlyUsingHighSpeed() - { - UsbShai::TSpeed speed = iController.DeviceOperatingSpeed(); - - return (speed == UsbShai::EHighSpeed)?ETrue:EFalse; - } - -// -// === USB Controller member function implementations - PSL API (public) =========================== -// - -/** Gets called by the PSL to register a newly created derived class controller object. - - @param aUdc The number of the new UDC. It should be 0 for the first (or only) UDC in the system, 1 for the - second one, and so forth. KUsbcMaxUdcs determines how many UDCs are supported. - - @return A pointer to the controller if successfully registered, NULL if aUdc out of (static) range. - - @publishedPartner @released -*/ -TInt DUsbClientController::RegisterUdc(TInt aUdc) - { - TInt err = KErrNone; - - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::RegisterUdc()")); - - if (aUdc < 0 || aUdc > (KUsbcMaxUdcs - 1)) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: aUdc out of range (%d)", aUdc)); - return KErrInUse; - } - else - { - UsbClientController[aUdc] = this; - } - - return err; - } - - -// -// === USB Controller member function implementations - PSL API (protected) ======================== -// - -/** Initialises an instance of this class, which is the base class of the derived class (= PSL, which is - supposed to call this function). - - It does the following things: - - - disconnects the UDC from the bus, - - initialises the USB descriptor pool, uses data from the PSL (see function argument list) - - creates and initialises the basic USB device configuration - - initialises the array of physical endpoints - - initialises Ep0 structures (but doesn't configure & enable Ep0 yet) - - creates and installs the USB power handler - - @param aDeviceDesc A pointer to a valid standard USB device descriptor or NULL. The values initially - required in the descriptor follow from its constructor. The descriptor is not copied over, but rather this - pointer is queued directly into the descriptor pool. Must be writable memory. - - @param aConfigDesc A pointer to a valid standard USB configuration descriptor or NULL. The values - initially required in the descriptor follow from its constructor. The descriptor is not copied over, but - rather this pointer is queued directly into the descriptor pool. Must be writable memory. - - @param aLangId A pointer to a valid USB language ID (string) descriptor. The values initially required in - the descriptor follow from its constructor. The descriptor is not copied over, but rather this pointer is - queued directly into the descriptor pool. Must be writable memory. Other than the remaining four string - descriptors, this one is not optional. The reason is that the USB spec mandates a LangId descriptor as - soon as a single string descriptor gets returned by the device. So, even though the device might omit the - Manufacturer, Product, SerialNumber, and Configuration string descriptors, it is at this point not known - whether there will be any Interface string descriptors. Since any USB API user can create an interface - with an Interface string descriptor, we have to insist here on the provision of a LangId string - descriptor. (The PIL decides at run-time whether or not to return the LangId string descriptor to the - host, depending on whether there exist any string descriptors at that time.) - - @param aManufacturer A pointer to a valid USB string descriptor or NULL. The values initially required in - the descriptor follow from its constructor. The descriptor is not copied over, but rather this pointer is - queued directly into the descriptor pool. Must be writable memory. This descriptor will be referenced by - the iManufacturer field in the device descriptor. - - @param aProduct A pointer to a valid USB string descriptor or NULL. The values initially required in the - descriptor follow from its constructor. The descriptor is not copied over, but rather this pointer is - queued directly into the descriptor pool. Must be writable memory. This descriptor will be referenced by - the iProduct field in the device descriptor. - - @param aSerialNum A pointer to a valid USB string descriptor or NULL. The values initially required in the - descriptor follow from its constructor. The descriptor is not copied over, but rather this pointer is - queued directly into the descriptor pool. Must be writable memory. This descriptor will be referenced by - the iSerialNumber field in the device descriptor. - - @param aConfig A pointer to a valid USB string descriptor or NULL. The values initially required in the - descriptor follow from its constructor. The descriptor is not copied over, but rather this pointer is - queued directly into the descriptor pool. Must be writable memory. This descriptor will be referenced by - the iConfiguration field in the configuration descriptor. - - @param aOtgDesc A pointer to a valid USB OTG descriptor (if OTG is supported by this device and is to be - supported by the driver) or NULL. The values initially required in the descriptor follow from its - constructor. The descriptor is not copied over, but rather this pointer is queued directly into the - descriptor pool. Must be writable memory. - - @return EFalse, if USB descriptor pool initialisation fails, or if configuration creation fails, or if the - PSL reports more endpoints than the constant KUsbcMaxEndpoints permits, or if the Ep0 logical endpoint - creation fails, or if the creation of the power handler fails; ETrue, if base class object successfully - initialised. - - @publishedPartner @released -*/ -TBool DUsbClientController::Initialise(TUsbPeripheralDescriptorPool& aDescPool, - const UsbShai::TUsbPeripheralEndpointCaps* aEndpointCaps, - TInt aTotalEndpoints) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::InitialiseBaseClass()")); - - // We don't want the host to see us (at least not yet): - UsbDisconnect(); - - iDeviceTotalEndpoints = aTotalEndpoints; - - // Initialise USB descriptor pool - if (iDescriptors.Init(aDescPool.iDeviceDesc, - aDescPool.iConfigDesc, - aDescPool.iLangId, - aDescPool.iManufacturer, - aDescPool.iProduct, - aDescPool.iSerialNum, - aDescPool.iConfig, - aDescPool.iOtgDesc) != KErrNone) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Error: Descriptor initialization failed")); - return EFalse; - } - - if (aDescPool.iOtgDesc) - { - iOtgSupport = ETrue; - iOtgFuncMap = aDescPool.iOtgDesc->DescriptorData()[2]; - } - - // Some member variables - iSelfPowered = aDescPool.iConfigDesc->Byte(7) & (1 << 6); // Byte 7: bmAttributes - iRemoteWakeup = aDescPool.iConfigDesc->Byte(7) & (1 << 5); - - if (iControllerProperties.iControllerCaps & UsbShai::KDevCapHighSpeed) - { - if (iDescriptors.InitHs() != KErrNone) - { - return EFalse; - } - } - - // Create and initialise our first (and only) configuration - TUsbcConfiguration* config = new TUsbcConfiguration(1); - if (!config) - { - return EFalse; - } - iConfigs.Append(config); - - // Initialise the array of physical endpoints - __KTRACE_OPT(KUSB, Kern::Printf(" DeviceTotalEndpoints: %d", aTotalEndpoints)); - - // KUsbcMaxEndpoints doesn't include ep 0 - if ((aTotalEndpoints > (KUsbcMaxEndpoints + 2)) || - ((aTotalEndpoints * sizeof(TUsbcPhysicalEndpoint)) > sizeof(iRealEndpoints))) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: too many endpoints! (change KUsbcMaxEndpoints: %d)", - KUsbcMaxEndpoints)); - return EFalse; - } - - for (TInt i = 0; i < aTotalEndpoints; ++i) - { - iRealEndpoints[i].iEndpointAddr = EpIdx2Addr(i); - - __KTRACE_OPT(KUSB, Kern::Printf(" aEndpointCaps[%02d] - iTypes: 0x%08x iSizes: 0x%08x", - i, aEndpointCaps[i].iTypesAndDir, aEndpointCaps[i].iSizes)); - - iRealEndpoints[i].iCaps = aEndpointCaps[i]; - - // Reset revered bytes to zero - iRealEndpoints[i].iCaps.iReserved[0] = 0; - iRealEndpoints[i].iCaps.iReserved[1] = 0; - - if ((i > 1) && (aEndpointCaps[i].iTypesAndDir != UsbShai::KUsbEpNotAvailable)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" --> UsableEndpoint: #%d", i)); - iDeviceUsableEndpoints++; - } - } - - // Initialise Ep0 structures (logical endpoints are numbered 1..KMaxEndpointsPerClient, - // and virtual 0 is real 0): - // -- Ep0 OUT - iEp0MaxPacketSize = MaxEndpointPacketSize(aEndpointCaps[0].iSizes); - __KTRACE_OPT(KUSB, Kern::Printf(" using Ep0 maxpacketsize of %d bytes", iEp0MaxPacketSize)); - - TUsbcEndpointInfo info(UsbShai::KUsbEpTypeControl, UsbShai::KUsbEpDirOut, 0); - TUsbcLogicalEndpoint* ep = NULL; - - info.iSize = iEp0MaxPacketSize; - ep = new TUsbcLogicalEndpoint(this, 0, info, NULL, &iRealEndpoints[KEp0_Out]); - if (!ep) - { - return EFalse; - } - - __KTRACE_OPT(KUSB, Kern::Printf(" creating ep: mapping real ep %d --> logical ep 0", KEp0_Out)); - iRealEndpoints[KEp0_Out].iLEndpoint = ep; - - // -- Ep0 IN - info.iDir = UsbShai::KUsbEpDirIn; - ep = new TUsbcLogicalEndpoint(this, 0, info, NULL, &iRealEndpoints[KEp0_In]); - if (!ep) - { - delete iRealEndpoints[KEp0_Out].iLEndpoint; - iRealEndpoints[KEp0_Out].iLEndpoint = NULL; - return EFalse; - } - __KTRACE_OPT(KUSB, Kern::Printf(" creating ep: mapping real ep %d --> logical ep 0", KEp0_In)); - iRealEndpoints[KEp0_In].iLEndpoint = ep; - - iPowerHandler = new DUsbcPowerHandler(this); - if (!iPowerHandler) - { - delete iRealEndpoints[KEp0_Out].iLEndpoint; - iRealEndpoints[KEp0_Out].iLEndpoint = NULL; - delete iRealEndpoints[KEp0_In].iLEndpoint; - iRealEndpoints[KEp0_In].iLEndpoint = NULL; - return EFalse; - } - iPowerHandler->Add(); - - return ETrue; - } - -/** The standard constructor for this class. - - @publishedPartner @released - */ -DUsbClientController::DUsbClientController(UsbShai::MPeripheralControllerIf& aPeripheralControllerIf, - const UsbShai::TPeripheralControllerProperties& aProperties, - TBool aIsOtgPort) - : iEp0ReceivedNonStdRequest(EFalse), - iRmWakeupStatus_Enabled(EFalse), - iEp0_RxBuf(), - iDeviceTotalEndpoints(0), - iDeviceUsableEndpoints(0), - iDeviceState(UsbShai::EUsbPeripheralStateUndefined), - iDeviceStateB4Suspend(UsbShai::EUsbPeripheralStateUndefined), - iSelfPowered(EFalse), - iRemoteWakeup(EFalse), - iHardwareActivated(EFalse), - iOtgSupport(EFalse), - iOtgFuncMap(0), - iHighSpeed(EFalse), - iEp0MaxPacketSize(0), - iEp0ClientId(NULL), - iEp0DataReceived(0), - iEp0WritePending(EFalse), - iEp0ClientDataTransmitting(EFalse), - iEp0DeviceControl(NULL), - iDescriptors(iEp0_TxBuf), - iCurrentConfig(0), - iConfigs(1), - iRealEndpoints(), - iEp0_TxBuf(), - iEp0_RxExtraCount(0), - iEp0_TxNonStdCount(0), - iEp0ReadRequestCallbacks(_FOFF(TUsbcRequestCallback, iLink)), - iClientCallbacks(_FOFF(TUsbcClientCallback, iLink)), - iStatusCallbacks(_FOFF(TUsbcStatusCallback, iLink)), - iEpStatusCallbacks(_FOFF(TUsbcEndpointStatusCallback, iLink)), - iOtgCallbacks(_FOFF(TUsbcOtgFeatureCallback, iLink)), - iReconnectTimer(ReconnectTimerCallback, this), - iUsbLock(TSpinLock::EOrderGenericIrqLow3), - iController(aPeripheralControllerIf), - iControllerProperties(aProperties), - iIsOtgPort(aIsOtgPort), - iOtgObserver(NULL), - iConTransferMgr(NULL), - iLastError(EFalse), - iSetupPacketPending(EFalse), - iCommonDfcQThread(NULL), - iPowerUpDfc(PowerUpDfc, this, 3), - iPowerDownDfc(PowerDownDfc, this, 3), - iDeviceEventNotifyDfc(DeviceEventNotifyDfc,this,3), - iThreadContextFinder(ThreadContextFinderDfc,this,3), - iStandby(EFalse), - iStackIsActive(EFalse), - iClientSupportReady(EFalse), - iUsbResetDeferred(EFalse), - iEnablePullUpOnDPlus(NULL), - iDisablePullUpOnDPlus(NULL), - iOtgContext(NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::DUsbClientController()")); - - iLastError = KErrNone; - -#ifndef SEPARATE_USB_DFC_QUEUE - iPowerUpDfc.SetDfcQ(Kern::DfcQue0()); - iPowerDownDfc.SetDfcQ(Kern::DfcQue0()); -#endif // SEPARATE_USB_DFC_QUEUE - - for (TInt i = 0; i < KUsbcEpArraySize; i++) - iRequestCallbacks[i] = NULL; - } - -TInt DUsbClientController::Construct() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::Construct")); - - // Setup the state machines of ep0 - TInt err = SetupEp0StateMachine(); - if( err != KErrNone) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Can not setup state machines, exit")); - return err; - } - -#ifdef SEPARATE_USB_DFC_QUEUE - iPowerUpDfc.SetDfcQ(iControllerProperties.iDfcQueue); - iPowerDownDfc.SetDfcQ(iControllerProperties.iDfcQueue); -#endif // SEPARATE_USB_DFC_QUEUE - - iDeviceEventNotifyDfc.SetDfcQ(iControllerProperties.iDfcQueue); - iThreadContextFinder.SetDfcQ(iControllerProperties.iDfcQueue); - - // Register - if( RegisterUdc(0) != KErrNone) - { - // This is the only reason. - return KErrInUse; - } - - __KTRACE_OPT(KUSB, Kern::Printf(" peripheral controller registered")); - TUsbPeripheralDescriptorPool descPool; - - if( CreateDescriptors(descPool) == KErrNone) - { - __KTRACE_OPT(KUSB, Kern::Printf(" descriptors created")); - - // Initialise the array of physical endpoints - __KTRACE_OPT(KUSB, Kern::Printf(" initialising PIL ")); - TBool initOk = Initialise(descPool, - iControllerProperties.iDeviceEndpointCaps, - iControllerProperties.iDeviceTotalEndpoints); - - // Let UDC has a changes to know the callback interface is ready. - // Any further initialization/startup/preparation etc can be performed now. - if ( initOk ) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Initializing PSL ")); - - // Set Rx buffer for endpoint zero - iController.SetEp0RxBuffer(iEp0_RxBuf,KUsbcBufSzControl); - - // Set pil callback interface for PSL. - iController.SetPilCallbackInterface(*this); - - } - else - { - return KErrNoMemory; - } - } - - // Register ourself as the ONLY one client of charger detection observer - gChargerObsever = this; - - // In case the charger detector already registered, start monitor - // Charger type notifications - if( gChargerDetector != NULL ) - { - gChargerDetector->SetChargerDetectorObserver(*gChargerObsever); - } - - iThreadContextFinder.Enque(); - - return KErrNone; - } - -// This function doesn't consider the situation of OOM. -// Because, this function will be call during extension's entry point, -// There is no way to start up phone successfully if anything failed anyway... -TInt DUsbClientController::SetupEp0StateMachine() - { - // Create the state machine first - __ASSERT_DEBUG((iConTransferMgr == NULL), Kern::Fault(KUsbPILPanicCat, __LINE__)); - iConTransferMgr = new DControlTransferManager(*this); - if(iConTransferMgr == 0) - { - return KErrNoMemory; - } - - // Add UsbShai::EControlTransferStageSetup stage machine - TControlStageSm* stageSm = new DSetupStageSm(*iConTransferMgr); - __ASSERT_DEBUG((stageSm != NULL), Kern::Fault(KUsbPILPanicCat, __LINE__)); - if(stageSm != NULL) - { - iConTransferMgr->AddState(UsbShai::EControlTransferStageSetup,*stageSm); - } - else - { - return KErrNoMemory; - } - - // Add EControlTransferStageDataOut stage state machine - stageSm = new DDataOutStageSm(*iConTransferMgr); - __ASSERT_DEBUG((stageSm != NULL), Kern::Fault(KUsbPILPanicCat, __LINE__)); - if(stageSm != NULL) - { - iConTransferMgr->AddState(UsbShai::EControlTransferStageDataOut,*stageSm); - } - else - { - // we don't need bother to delete the previous allocated memory - // system can not bootup if we return error - return KErrNoMemory; - } - - // Add EControlTransferStageStatusIn stage state machine - stageSm = new DStatusInStageSm(*iConTransferMgr); - __ASSERT_DEBUG((stageSm != NULL), Kern::Fault(KUsbPILPanicCat, __LINE__)); - if(stageSm != NULL) - { - iConTransferMgr->AddState(UsbShai::EControlTransferStageStatusIn,*stageSm); - } - else - { - return KErrNoMemory; - } - - // Add EControlTransferStageDataIn stage state machine - stageSm = new DDataInStageSm(*iConTransferMgr); - __ASSERT_DEBUG((stageSm != NULL), Kern::Fault(KUsbPILPanicCat, __LINE__)); - if(stageSm != NULL) - { - iConTransferMgr->AddState(UsbShai::EControlTransferStageDataIn,*stageSm); - } - else - { - return KErrNoMemory; - } - - // Add EControlTransferStageStatusOut stage state machine - stageSm = new DStatusOutStageSm(*iConTransferMgr); - __ASSERT_DEBUG((stageSm != NULL), Kern::Fault(KUsbPILPanicCat, __LINE__)); - if(stageSm != NULL) - { - iConTransferMgr->AddState(UsbShai::EControlTransferStageStatusOut,*stageSm); - } - else - { - return KErrNoMemory; - } - - return KErrNone; - } - -// --------------------------------------------------------------------------- -// From MUsbPeripheralPilCallbackIf. -// Enable the peripheral stack -// --------------------------------------------------------------------------- -// -void DUsbClientController::EnablePeripheralStack() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::EnablePeripheralStack")); - - if (iStackIsActive) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Already enabled - returning")); - return; - } - - // Mark stack is enabled, Waiting upper application to power controller - // Anyway, this will lead us to attached state - iStackIsActive = ETrue; - NextDeviceState(UsbShai::EUsbPeripheralStateAttached); - - // If hardware is not activated yet, do it here. - if(iClientSupportReady && !iHardwareActivated) - { - // PowerUpUdc only do Activating Hardware when there are at least 1 - // Iterface registered. - PowerUpUdc(); - } - - } - - -// --------------------------------------------------------------------------- -// From MUsbPeripheralPilCallbackIf. -// Disable the peripheral stack -// --------------------------------------------------------------------------- -// -void DUsbClientController::DisablePeripheralStack() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::DisablePeripheralStack")); - - if (!iStackIsActive) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Already disabled - returning")); - return; - } - - // Reset OTG features, leave attributes as is (just as in USB Reset case) - // (OTG spec 1.3 sections 6.5.x all say "... on a bus reset or at the end - // of a session." VBus drop is the end of a session.) - iOtgFuncMap &= KUsbOtgAttr_SrpSupp | KUsbOtgAttr_HnpSupp; - OtgFeaturesNotify(); - // Tear down the current configuration (if any) - ChangeConfiguration(0); - - if (iDeviceState != UsbShai::EUsbPeripheralStateUndefined) - { - // Not being in state UNDEFINED implies that the cable is inserted. - if (iHardwareActivated) - { - NextDeviceState(UsbShai::EUsbPeripheralStatePowered); - } - // (If the hardware is NOT activated at this point, we can only be in - // state UsbShai::EUsbPeripheralStateAttached, so we don't have to move to it.) - } - DeActivateHardwareController(); // turn off UDC altogether - iStackIsActive = EFalse; - // Notify registered clients on the user side about a USB device state - // change event and a transition to the "Undefined" state. - // Note: the state should be changed to "Undefined" before calling RunClientCallbacks(), - // otherwise the "Undefined" state will probably be lost. - NextDeviceState(UsbShai::EUsbPeripheralStateUndefined); - // Complete all pending requests, returning KErrDisconnected - RunClientCallbacks(); - } - - -// --------------------------------------------------------------------------- -// From MUsbPeripheralPilCallbackIf. -// Set the OTG Observer -// --------------------------------------------------------------------------- -// -void DUsbClientController::SetOtgObserver(MUsbOtgPeripheralObserverIf* aObserver) - { - iOtgObserver = aObserver; - } - - -/** This function gets called by the PSL upon detection of either of the following events: - - USB Reset, - - USB Suspend event, - - USB Resume signalling, - - The USB cable has been attached (inserted) or detached (removed). - - @param anEvent An enum denoting the event that has occured. - - @return KErrArgument if the event is not recognized, otherwise KErrNone. - - @publishedPartner @released -*/ -TInt DUsbClientController::DeviceEventNotification(UsbShai::TUsbPeripheralEvent anEvent) - { - TInt err = KErrNone; - - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::DeviceEventNotification(anEvent=%d)", anEvent)); - - switch (anEvent) - { - case UsbShai::EUsbEventSuspend: - case UsbShai::EUsbEventResume: - case UsbShai::EUsbEventReset: - case UsbShai::EUsbEventVbusRisen: - case UsbShai::EUsbEventVbusFallen: - { - TInt nkern_curr_ctx= NKern::CurrentContext(); - - if( (nkern_curr_ctx != NKern::EInterrupt) && (nkern_curr_ctx != NKern::EIDFC)) - { - // Normal context - __ASSERT_DEBUG((iCommonDfcQThread != NULL), Kern::Fault(KUsbPILPanicCat, __LINE__)); - if(iCommonDfcQThread == &(Kern::CurrentThread().iNThread)) - { - // we already in the correct context, just run processes here directly. - __KTRACE_OPT(KUSB, Kern::Printf(" Correct thread context")); - ProcessDeviceEventNotification(anEvent); - } - else - { - // we're in a normal thread, but it is not the same as the DfcQ context - // passed by PSL, queue it - __KTRACE_OPT(KUSB, Kern::Printf(" Incorrect thread context")); - iDevEventQueue.FifoAdd(anEvent); - iDeviceEventNotifyDfc.Enque(); - } - } - else - { - // We're in a ISR or IDFC context - __KTRACE_OPT(KUSB, Kern::Printf(" ISR|IDFC context")); - iDevEventQueue.FifoAdd(anEvent); - iDeviceEventNotifyDfc.Add(); - } - } - break; - - default: - err = KErrArgument; - } - - return err; - } - - -/** This function gets called by the PSL upon completion of a pending data transfer request. - - This function is not to be used for endpoint zero completions (use Ep0RequestComplete instead). - - @param aCallback A pointer to a data transfer request callback structure which was previously passed to - the PSL in a SetupReadBuffer() or SetupWriteBuffer() call. - - @publishedPartner @released -*/ -void DUsbClientController::EndpointRequestComplete(UsbShai::TUsbPeripheralRequest* aCallback) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::EndpointRequestComplete(%p)", aCallback)); - - TUsbcRequestCallback* cb = static_cast(aCallback); - // This function may be called by the PSL from within an ISR -- so we have - // to take care what we do here (and also in all functions that get called - // from here). - - // We don't test aCallback for NULL here (and therefore risk a crash) - // because the PSL should never give us a NULL argument. If it does it - // means the PSL is buggy and ought to be fixed. - ProcessDataTransferDone(*cb); - } - - -/** This function should be called by the PSL after reception of an Ep0 - SET_FEATURE request with a feature selector of either {b_hnp_enable, - a_hnp_support, a_alt_hnp_support}, but only when that Setup packet is not - handed up to the PIL (for instance because it is auto-decoded and - 'swallowed' by the UDC hardware). - - @param aHnpState A bitmask indicating the present state of the three OTG - feature selectors as follows: - - bit.0 == a_alt_hnp_support - bit.1 == a_hnp_support - bit.2 == b_hnp_enable - - @see DUsbClientController::ProcessSetClearDevFeature() - - @publishedPartner @released -*/ -void DUsbClientController::HandleHnpRequest(TInt aHnpState) -// This function is called by the PSL from within an ISR -- so we have to take care what we do here -// (and also in all functions that get called from here). - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::HandleHnpRequest(%d)", aHnpState)); - - if (!iOtgSupport) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Request only supported on a OTG device")); - return; - } - if (!(iOtgFuncMap & KUsbOtgAttr_HnpSupp)) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Request only valid if OTG device supports HNP")); - return; - } - // (case KUsbFeature_B_HnpEnable:) - if (aHnpState & 0x04) - { - iOtgFuncMap |= KUsbOtgAttr_B_HnpEnable; - } - // (case KUsbFeature_A_HnpSupport:) - if (aHnpState & 0x02) - { - iOtgFuncMap |= KUsbOtgAttr_A_HnpSupport; - } - // (case KUsbFeature_A_AltHnpSupport:) - if (aHnpState & 0x01) - { - iOtgFuncMap |= KUsbOtgAttr_A_AltHnpSupport; - } - OtgFeaturesNotify(); - } - -void DUsbClientController::GetEp0RxBufferInfo(TUint8*& aBuffer, TInt& aBufferLen) - { - aBuffer = iEp0_RxBuf; - aBufferLen = KUsbcBufSzControl; - } - -UsbShai::TUsbPeripheralState DUsbClientController::DeviceStatus() const - { - return iDeviceState; - } - -TBool DUsbClientController::Ep0ReceivedNonStdRequest() - { - return iEp0ReceivedNonStdRequest; - } - -/** This function gets called by the PSL upon completion of a pending endpoint zero data transfer request. - - @param aRealEndpoint Either 0 for Ep0 OUT (= Read), or 1 for Ep0 IN (= Write). - @param aCount The number of bytes received or transmitted, respectively. - @param aError The error status of the completed transfer request. Can be KErrNone if no error, KErrCancel - if transfer was cancelled, or KErrPrematureEnd if a premature status end was encountered. - - @return KErrNone if no error during transfer completion processing, KErrGeneral if the request was a read & - a Setup packet was received & the recipient for that packet couldn't be found (invalid packet: Ep0 has been - stalled), KErrNotFound if the request was a read & the recipient for that packet (Setup or data) _was_ - found - however no read had been set up by that recipient (this case should be used by the PSL to disable - the Ep0 interrupt at that point and give the LDD time to set up a new Ep0 read; once the 'missing' read - was set up either Ep0ReceiveProceed or Ep0ReadSetupPktProceed will be called by the PIL). - - @publishedPartner @released -*/ -TInt DUsbClientController::Ep0RequestComplete(TInt aRealEndpoint, - TInt aCount, - TInt aError, - UsbShai::TControlPacketType aPktType) - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::Ep0RequestComplete(%d)", aRealEndpoint)); - - iLastError = KErrNone; - - iConTransferMgr->Ep0RequestComplete(iEp0_RxBuf,aCount,aError,aPktType); - - __KTRACE_OPT(KUSB, Kern::Printf(" iLastError(%d)", iLastError)); - - if(iEp0WritePending == EFalse) - { - iConTransferMgr->SetupEndpointZeroRead(); - } - - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::Ep0RequestComplete")); - return iLastError; - } - -/** This function should be called by the PSL once the UDC (and thus the USB device) is in the Address state. - - @publishedPartner @released -*/ -void DUsbClientController::MoveToAddressState() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::MoveToAddressState()")); - - // This function may be called by the PSL from within an ISR -- so we have - // to take care what we do here (and also in all functions that get called - // from here). - - NextDeviceState(UsbShai::EUsbPeripheralStateAddress); - } - - -TBool DUsbClientController::CreateDescriptors(TUsbPeripheralDescriptorPool& aOutput) - { - TInt errCode = KErrNone; - - // Create all the string descriptors - TUsbcDeviceDescriptor* deviceDesc = TUsbcDeviceDescriptor::New( - 0, // aDeviceClass, will be changed later by upper app - 0, // aDeviceSubClass, will be changed later by upper app - 0, // aDeviceProtocol, will be changed later by upper app - iControllerProperties.iMaxEp0Size , // aMaxPacketSize0 - KUsbVendorId, // aVendorId - KUsbProductId , // aProductId - iControllerProperties.iDeviceRelease, // aDeviceRelease - KUsbNumberOfConfiguration);// aNumConfigurations - __ASSERT_DEBUG( (deviceDesc != NULL), Kern::Fault( "USB PSL Out of memory, deviceDesc", __LINE__ )); - - TUsbcConfigDescriptor* configDesc = TUsbcConfigDescriptor::New( - 1, // Only one configruation is supported current. - EFalse, // at here, we always mark it as bus powered. - (iControllerProperties.iControllerCaps & UsbShai::KDevCapRemoteWakeupSupport)?ETrue:EFalse, // remote wakeup - 100); // 100 is a default value, thise value will be changed by - - __ASSERT_DEBUG( (configDesc != NULL), Kern::Fault( "USB PSL Out of memory, configDesc", __LINE__ )); - - TUsbcLangIdDescriptor* stringDescLang = TUsbcLangIdDescriptor::New(KUsbLangId); - __ASSERT_DEBUG( (stringDescLang != NULL), Kern::Fault( "USB PSL Out of memory, stringDescLang", __LINE__ )); - - // Default manufacturer string - TPtrC8 aString; - aString.Set(reinterpret_cast(KStringManufacturer), sizeof(KStringManufacturer) - 2); - TUsbcStringDescriptor* stringDescManu = TUsbcStringDescriptor::New(aString); - __ASSERT_DEBUG( (stringDescManu != NULL), Kern::Fault( "USB PSL Out of memory, stringDescManu", __LINE__ )); - - // Default product name string - aString.Set(reinterpret_cast(KStringProduct), sizeof(KStringProduct) - 2); - TUsbcStringDescriptor* stringDescProd = TUsbcStringDescriptor::New(aString); - __ASSERT_DEBUG( (stringDescProd != NULL), Kern::Fault( "USB PSL Out of memory, stringDescProd", __LINE__ )); - - // Default configuration name string - aString.Set(reinterpret_cast(KStringConfig), sizeof(KStringConfig) - 2); - TUsbcStringDescriptor* stringDescConf = TUsbcStringDescriptor::New(aString); - __ASSERT_DEBUG( (stringDescConf != NULL), Kern::Fault( "USB PSL Out of memory, stringDescConf", __LINE__ )); - - // Default serial bumber string - aString.Set(reinterpret_cast(KStringSerial), sizeof(KStringSerial) - 2); - TUsbcStringDescriptor* stringSerial = TUsbcStringDescriptor::New(aString); - __ASSERT_DEBUG( (stringSerial != NULL), Kern::Fault( "USB PSL Out of memory, stringDescConf", __LINE__ )); - - TUsbcOtgDescriptor* otgDesc = NULL; - - // In an OTG-environment, we also need to create the OTG - // descriptor. The PSL supports both HNP and SRP and hence we - // report support for them. Upper layers will override the - // descriptors anyway. - if (iIsOtgPort) - { - TBool srpSupported = (iControllerProperties.iControllerCaps & UsbShai::KDevCapSrpSupport)?ETrue:EFalse; - TBool hnpSupported = (iControllerProperties.iControllerCaps & UsbShai::KDevCapHnpSupport)?ETrue:EFalse; - - otgDesc = TUsbcOtgDescriptor::New(srpSupported, - hnpSupported); - - __ASSERT_DEBUG( (otgDesc != NULL), Kern::Fault( "USB PSL Out of memory, otgDesc", __LINE__ )); - } - - if( (deviceDesc != NULL) && - (configDesc != NULL) && - (stringDescLang != NULL) && - (stringDescManu != NULL) && - (stringDescProd != NULL) && - (stringDescConf != NULL) && - ((!iIsOtgPort) || (iIsOtgPort && (otgDesc != NULL)))) - { - aOutput.iDeviceDesc = deviceDesc; - aOutput.iConfigDesc = configDesc; - aOutput.iLangId = stringDescLang; - aOutput.iManufacturer = stringDescManu; - aOutput.iProduct = stringDescProd; - aOutput.iConfig = stringDescConf; - aOutput.iSerialNum = stringSerial; - aOutput.iOtgDesc = otgDesc; - } - else - { - if( deviceDesc != NULL ) - { - delete deviceDesc; - } - - if( configDesc != NULL ) - { - delete configDesc; - } - - if( stringDescLang != NULL ) - { - delete stringDescLang; - } - - if( stringDescManu != NULL ) - { - delete stringDescManu; - } - - if( stringDescProd != NULL ) - { - delete stringDescProd; - } - - if( stringDescConf != NULL ) - { - delete stringDescConf; - } - - if( stringSerial != NULL ) - { - delete stringSerial; - } - - if( otgDesc != NULL ) - { - delete otgDesc; - } - - errCode = KErrNoMemory; - } - - // We don't support serial number - aOutput.iSerialNum = NULL; - - return errCode; - } - -// -// === USB Controller member function implementations - Internal utility functions (private) ======= -// - -TInt DUsbClientController::DeRegisterClientCallback(const DBase* aClientId) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::DeRegisterClientCallback()")); - __ASSERT_DEBUG((aClientId != NULL), Kern::Fault(KUsbPILPanicCat, __LINE__)); - TSglQueIter iter(iClientCallbacks); - TUsbcClientCallback* p; - while ((p = iter++) != NULL) - if (p->Owner() == aClientId) - { - __KTRACE_OPT(KUSB, Kern::Printf(" removing ClientCallback @ 0x%x", p)); - iClientCallbacks.Remove(*p); - return KErrNone; - } - __KTRACE_OPT(KUSB, Kern::Printf(" Client not found")); - return KErrNotFound; - } - - -TBool DUsbClientController::CheckEpAvailability(TInt aEndpointsUsed, - const TUsbcEndpointInfoArray& aEndpointData, - TInt aIfcNumber) const - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::CheckEpAvailability()")); - if (aEndpointsUsed > KMaxEndpointsPerClient) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: too many endpoints claimed (%d)", aEndpointsUsed)); - return EFalse; - } - TBool reserve[KUsbcEpArraySize]; // iDeviceTotalEndpoints can be equal to 32 - memset(reserve, EFalse, sizeof(reserve)); // reset the array - for (TInt i = 0; i < aEndpointsUsed; ++i) - { - __KTRACE_OPT(KUSB, Kern::Printf(" checking for (user) endpoint #%d availability...", i + 1)); - TInt j = 2; - while (j < iDeviceTotalEndpoints) - { - if ((iRealEndpoints[j].EndpointSuitable(&aEndpointData[i], aIfcNumber)) && - (reserve[j] == EFalse)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" ---> found suitable endpoint: RealEndpoint #%d", j)); - reserve[j] = ETrue; // found one: mark this ep as reserved - break; - } - __KTRACE_OPT(KUSB, Kern::Printf(" -> endpoint not suitable: RealEndpoint #%d", j)); - j++; - } - if (j == iDeviceTotalEndpoints) - { - return EFalse; - } - } - return ETrue; - } - - -TUsbcInterface* DUsbClientController::CreateInterface(const DBase* aClientId, TInt aIfc, TUint32 aFeatureWord) -// We know that 9.2.3 says: "Interfaces are numbered from zero to one less than the number of -// concurrent interfaces supported by the configuration." But since we permit the user to -// change interface numbers, we can neither assume nor enforce anything about them here. - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::CreateInterface(x, aIfc=%d)", aIfc)); - TUsbcInterfaceSet* ifcset_ptr = NULL; - TInt ifcset = ClientId2InterfaceNumber(aClientId); - TBool new_ifc; - if (ifcset < 0) - { - // New interface(set), so we need to find a number for it. - new_ifc = ETrue; - const TInt num_ifcsets = iConfigs[0]->iInterfaceSets.Count(); - if (num_ifcsets == 255) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Too many interfaces already exist: 255")); - return NULL; - } - // Find the smallest interface number that has not yet been used. - for (ifcset = 0; ifcset < 256; ++ifcset) - { - TBool n_used = EFalse; - for (TInt i = 0; i < num_ifcsets; ++i) - { - if ((iConfigs[0]->iInterfaceSets[i]->iInterfaceNumber) == ifcset) - { - __KTRACE_OPT(KUSB, Kern::Printf(" interface number %d already used", ifcset)); - n_used = ETrue; - break; - } - } - if (!n_used) - { - break; - } - } - if (ifcset == 256) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: no available interface number found")); - return NULL; - } - // append the ifcset - __KTRACE_OPT(KUSB, Kern::Printf(" creating new InterfaceSet %d first", ifcset)); - if (aIfc != 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: invalid interface setting number (1): %d", aIfc)); - return NULL; - } - if ((ifcset_ptr = new TUsbcInterfaceSet(aClientId, ifcset)) == NULL) - { - __KTRACE_OPT(KPANIC, - Kern::Printf(" Error: new TUsbcInterfaceSet(aClientId, ifcset_num) failed")); - return NULL; - } - iConfigs[0]->iInterfaceSets.Append(ifcset_ptr); - } - else /* if (ifcset_num >= 0) */ - { - // use an existent ifcset - new_ifc = EFalse; - __KTRACE_OPT(KUSB, Kern::Printf(" using existing InterfaceSet %d", ifcset)); - ifcset_ptr = InterfaceNumber2InterfacePointer(ifcset); - if (aIfc != ifcset_ptr->iInterfaces.Count()) - { - // 9.2.3: "Alternate settings range from zero to one less than the number of alternate - // settings for a specific interface." (Thus we can here only append a setting.) - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: invalid interface setting number (2): %d", aIfc)); - return NULL; - } - // Check whether the existing interface belongs indeed to this client - if (ifcset_ptr->iClientId != aClientId) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: iClientId (%p) != aClientId (%p)", - ifcset_ptr->iClientId, aClientId)); - return NULL; - } - } - const TBool no_ep0_requests = aFeatureWord & KUsbcInterfaceInfo_NoEp0RequestsPlease; - TUsbcInterface* const ifc_ptr = new TUsbcInterface(ifcset_ptr, aIfc, no_ep0_requests); - if (!ifc_ptr) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: new TUsbcInterface(ifcset, aIfc) failed")); - if (new_ifc) - { - DeleteInterfaceSet(ifcset); - } - return NULL; - } - ifcset_ptr->iInterfaces.Append(ifc_ptr); - return ifc_ptr; - } - - -#define RESET_SETTINGRESERVE \ - for (TInt i = start_ep; i < iDeviceTotalEndpoints; i++) \ - { \ - if (iRealEndpoints[i].iSettingReserve) \ - iRealEndpoints[i].iSettingReserve = EFalse; \ - } \ - -TInt DUsbClientController::CreateEndpoints(TUsbcInterface* aIfc, TInt aEndpointsUsed, - const TUsbcEndpointInfoArray& aEndpointData, - TInt aRealEpNumbers[]) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::CreateEndpoints()")); - const TInt ifc_num = aIfc->iInterfaceSet->iInterfaceNumber; - const TInt start_ep = 2; - for (TInt i = 0; i < aEndpointsUsed; ++i) - { - for (TInt j = start_ep; j < iDeviceTotalEndpoints; ++j) - { - if (iRealEndpoints[j].EndpointSuitable(&aEndpointData[i], ifc_num)) - { - // Logical endpoints are numbered 1..KMaxEndpointsPerClient (virtual 0 is real 0 and 1) - TUsbcLogicalEndpoint* const ep = new TUsbcLogicalEndpoint(this, i + 1, aEndpointData[i], - aIfc, &iRealEndpoints[j]); - if (!ep) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: new TUsbcLogicalEndpoint() failed")); - aIfc->iEndpoints.ResetAndDestroy(); - RESET_SETTINGRESERVE; - return KErrNoMemory; - } - aIfc->iEndpoints.Append(ep); - // Check on logical endpoint's sizes for compliance with special restrictions. - if (aIfc->iSettingCode == 0) - { - // For details see last paragraph of 5.7.3 "Interrupt Transfer Packet Size Constraints". - if ((ep->iInfo.iType == UsbShai::KUsbEpTypeInterrupt) && (ep->iEpSize_Hs > 64)) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: INT ep HS size = %d on default ifc setting", - ep->iEpSize_Hs)); - __KTRACE_OPT(KPANIC, Kern::Printf(" (should be <= 64)")); - } - // For details see last paragraph of 5.6.3 "Isochronous Transfer Packet Size Constraints". - else if ((ep->iInfo.iType == UsbShai::KUsbEpTypeIsochronous) && (ep->iInfo.iSize > 0)) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: ISO ep size = %d on default ifc setting", - ep->iInfo.iSize)); - __KTRACE_OPT(KPANIC, Kern::Printf(" (should be zero or ep non-existent)")); - } - } - // If the endpoint doesn't support DMA (now or never) the next operation - // will be a successful no-op. - /* - const TInt r = OpenDmaChannel(j); - if (r != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Opening of DMA channel failed")); - aIfc->iEndpoints.ResetAndDestroy(); - RESET_SETTINGRESERVE; - return r; - } - */ - __KTRACE_OPT(KUSB, Kern::Printf(" creating ep: mapping real ep %d -> logical ep %d", - j, i + 1)); - iRealEndpoints[j].iIfcNumber = &aIfc->iInterfaceSet->iInterfaceNumber; - iRealEndpoints[j].iSettingReserve = ETrue; - __KTRACE_OPT(KUSB, - Kern::Printf(" ep->iInfo: iType=0x%x iDir=0x%x iSize=%d iInterval=%d", - ep->iInfo.iType, ep->iInfo.iDir, ep->iInfo.iSize, - ep->iInfo.iInterval)); - __KTRACE_OPT(KUSB, - Kern::Printf(" ep->iInfo: iInterval_Hs=%d iTransactions=%d iExtra=%d", - ep->iInfo.iInterval_Hs, ep->iInfo.iTransactions, - ep->iInfo.iExtra)); - // Store real endpoint numbers: - // array[x] holds the number for logical ep x. - aRealEpNumbers[i + 1] = j; - break; - } - } - } - aRealEpNumbers[0] = 0; // ep0: 0. - __KTRACE_OPT(KUSB,{ - Kern::Printf(" Endpoint Mapping for Interface %d / Setting %d:", ifc_num, aIfc->iSettingCode); - Kern::Printf("Logical | Real"); - Kern::Printf("Endpoint | Endpoint"); - for (TInt ep = 0; ep <= aEndpointsUsed; ++ep) Kern::Printf(" %2d %3d",ep, aRealEpNumbers[ep]); - }); - RESET_SETTINGRESERVE; - return KErrNone; - } - - -TInt DUsbClientController::SetupIfcDescriptor(TUsbcInterface* aIfc, TUsbcClassInfo& aClass, DThread* aThread, - TDesC8* aString, const TUsbcEndpointInfoArray& aEndpointData) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetupIfcDescriptor()")); - - // Interface descriptor - TUsbcDescriptorBase* d = TUsbcInterfaceDescriptor::New(aIfc->iInterfaceSet->iInterfaceNumber, - aIfc->iSettingCode, - aIfc->iEndpoints.Count(), - aClass); - if (!d) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Memory allocation for ifc desc failed.")); - return KErrNoMemory; - } - iDescriptors.InsertDescriptor(d); - - // Interface string descriptor - if (aString) - { - // we don't know the length of the string, so we have to allocate memory dynamically - TUint strlen = Kern::ThreadGetDesLength(aThread, aString); - if (strlen > KUsbStringDescStringMaxSize) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Warning: $ descriptor too long - string will be truncated")); - strlen = KUsbStringDescStringMaxSize; - } - HBuf8* const stringbuf = HBuf8::New(strlen); - if (!stringbuf) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Memory allocation for ifc $ desc string failed.")); - iDescriptors.DeleteIfcDescriptor(aIfc->iInterfaceSet->iInterfaceNumber, - aIfc->iSettingCode); - return KErrNoMemory; - } - stringbuf->SetMax(); - // the aString points to data that lives in user memory, so we have to copy it: - TInt r = Kern::ThreadDesRead(aThread, aString, *stringbuf, 0); - if (r != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Thread read error")); - iDescriptors.DeleteIfcDescriptor(aIfc->iInterfaceSet->iInterfaceNumber, - aIfc->iSettingCode); - delete stringbuf; - return r; - } - TUsbcStringDescriptor* const sd = TUsbcStringDescriptor::New(*stringbuf); - if (!sd) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Memory allocation for ifc $ desc failed.")); - iDescriptors.DeleteIfcDescriptor(aIfc->iInterfaceSet->iInterfaceNumber, - aIfc->iSettingCode); - delete stringbuf; - return KErrNoMemory; - } - iDescriptors.SetIfcStringDescriptor(sd, aIfc->iInterfaceSet->iInterfaceNumber, aIfc->iSettingCode); - delete stringbuf; // the (EPOC) descriptor was copied by New() - } - - // Endpoint descriptors - for (TInt i = 0; i < aIfc->iEndpoints.Count(); ++i) - { - // The reason for using another function argument for Endpoint Info - // (and not possibly - similar to the Endpoint Address - - // "aIfc->iEndpoints[i]->iPEndpoint->iLEndpoint->iInfo") is that this time - // there are no logical endpoints associated with our real endpoints, - // i.e. iLEndpoint is NULL!. - if (aEndpointData[i].iExtra) - { - // if a non-standard endpoint descriptor is requested... - if (aEndpointData[i].iExtra != 2) - { - // ...then it must be a Audio Class endpoint descriptor. Else... - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: EP desc extension > 2 bytes (%d)", - aEndpointData[i].iExtra)); - iDescriptors.DeleteIfcDescriptor(aIfc->iInterfaceSet->iInterfaceNumber, - aIfc->iSettingCode); - return KErrArgument; - } - d = TUsbcAudioEndpointDescriptor::New(aIfc->iEndpoints[i]->iPEndpoint->iEndpointAddr, - aEndpointData[i]); - } - else - { - d = TUsbcEndpointDescriptor::New(aIfc->iEndpoints[i]->iPEndpoint->iEndpointAddr, - aEndpointData[i]); - } - if (!d) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Memory allocation for ep desc #%d failed.", i)); - iDescriptors.DeleteIfcDescriptor(aIfc->iInterfaceSet->iInterfaceNumber, - aIfc->iSettingCode); - return KErrNoMemory; - } - iDescriptors.InsertDescriptor(d); - } - - return KErrNone; - } - - -TInt DUsbClientController::ClientId2InterfaceNumber(const DBase* aClientId) const - { - const TInt num_ifcsets = iConfigs[0]->iInterfaceSets.Count(); - for (TInt i = 0; i < num_ifcsets; ++i) - { - if (iConfigs[0]->iInterfaceSets[i]->iClientId == aClientId) - { - return iConfigs[0]->iInterfaceSets[i]->iInterfaceNumber; - } - } - return -1; - } - - -TUsbcInterfaceSet* DUsbClientController::ClientId2InterfacePointer(const DBase* aClientId) const - { - const TInt num_ifcsets = iConfigs[0]->iInterfaceSets.Count(); - for (TInt i = 0; i < num_ifcsets; ++i) - { - if (iConfigs[0]->iInterfaceSets[i]->iClientId == aClientId) - { - return iConfigs[0]->iInterfaceSets[i]; - } - } - return NULL; - } - - -const DBase* DUsbClientController::InterfaceNumber2ClientId(TInt aIfcSet) const - { - if (!InterfaceExists(aIfcSet)) - { - return NULL; - } - return InterfaceNumber2InterfacePointer(aIfcSet)->iClientId; - } - - -TUsbcInterfaceSet* DUsbClientController::InterfaceNumber2InterfacePointer(TInt aIfcSet) const - { - const TInt num_ifcsets = iConfigs[0]->iInterfaceSets.Count(); - for (TInt i = 0; i < num_ifcsets; ++i) - { - if ((iConfigs[0]->iInterfaceSets[i]->iInterfaceNumber) == aIfcSet) - { - return iConfigs[0]->iInterfaceSets[i]; - } - } - return NULL; - } - - -TInt DUsbClientController::ActivateHardwareController() - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::ActivateHardwareController()")); - - // iStackIsActive must be ETrue at this time - // the caller of this function shall checked that iStackIsActive is ETrue - __ASSERT_DEBUG(iStackIsActive, Kern::Fault(KUsbPILPanicCat, __LINE__)); - - if (iHardwareActivated) - { - __KTRACE_OPT(KUSB, Kern::Printf(" already active -> returning")); - return KErrNone; - } - // Initialise HW - TInt r = iController.StartPeripheralController(); - if (r != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: StartPeripheralController() failed")); - return KErrHardwareNotAvailable; - } - - iHardwareActivated = ETrue; - - // Configure & enable endpoint zero - const TUsbcLogicalEndpoint* const ep0_0 = iRealEndpoints[0].iLEndpoint; - const TUsbcLogicalEndpoint* const ep0_1 = iRealEndpoints[1].iLEndpoint; - if (iHighSpeed) - { - const_cast(ep0_0)->iInfo.iSize = ep0_0->iEpSize_Hs; - const_cast(ep0_1)->iInfo.iSize = ep0_1->iEpSize_Hs; - } - else - { - const_cast(ep0_0)->iInfo.iSize = ep0_0->iEpSize_Fs; - const_cast(ep0_1)->iInfo.iSize = ep0_1->iEpSize_Fs; - } - iController.ConfigureEndpoint(0, ep0_0->iInfo); - iController.ConfigureEndpoint(1, ep0_1->iInfo); - iEp0MaxPacketSize = ep0_0->iInfo.iSize; - - __KTRACE_OPT(KUSB, Kern::Printf(" Controller activated.")); - - // Controller is powered up, changes device state to powered - NextDeviceState(UsbShai::EUsbPeripheralStatePowered); - - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::ActivateHardwareController()")); - return KErrNone;; - } - - -void DUsbClientController::DeActivateHardwareController() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::DeActivateHardwareController()")); - if (!iHardwareActivated) - { - __KTRACE_OPT(KUSB, Kern::Printf(" not active -> returning")); - return; - } - // Deconfigure & disable endpoint zero - iController.DeConfigureEndpoint(KEp0_Out); - iController.DeConfigureEndpoint(KEp0_In); - // Stop HW - iController.StopPeripheralController(); - iHardwareActivated = EFalse; - __KTRACE_OPT(KUSB, Kern::Printf(" Controller deactivated.")); - - // Always go to attached state, until statck is disabled - NextDeviceState(UsbShai::EUsbPeripheralStateAttached); - - return; - } - - -void DUsbClientController::DeleteInterfaceSet(TInt aIfcSet) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::DeleteInterfaceSet(%d)", aIfcSet)); - TUsbcInterfaceSet* const ifcset_ptr = InterfaceNumber2InterfacePointer(aIfcSet); - if (!ifcset_ptr) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: invalid interface number: %d", aIfcSet)); - return; - } - const TInt idx = iConfigs[0]->iInterfaceSets.Find(ifcset_ptr); - if (idx == KErrNotFound) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: interface not found in array")); - return; - } - //Add this mutex to protect the interface set data structure - if (NKern::CurrentContext() == EThread) - { - NKern::FMWait(&iMutex); - } - - iConfigs[0]->iInterfaceSets.Remove(idx); - if (NKern::CurrentContext() == EThread) - { - NKern::FMSignal(&iMutex); - } - delete ifcset_ptr; - } - - -void DUsbClientController::DeleteInterface(TInt aIfcSet, TInt aIfc) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::DeleteInterface(%d, %d)", aIfcSet, aIfc)); - TUsbcInterfaceSet* const ifcset_ptr = InterfaceNumber2InterfacePointer(aIfcSet); - if (!ifcset_ptr) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: invalid interface number: %d", aIfcSet)); - return; - } - if (ifcset_ptr->iInterfaces.Count() <= aIfc) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: invalid interface setting: %d", aIfc)); - return; - } - //Add this mutex to protect the interface set data structure - if (NKern::CurrentContext() == EThread) - { - NKern::FMWait(&iMutex); - } - TUsbcInterface* const ifc_ptr = ifcset_ptr->iInterfaces[aIfc]; - // Always first remove, then delete (see ~TUsbcLogicalEndpoint() for the reason why) - ifcset_ptr->iInterfaces.Remove(aIfc); - - if (aIfc == ifcset_ptr->iCurrentInterface) - { - __KTRACE_OPT(KUSB, Kern::Printf(" > Warning: deleting current interface setting")); - ifcset_ptr->iCurrentInterface = 0; - } - if (NKern::CurrentContext() == EThread) - { - NKern::FMSignal(&iMutex); - } - delete ifc_ptr; - } - - -void DUsbClientController::CancelTransferRequests(TInt aRealEndpoint) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::CancelTransferRequests(aRealEndpoint=%d)", - aRealEndpoint)); - const DBase* const clientId = PEndpoint2ClientId(aRealEndpoint); - if (EpIdx2Addr(aRealEndpoint) & KUsbEpAddress_In) - { - CancelWriteBuffer(clientId, aRealEndpoint); - } - else - { - CancelReadBuffer(clientId, aRealEndpoint); - } - } - - -void DUsbClientController::DeleteRequestCallback(const DBase* aClientId, TInt aEndpointNum, - UsbShai::TTransferDirection aTransferDir) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::DeleteRequestCallback()")); - // Ep0 OUT - if (aEndpointNum == 0) - { - const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); - TSglQueIter iter(iEp0ReadRequestCallbacks); - TUsbcRequestCallback* p; - while ((p = iter++) != NULL) - { - if (p->Owner() == aClientId) - { - __ASSERT_DEBUG((p->iRealEpNum == 0), Kern::Fault(KUsbPILPanicCat, __LINE__)); - __ASSERT_DEBUG((p->iTransferDir == UsbShai::EControllerRead), Kern::Fault(KUsbPILPanicCat, __LINE__)); - __KTRACE_OPT(KUSB, Kern::Printf(" removing RequestCallback @ 0x%x (ep0)", p)); - iEp0ReadRequestCallbacks.Remove(*p); - } - } - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return; - } - // Other endpoints - TUsbcRequestCallback* const p = iRequestCallbacks[aEndpointNum]; - if (p) - { - __ASSERT_DEBUG((p->Owner() == aClientId), Kern::Fault(KUsbPILPanicCat, __LINE__)); - __ASSERT_DEBUG((p->iTransferDir == aTransferDir), Kern::Fault(KUsbPILPanicCat, __LINE__)); - __KTRACE_OPT(KUSB, Kern::Printf(" removing RequestCallback @ 0x%x", p)); - iRequestCallbacks[aEndpointNum] = NULL; - } - } - - -void DUsbClientController::DeleteRequestCallbacks(const DBase* aClientId) - { - // aClientId being NULL means: delete all requests for *all* clients. - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::DeleteRequestCallbacks()")); - // Ep0 OUT - const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); - TSglQueIter iter(iEp0ReadRequestCallbacks); - TUsbcRequestCallback* p; - while ((p = iter++) != NULL) - { - if (!aClientId || p->Owner() == aClientId) - { - __KTRACE_OPT(KUSB, Kern::Printf(" removing RequestCallback @ 0x%x (ep0)", p)); - iEp0ReadRequestCallbacks.Remove(*p); - } - } - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - // Other endpoints - for (TInt i = 1; i < KUsbcEpArraySize; i++) - { - TUsbcRequestCallback* const p = iRequestCallbacks[i]; - if (p && (!aClientId || p->Owner() == aClientId)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" removing RequestCallback @ 0x%x", p)); - iRequestCallbacks[i] = NULL; - } - } - } - - -void DUsbClientController::StatusNotify(UsbShai::TUsbPeripheralState aState, const DBase* aClientId) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::StatusNotify()")); - - // This function may be called by the PSL (via chapter9.cpp) from within an - // ISR -- so we have to take care what we do here (and also in all - // functions that get called from here). - - TSglQueIter iter(iStatusCallbacks); - TUsbcStatusCallback* p; - while ((p = iter++) != NULL) - { - if (!aClientId || aClientId == p->Owner()) - { - __KTRACE_OPT(KUSB, Kern::Printf(" notifying LDD @ 0x%x about %d", p->Owner(), aState)); - p->SetState(aState); - p->DoCallback(); - } - } - } - - -void DUsbClientController::EpStatusNotify(TInt aRealEndpoint) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::EpStatusNotify()")); - - // This function may be called by the PSL (via chapter9.cpp) from within an - // ISR -- so we have to take care what we do here (and also in all - // functions that get called from here). - - const DBase* const client_id = PEndpoint2ClientId(aRealEndpoint); - if (!client_id) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Client not found for real ep %d", aRealEndpoint)); - return; - } - // Check if there is a notification request queued for that client (if not, we can return here). - TSglQueIter iter(iEpStatusCallbacks); - TUsbcEndpointStatusCallback* p; - while ((p = iter++) != NULL) - { - if (p->Owner() == client_id) - { - break; - } - } - if (!p) - { - __KTRACE_OPT(KUSB, Kern::Printf(" No notification request for that client, returning")); - return; - } - const TInt ifcset = ClientId2InterfaceNumber(client_id); - if (ifcset < 0) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Ifcset not found for clientid %d", client_id)); - return; - } - const TUsbcInterfaceSet* const ifcset_ptr = InterfaceNumber2InterfacePointer(ifcset); - if (!ifcset_ptr) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Ifcset pointer not found for ifcset %d", ifcset)); - return; - } - const TUsbcInterface* const ifc_ptr = ifcset_ptr->CurrentInterface(); - if (!ifc_ptr) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Current ifc pointer not found for ifcset %d", ifcset)); - return; - } - TUint state = 0; - const TInt eps = ifc_ptr->iEndpoints.Count(); - for (TInt i = 0; i < eps; i++) - { - const TUsbcLogicalEndpoint* const ep_ptr = ifc_ptr->iEndpoints[i]; - __KTRACE_OPT(KUSB, Kern::Printf(" checking logical ep #%d for stall state...", - ep_ptr->iLEndpointNum)); - if (ep_ptr->iPEndpoint->iHalt) - { - __KTRACE_OPT(KUSB, Kern::Printf(" -- stalled")); - // set the bit n to 1, where n is the logical endpoint number minus one - state |= (1 << (ep_ptr->iLEndpointNum - 1)); - } - else - { - __KTRACE_OPT(KUSB, Kern::Printf(" -- not stalled")); - } - } - __KTRACE_OPT(KUSB, Kern::Printf(" passing ep state 0x%x on to LDD @ 0x%x", state, client_id)); - p->SetState(state); - p->DoCallback(); - } - - -void DUsbClientController::OtgFeaturesNotify() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::OtgFeaturesNotify()")); - - // This function may be called from the PSL (via PIL's chapter9.cpp) from - // within an ISR -- so we have to take care what we do here (and also in - // all functions that get called from here). - - TSglQueIter iter(iOtgCallbacks); - TUsbcOtgFeatureCallback* p; - while ((p = iter++) != NULL) - { - p->SetFeatures(iOtgFuncMap & 0x1C); - p->DoCallback(); - } - } - - -void DUsbClientController::RunClientCallbacks() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::RunClientCallbacks()")); - TSglQueIter iter(iClientCallbacks); - TUsbcClientCallback* p; - while ((p = iter++) != NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf("Callback 0x%x", p)); - p->DoCallback(); - } - } - - -void DUsbClientController::ProcessDataTransferDone(TUsbcRequestCallback& aRcb) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessDataTransferDone()")); - // This piece can only be called in thread context from ProcessEp0DataReceived() / - // ProcessEp0SetupReceived() via the call to ProcessEp0ReceiveDone() in - // SetupReadBuffer(), which is guarded by an interrupt lock. - TInt ep = aRcb.iRealEpNum; - if (ep == 0) - { - if (aRcb.iTransferDir == UsbShai::EControllerRead) - { - // Ep0 OUT is special - iEp0ReadRequestCallbacks.Remove(aRcb); - } - else // UsbShai::EControllerWrite - { - // Ep0 IN needs to be adjusted: it's '1' within the PIL. - ep = KEp0_Tx; - } - } - if (ep > 0) // not 'else'! - { - __ASSERT_DEBUG((iRequestCallbacks[ep] == &aRcb), Kern::Fault(KUsbPILPanicCat, __LINE__)); - __KTRACE_OPT(KUSB, Kern::Printf(" > removing RequestCallback[%d] @ 0x%x", ep, &aRcb)); - iRequestCallbacks[ep] = NULL; - } - aRcb.DoCallback(); - } - - -void DUsbClientController::NextDeviceState(UsbShai::TUsbPeripheralState aNextState) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::NextDeviceState()")); -#ifdef _DEBUG - const char* const states[] = {"Undefined", "Attached", "Powered", "Default", - "Address", "Configured", "Suspended"}; - if ((aNextState >= UsbShai::EUsbPeripheralStateUndefined) && - (aNextState <= UsbShai::EUsbPeripheralStateSuspended)) - { - __KTRACE_OPT(KUSB, Kern::Printf(" next device state: %s", states[aNextState])); - } - else - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Unknown next device state: %d", aNextState)); - } - // Print a warning when an invalid state transition is detected - // 'Undefined' is not a state that is mentioned in the USB spec, but - // that's what we're in once the cable gets pulled (for instance). - switch (iDeviceState) - { - case UsbShai::EUsbPeripheralStateUndefined: - // valid: Undefined -> Attached - if (aNextState != UsbShai::EUsbPeripheralStateAttached) - break; - goto OK; - case UsbShai::EUsbPeripheralStateAttached: - // valid: Attached -> {Undefined, Powered} - if ((aNextState != UsbShai::EUsbPeripheralStateUndefined) && - (aNextState != UsbShai::EUsbPeripheralStatePowered)) - break; - goto OK; - case UsbShai::EUsbPeripheralStatePowered: - // valid: Powered -> {Undefined, Attached, Default, Suspended} - if ((aNextState != UsbShai::EUsbPeripheralStateUndefined) && - (aNextState != UsbShai::EUsbPeripheralStateAttached) && - (aNextState != UsbShai::EUsbPeripheralStateDefault) && - (aNextState != UsbShai::EUsbPeripheralStateSuspended)) - break; - goto OK; - case UsbShai::EUsbPeripheralStateDefault: - // valid: Default -> {Undefined, Powered, Default, Address, Suspended} - if ((aNextState != UsbShai::EUsbPeripheralStateUndefined) && - (aNextState != UsbShai::EUsbPeripheralStatePowered) && - (aNextState != UsbShai::EUsbPeripheralStateDefault) && - (aNextState != UsbShai::EUsbPeripheralStateAddress) && - (aNextState != UsbShai::EUsbPeripheralStateSuspended)) - break; - goto OK; - case UsbShai::EUsbPeripheralStateAddress: - // valid: Address -> {Undefined, Powered, Default, Configured, Suspended} - if ((aNextState != UsbShai::EUsbPeripheralStateUndefined) && - (aNextState != UsbShai::EUsbPeripheralStatePowered) && - (aNextState != UsbShai::EUsbPeripheralStateDefault) && - (aNextState != UsbShai::EUsbPeripheralStateConfigured) && - (aNextState != UsbShai::EUsbPeripheralStateSuspended)) - break; - goto OK; - case UsbShai::EUsbPeripheralStateConfigured: - // valid: Configured -> {Undefined, Powered, Default, Address, Suspended} - if ((aNextState != UsbShai::EUsbPeripheralStateUndefined) && - (aNextState != UsbShai::EUsbPeripheralStatePowered) && - (aNextState != UsbShai::EUsbPeripheralStateDefault) && - (aNextState != UsbShai::EUsbPeripheralStateAddress) && - (aNextState != UsbShai::EUsbPeripheralStateSuspended)) - break; - goto OK; - case UsbShai::EUsbPeripheralStateSuspended: - // valid: Suspended -> {Undefined, Powered, Default, Address, Configured} - if ((aNextState != UsbShai::EUsbPeripheralStateUndefined) && - (aNextState != UsbShai::EUsbPeripheralStatePowered) && - (aNextState != UsbShai::EUsbPeripheralStateDefault) && - (aNextState != UsbShai::EUsbPeripheralStateAddress) && - (aNextState != UsbShai::EUsbPeripheralStateConfigured)) - break; - goto OK; - default: - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: Unknown current device state: %d", iDeviceState)); - goto OK; - } - // KUSB only (instead of KPANIC) so as not to worry people too much where - // a particular h/w regularly enforces invalid (but harmless) transitions - __KTRACE_OPT(KUSB, Kern::Printf(" Warning: Invalid next state from %s", states[iDeviceState])); -OK: -#endif // _DEBUG - - iDeviceState = aNextState; - StatusNotify(iDeviceState); - } - - -TInt DUsbClientController::ProcessSuspendEvent() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessSuspendEvent()")); - // A suspend interrupt has been received and needs attention. - iDeviceStateB4Suspend = iDeviceState; - - // We have to move to the Suspend state immediately (in case it's a genuine Suspend) - // because 7.1.7.6 says: "The device must actually be suspended, [...] after no more - // than 10ms of bus inactivity [...]." Assuming we got the interrupt 3ms after the - // Suspend condition arose, we have now 7ms left. - NextDeviceState(UsbShai::EUsbPeripheralStateSuspended); - iController.Suspend(); - - return KErrNone; - } - -TInt DUsbClientController::ProcessResumeEvent() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessResumeEvent()")); - if (iDeviceState == UsbShai::EUsbPeripheralStateSuspended) - { - NextDeviceState(iDeviceStateB4Suspend); - } - iController.Resume(); - return KErrNone; - } - - -TInt DUsbClientController::ProcessResetEvent(TBool aPslUpcall) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessResetEvent()")); - - if (aPslUpcall) - { - // Call back into PSL if we're coming from there. - // Also, do it always, even when PIL processing will be deferred. - iController.Reset(); - } - - // In an OTG-environment, some OTG controllers have implemented - // the OTG state machine in HW and connect to the bus - // automatically already before the SW has indicated - // readiness. Peripheral PSL operating on top of such controller - // may report a reset event already before the upper layers are - // ready. In this case we defer the reset processing to after the - // upper layers have indicated their readiness. - if (iUsbResetDeferred) - { - __KTRACE_OPT(KUSB, Kern::Printf(" User-side (still) not ready -> returning")); - return KErrNone; - } - else if (!iClientSupportReady) - { - // Wait with the PIL Reset processing until user-side is ready - __KTRACE_OPT(KUSB, Kern::Printf(" User-side not ready -> deferring")); - iUsbResetDeferred = ETrue; - return KErrNone; - } - - if (iDeviceState == UsbShai::EUsbPeripheralStateAttached) - { - NextDeviceState(UsbShai::EUsbPeripheralStatePowered); - } - // Notify the world. (This will just queue a DFC, so users won't actually be - // notified before we return. But we change the device state already here so - // ChangeConfiguration will see the correct one.) - NextDeviceState(UsbShai::EUsbPeripheralStateDefault); - // Tear down the current configuration (never called from thread) - ChangeConfiguration(0); - // Reset essential vars - ResetEp0DataOutVars(); - //iEp0_RxExtraData = EFalse; - iEp0WritePending = EFalse; - iEp0ClientDataTransmitting = EFalse; - - iLastError = KErrNone; - iSetupPacketPending = EFalse; - //iEp0_RxExtraError = 0; - iConTransferMgr->Reset(); - - // Reset OTG features, leave attributes as is - iOtgFuncMap &= KUsbOtgAttr_SrpSupp | KUsbOtgAttr_HnpSupp; - if (iOtgSupport) - { - OtgFeaturesNotify(); - } - - // Check whether there's a speed change - const TBool was_hs = iHighSpeed; - iHighSpeed = CurrentlyUsingHighSpeed(); - if (!was_hs && iHighSpeed) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Moving to High-speed")); - EnterHighSpeed(); - } - else if (was_hs && !iHighSpeed) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Moving to Full-speed")); - EnterFullSpeed(); - } - - // Setup initial Ep0 read (SetupEndpointZeroRead never called from thread) - if (iConTransferMgr->SetupEndpointZeroRead() != KErrNone) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: while setting up Ep0 read")); - return KErrGeneral; - } - - return KErrNone; - } - - -TInt DUsbClientController::ProcessVbusRisenEvent() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessVbusRisenEvent()")); - if (iIsOtgPort) - { - // In an OTG environment, this notification is not expected - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: EUsbEventVbusRisen shouldn't be sent by an OTG Client PSL")); - return KErrArgument; - } - else - { - // In a non-OTG environment, seeing VBUS rising causes the - // peripheral stack to be enabled - EnablePeripheralStack(); - return KErrNone; - } - } - - -TInt DUsbClientController::ProcessVbusFallenEvent() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ProcessVbusFallenEvent()")); - if (iIsOtgPort) - { - // In an OTG environment, this notification is not expected - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: EUsbEventVbusFallen shouldn't be sent by an OTG Client PSL")); - return KErrArgument; - } - else - { - // In a non-OTG environment, seeing VBUS falling causes the - // peripheral stack to be disabled - DisablePeripheralStack(); - return KErrNone; - } - } - - -void DUsbClientController::EnterFullSpeed() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::EnterFullSpeed()")); - iDescriptors.UpdateDescriptorsFs(); - } - - -void DUsbClientController::EnterHighSpeed() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::EnterHighSpeed()")); - iDescriptors.UpdateDescriptorsHs(); - } - - -// -// DFC (static), we are runing in a DFC context. -// -void DUsbClientController::ReconnectTimerCallback(TAny *aPtr) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ReconnectTimerCallback()")); - if (!aPtr) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: !aPtr")); - return; - } - - DUsbClientController* const ptr = static_cast(aPtr); - - ptr->UsbConnect(); - - } - -// -// static Dfc function -// -void DUsbClientController::PowerUpDfc(TAny* aPtr) - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::PowerUpDfc")); - if (!aPtr) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: !aPtr")); - return; - } - - DUsbClientController* const ptr = static_cast(aPtr); - - __PM_ASSERT(ptr->iStandby); - - ptr->iStandby = EFalse; - - // We have nothing to do when powerup - ptr->iPowerHandler->PowerUpDone(); - - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::PowerUpDfc")); - return ; - } - -// -// static Dfc function -// -void DUsbClientController::PowerDownDfc(TAny* aPtr) - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::PowerDownDfc")); - if (!aPtr) - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: !aPtr")); - return; - } - - DUsbClientController* const ptr = static_cast(aPtr); - __PM_ASSERT(!ptr->iStandby); - - ptr->iStandby = ETrue; - - // Disable stack(stop controller inside) - ptr->DisablePeripheralStack(); - - ptr->iPowerHandler->PowerDownDone(); - - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::PowerDownDfc")); - return ; - } - -// -// Static Dfc function -// -void DUsbClientController::DeviceEventNotifyDfc(TAny* aPtr) - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::DeviceEventNotifyDfc")); - DUsbClientController* const ptr = static_cast(aPtr); - - UsbShai::TUsbPeripheralEvent event = ptr->iDevEventQueue.FifoGet(); - - if( event == -1) - { - // No event queued - __KTRACE_OPT(KUSB, Kern::Printf(" Warning, No event found, exit !!!")); - return; - } - - ptr->ProcessDeviceEventNotification(event); - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::DeviceEventNotifyDfc")); - } - -// -// Static Dfc function -// -void DUsbClientController::ThreadContextFinderDfc(TAny* aPtr) - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::ThreadContextFinderDfc")); - - DUsbClientController* const ptr = static_cast(aPtr); - - ptr->iCommonDfcQThread = NKern::CurrentThread(); - __KTRACE_OPT(KUSB, Kern::Printf(" iCommonDfcQThread = %d",ptr->iCommonDfcQThread)); - - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::ThreadContextFinderDfc")); - } -// -// -// -void DUsbClientController::ProcessDeviceEventNotification(UsbShai::TUsbPeripheralEvent aEvent) - { - __KTRACE_OPT(KUSB, Kern::Printf("> DUsbClientController::ProcessDeviceEventNotification %d",aEvent)); - // If an OTG Observer has registered, forward the event - // notification to it as well - if (iOtgObserver != NULL) - { - __KTRACE_OPT(KUSB, Kern::Printf(" Forwarding to OTG Observer")); - iOtgObserver->NotifyPeripheralEvent(aEvent); - } - - // This function may be called by the PSL from within an ISR -- so we have - // to take care what we do here (and also in all functions that get called - // from here). - - switch (aEvent) - { - case UsbShai::EUsbEventSuspend: - ProcessSuspendEvent(); - break; - case UsbShai::EUsbEventResume: - ProcessResumeEvent(); - break; - case UsbShai::EUsbEventReset: - ProcessResetEvent(); - break; - case UsbShai::EUsbEventVbusRisen: - ProcessVbusRisenEvent(); - break; - case UsbShai::EUsbEventVbusFallen: - ProcessVbusFallenEvent(); - break; - - default: - break; - } - - __KTRACE_OPT(KUSB, Kern::Printf("< DUsbClientController::ProcessDeviceEventNotification")); - } - -// Functions from UsbShai::MChargerDetectorObserverIf -void DUsbClientController::NotifyPortType(UsbShai::TPortType aPortType) - { - // FIXME: Not yet implemented! - } - -void DUsbClientController::Buffer2Setup(const TAny* aBuf, TUsbcSetup& aSetup) const - { - // TUint8 index - aSetup.iRequestType = static_cast(aBuf)[0]; - aSetup.iRequest = static_cast(aBuf)[1]; - // TUint16 index from here! - aSetup.iValue = SWAP_BYTES_16((static_cast(aBuf))[1]); - aSetup.iIndex = SWAP_BYTES_16((static_cast(aBuf))[2]); - aSetup.iLength = SWAP_BYTES_16((static_cast(aBuf))[3]); - } - -TUsbPeriDeviceEventQueue::TUsbPeriDeviceEventQueue() - { - iDeviceQueueHead = 0; - iDeviceQueueTail = 0; - } - -// FifoAdd will be called from Isr or IDfc context -// be careful when processing -void TUsbPeriDeviceEventQueue::FifoAdd(UsbShai::TUsbPeripheralEvent aDeviceEvent) - { - __KTRACE_OPT(KUSB, Kern::Printf("> TUsbPeriDeviceEventQueue::FifoAdd %d , %d",iDeviceQueueHead,iDeviceQueueTail)); - iDeviceEventQueue[iDeviceQueueTail] = aDeviceEvent; - - iDeviceQueueTail ++; - iDeviceQueueTail %= KUsbDeviceEventQueueDepth; - if(iDeviceQueueTail == iDeviceQueueHead) - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbPeriDeviceEventQueue::FifoAdd overflow, oldest event missed")); - iDeviceQueueHead ++; - iDeviceQueueHead %= KUsbDeviceEventQueueDepth; - } - __KTRACE_OPT(KUSB, Kern::Printf("< TUsbPeriDeviceEventQueue::FifoAdd %d , %d",iDeviceQueueHead,iDeviceQueueTail)); - } - -// FifoAdd will be called from thread context -UsbShai::TUsbPeripheralEvent TUsbPeriDeviceEventQueue::FifoGet() - { - __KTRACE_OPT(KUSB, Kern::Printf("> TUsbPeriDeviceEventQueue::FifoGet %d , %d",iDeviceQueueHead,iDeviceQueueTail)); - UsbShai::TUsbPeripheralEvent ret = (UsbShai::TUsbPeripheralEvent)-1; - - if(iDeviceQueueHead != iDeviceQueueTail) - { - ret = iDeviceEventQueue[iDeviceQueueHead]; - iDeviceQueueHead++; - iDeviceQueueHead %= KUsbDeviceEventQueueDepth; - } - __KTRACE_OPT(KUSB, Kern::Printf("< TUsbPeriDeviceEventQueue::FifoGet %d , %d",iDeviceQueueHead,iDeviceQueueTail)); - return ret; - } - -/** Sets some data members of this request for a read request. - - @param aBufferStart The start of the data buffer to be filled. - @param aBufferAddr The physical address of the buffer (used for DMA). - @param aPacketIndex A pointer to the packet index values array. - @param aPacketSize A pointer to the packet size values array. - @param aLength The number of bytes to be received. -*/ -EXPORT_C void TUsbcRequestCallback::SetRxBufferInfo(TUint8* aBufferStart, TUintPtr aBufferAddr, - TUint32* aPacketIndex, - TUint32* aPacketSize, - TInt aLength) - { - iTransferDir = UsbShai::EControllerRead; - iBufferStart = aBufferStart; - iBufferAddr = aBufferAddr; - iPacketIndex = aPacketIndex; - iPacketSize = aPacketSize; - iLength = aLength; - } - - -/** Sets some data members of this request for a write request. - - @param aBufferStart The start of the buffer that contains the data to be sent. - @param aBufferAddr The physical address of the buffer (used for DMA). - @param aLength The number of bytes to be transmitted. -*/ -EXPORT_C void TUsbcRequestCallback::SetTxBufferInfo(TUint8* aBufferStart, TUintPtr aBufferAddr, TInt aLength) - { - iTransferDir = UsbShai::EControllerWrite; - iBufferStart = aBufferStart; - iBufferAddr = aBufferAddr; - iLength = aLength; - } - -EXPORT_C UsbShai::TUsbPeripheralRequest::TUsbPeripheralRequest(TInt aRealEpNum): - iRealEpNum(aRealEpNum), - iBufferStart(NULL), - iBufferAddr(0), - iLength(0), - iTxBytes(0), - iRxPackets(0), - iPacketIndex(NULL), // actually TUint16 (*)[] - iPacketSize(NULL), // actually TUint16 (*)[] - iTransferDir(EControllerNone), - iZlpReqd(EFalse), - iError(KErrNone) - { - } - -// Peripheral PSL use this interface to register itself to PIL layer, in our case, -// DUsbClientController instance -// -// param aPeripheralControllerIf point to an implementation of -// UsbShai::MPeripheralControllerIf which represent a peripheral controller hardware. -EXPORT_C void UsbShai::UsbPeripheralPil::RegisterPeripheralController( UsbShai::MPeripheralControllerIf& aPeripheralControllerIf, - const UsbShai::TPeripheralControllerProperties& aProperties) - { - __KTRACE_OPT(KUSB, Kern::Printf("> UsbPeripheralPil::RegisterPeripheralController enter.")); - - DUsbClientController* usbcc = DUsbClientController::Create(aPeripheralControllerIf, - aProperties, - /*aIsOtgPort=*/EFalse); - __ASSERT_DEBUG( (usbcc != NULL), - Kern::Fault( "DUsbClientController extension entry point: USB PSL Out of memory", __LINE__ ) ); - } - -// The way for charger detector(PSL) to make it known to us. -EXPORT_C void UsbShai::UsbChargerDetectionPil::RegisterChargerDetector(UsbShai::MChargerDetectorIf& aChargerDetector, - UsbShai::TChargerDetectorProperties& aProperties) - { - // Only on charger detector is allowed per system. - if( gChargerDetector != NULL) - { - return ; - } - - gChargerDetector = &aChargerDetector; - - if(gChargerObsever != NULL) - { - // Register to charger detector to listen to any charger type change - // events. - gChargerDetector->SetChargerDetectorObserver(*gChargerObsever); - } - } - -// -EOF- diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/pdd/pil/src/queue.cpp --- a/usbdrv/peripheral/pdd/pil/src/queue.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32\drivers\usbcc\queue.cpp -// Platform independent layer (PIL) of the USB Device controller driver: -// Simple singly linked list + its iterator. -// -// - -/** - @file queue.cpp - @internalTechnology -*/ -//#include -#include - - -void TSglQueLink::Enque(TSglQueLink* aLink) -// -// Enque this after aLink. -// - { - iNext = aLink->iNext; - aLink->iNext = this; - } - - -TSglQueBase::TSglQueBase(TInt aOffset) -// -// Constructor -// - : iHead(NULL), iLast((TSglQueLink*) &iHead), iOffset(aOffset), iElements(0) - { - // ESQueOffsetNotAligned - __ASSERT_ALWAYS((iOffset % 4 == 0), Kern::Fault(KUsbPILPanicCat, __LINE__)); - } - - -void TSglQueBase::DoAddLast(TAny* aPtr) -// -// Add the object at the end of the queue. -// - { - TSglQueLink* pL = PtrAdd((TSglQueLink*) aPtr, iOffset); - pL->Enque(iLast); - iLast = pL; - iElements++; - __ASSERT_DEBUG((iElements > 0), Kern::Fault(KUsbPILPanicCat, __LINE__)); - } - - -void TSglQueBase::DoRemove(TAny* aPtr) -// -// Remove the object from the queue. -// - { - TSglQueLink* pP = (TSglQueLink*) (&iHead); - TSglQueLink* pL = PtrAdd((TSglQueLink*) aPtr, iOffset); - TSglQueLink* pN = pP->iNext; - while (pN) - { - if (pN == pL) - { - pP->iNext = pN->iNext; - if (iLast == pL) - { - iLast = pP; - if (iLast == NULL) - iLast = (TSglQueLink*) (&iHead); - } - iElements--; - __ASSERT_DEBUG((iElements >= 0), Kern::Fault(KUsbPILPanicCat, __LINE__)); - return; - } - pP = pN; - pN = pP->iNext; - } - // This doesn't have to indicate an error (but might): - __KTRACE_OPT(KPANIC, Kern::Printf("TSglQueBase::DoRemove: ESQueLinkNotQueued")); - } - - -TSglQueIterBase::TSglQueIterBase(TSglQueBase& aQue) -// -// Constructor. -// - : iOffset(aQue.iOffset), iHead(aQue.iHead), iNext(aQue.iHead) - { - } - - -void TSglQueIterBase::SetToFirst() -// -// Start from the beginning of the que. -// - { - iNext = iHead->iNext; - } - - -TAny* TSglQueIterBase::DoPostInc() -// -// Return the current pointer and increment. -// - { - TAny* pN = iNext; - if (pN == NULL) - return NULL; - iNext = iNext->iNext; - return PtrSub(pN, iOffset); - } - - -//--- diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/d32usbc.h --- a/usbdrv/peripheral/public/d32usbc.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1163 +0,0 @@ -// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32/include/d32usbc.h -// User side class definitions for USB Device support. -// -// - -/** - @file d32usbc.h - @publishedPartner - @released -*/ - -#ifndef __D32USBC_H__ -#define __D32USBC_H__ - -#include -#include -#include - - - -/** @internalComponent -*/ -enum TTransferType - { - ETransferTypeReadData, - ETransferTypeReadPacket, - ETransferTypeWrite, - ETransferTypeNone, - ETransferTypeReadOneOrMore, - ETransferTypeReadUntilShort - }; - - -/** Available endpoints. At most only these are available per interface. -*/ -enum TEndpointNumber - { - EEndpoint0 = 0, - EEndpoint1 = 1, - EEndpoint2 = 2, - EEndpoint3 = 3, - EEndpoint4 = 4, - EEndpoint5 = 5 - }; - - - - -/** Bandwidth indicators for an Interface - - @see RDevUsbcClient::SetInterface() -*/ -enum TUsbcBandwidthPriority - { - /** Economical OUT buffering. */ - EUsbcBandwidthOUTDefault = 0x00, - /** More memory than Default for OUT buffering. */ - EUsbcBandwidthOUTPlus1 = 0x01, - /** More memory than Plus1 for OUT buffering. */ - EUsbcBandwidthOUTPlus2 = 0x02, - /** Maximum memory for OUT buffering. - Use this value for high volume USB High-speed - data transfers only, otherwise memory will be wasted. - */ - EUsbcBandwidthOUTMaximum = 0x03, - // - /** Economical IN buffering */ - EUsbcBandwidthINDefault = 0x00, - /** More memory than Default for IN buffering */ - EUsbcBandwidthINPlus1 = 0x10, - /** More memory than Plus1 for IN buffering */ - EUsbcBandwidthINPlus2 = 0x20, - /** Maximum memory for IN buffering. - Use this value for high volume USB High-speed - data transfers only, otherwise memory will be wasted. - */ - EUsbcBandwidthINMaximum = 0x30 - }; - - - - - - - -/** Bit positions of endpoints. - - @see RDevUsbcClient::EndpointStatusNotify() - @see RDevUsbcClient::EndpointTransferCancel() - - Bit position of endpoint0. -*/ -const TUint KUsbcEndpoint0Bit = 1< TUsbcInterfaceInfoBuf; - - -/** The user side handle to the USB client driver. -*/ -class RDevUsbcClient : public RBusLogicalChannel - { -public: - /** @internalComponent */ - enum TVer - { - EMajorVersionNumber = 0, - EMinorVersionNumber = 1, - EBuildVersionNumber = KE32BuildVersionNumber - }; - - enum TRequest - { - // Positive requests. - ERequestEp0 = 0x0, - ERequestEp1 = EEndpoint1, - ERequestEp2 = EEndpoint2, - ERequestEp3 = EEndpoint3, - ERequestEp4 = EEndpoint4, - ERequestEp5 = EEndpoint5, - ERequestUnused = 6, - ERequestAlternateDeviceStatusNotify = 7, - ERequestReEnumerate = 8, - ERequestEndpointStatusNotify = 9, - // The cancel TRequest's are interpreted as bitmaps. As they're not mixed - // with the previous ones, it doesn't matter if they have the same absolute - // value as those. - ERequestEp0Cancel = 1<(data), sizeof(data), sizeof(data)); - ret = usbPort.EndpointCaps(dataPtr); - @endcode - - @param aEpCapsBuf a descriptor encapsulating an array of TUsbcEndpointData. - - @return KErrNone if successful. - */ - inline TInt EndpointCaps(TDes8& aEpCapsBuf); - - /** Retrieves the capabilities of the USB device. - - @see TUsbDeviceCaps - - @param aDevCapsBuf a TUsbDeviceCaps object. - - @return KErrNone if successful. - */ - inline TInt DeviceCaps(TUsbDeviceCaps& aDevCapsBuf); - - /** Copies the current alternate setting for this interface into aInterfaceNumber - For USB Interfaces whose main interface is active, this will be 0 (zero). - - @param aInterfaceNumber current alternate setting for this interface is copied into this. - - @return KErrNone if successful. - */ - inline TInt GetAlternateSetting(TInt& aInterfaceNumber); - - /** Copies the current device status into aDeviceStatus. - - @param aDeviceStatus current device status is copied into this. - - @return KErrNone if successful - */ - inline TInt DeviceStatus(TUsbcDeviceState& aDeviceStatus); - - /** Copies the current endpoint status into aEndpointStatus. - - @param aEndpoint endpoint number valid for the current alternate setting. - @param aEndpointStatus the current endpoint status, might be stalled, not stalled or unknown. - - @return KErrNone if successful. - */ - inline TInt EndpointStatus(TEndpointNumber aEndpoint, TEndpointState& aEndpointStatus); - - /** Copies the number of bytes available in the aEndpoint read buffer into aNumberOfBytes. - - @param aEndpoint endpoint number valid for the current alternate setting. - @param aNumberOfBytes number of bytes available in the aEndpoint read buffer. - - @return KErrNone if successful. - */ - inline TInt QueryReceiveBuffer(TEndpointNumber aEndpoint, TInt& aNumberOfBytes); - - /** Requests that a zero length status packet be sent to the host in response - to a class or vendor specific ep0 SETUP packet. - - @return KErrNone if successful. - */ - inline TInt SendEp0StatusPacket(); - - /** Stalls endpoint aEndpoint, usually to indicate an error condition with a previous command. - The host will normally send a SET_FEATURE command on ep0 to acknowledge and clear the stall. - - @return KErrNone if successful. - */ - inline TInt HaltEndpoint(TEndpointNumber aEndpoint); - - /** Clears the stall condition on endpoint aEndpoint. This is inluded for symmetry and test purposes. - - @return KErrNone if successful. - */ - inline TInt ClearHaltEndpoint(TEndpointNumber aEndpoint); - - /** Requests that device control be allocated to this channel. - - @return KErrNone if successful. - */ - inline TInt SetDeviceControl(); - - /** Relinquishes device control previously allocated to this channel. - - @return KErrNone if successful. - */ - inline TInt ReleaseDeviceControl(); - - /** Returns a bitmap of available ep0 maximum packet sizes. - - @return bitmap of available ep0 maximum packet sizes. - */ - inline TUint EndpointZeroMaxPacketSizes(); - - /** Requests that a maximum packet size of aMaxPacketSize be set on ep0. - - @param aMaxPacketSize The maximum packet size. - - @return KErrNone if successful. - */ - inline TInt SetEndpointZeroMaxPacketSize(TInt aMaxPacketSize); - - /** Queries the current maximum packet size on ep0. - - @return The currently set maximum packet size on ep0. - */ - inline TInt GetEndpointZeroMaxPacketSize(); - - /** Copies the current device descriptor into aDeviceDescriptor. - - @param aDeviceDescriptor Receives the current device descriptor. - - @return KErrNone if successful. - */ - inline TInt GetDeviceDescriptor(TDes8& aDeviceDescriptor); - - /** Sets the contents of aDeviceDescriptor to be the current device descriptor. - - @param aDeviceDescriptor contains the device descriptor. - - @return KErrNone if successful. - */ - inline TInt SetDeviceDescriptor(const TDesC8& aDeviceDescriptor); - - /** Gets the size of the current device descriptor. This is unlikely to be anything other than 9. - - @param aSize receives the size of the current device descriptor. - - @return KErrNone if successful. - */ - inline TInt GetDeviceDescriptorSize(TInt& aSize); - - /** Copies the current configuration descriptor into aConfigurationDescriptor. - - @param aConfigurationDescriptor Receives the current configuration descriptor. - - @return KErrNone if successful. - */ - inline TInt GetConfigurationDescriptor(TDes8& aConfigurationDescriptor); - - /** Sets the contents of aConfigurationDescriptor to be the current configuration descriptor. - - @param aConfigurationDescriptor contains the configuration descriptor. - - @return KErrNone if successful. - */ - inline TInt SetConfigurationDescriptor(const TDesC8& aConfigurationDescriptor); - - /** Gets the size of the current configuration descriptor. - - @param aSize receives the size of the current configuration descriptor. - - @return KErrNone if successful. - */ - inline TInt GetConfigurationDescriptorSize(TInt& aSize); - - /** Copies the interface descriptor into aInterfaceDescriptor for the interface with alternate - setting aSettingNumber, 0 for the main interface. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aInterfaceDescriptor Receives the interface descriptor. - - @return KErrNone if successful. - */ - inline TInt GetInterfaceDescriptor(TInt aSettingNumber, TDes8& aInterfaceDescriptor); - - /** Sets the interface descriptor contained in aInterfaceDescriptor for the interface with - alternate setting aSettingNumber, 0 for the main interface, for transmission to the host - during enumeration. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aInterfaceDescriptor Contains the interface descriptor to be set. - - @return KErrNone if successful. - */ - inline TInt SetInterfaceDescriptor(TInt aSettingNumber, const TDesC8& aInterfaceDescriptor); - - /** Copies the size of the interface descriptor for the interface with alternate - setting aSettingNumber, 0 for the main interface, into aSize. - - @param aSettingNumber The alternate setting. - @param aSize receives the size of the interface descriptor. - - @return KErrNone if successful. - */ - inline TInt GetInterfaceDescriptorSize(TInt aSettingNumber, TInt& aSize); - - /** Copies the endpoint descriptor for logical endpoint number aEndpointNumber into aEndpointDescriptor - for the interface with alternate setting aSettingNumber, 0 for the main interface. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aEndpointNumber. - @param aEndpointDescriptor Receives the endpoint descriptor. - - @return KErrNone if successful. - */ - inline TInt GetEndpointDescriptor(TInt aSettingNumber, TInt aEndpointNumber, TDes8& aEndpointDescriptor); - - /** Sets the endpoint descriptor for logical endpoint number aEndpointNumber contained in - aEndpointDescriptor for the interface with alternate setting aSettingNumber, 0 for the main interface, - for transmission to the host during enumeration. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aEndpointNumber Valid endpoint number on this interface. - @param aEndpointDescriptor Contains the endpoint descriptor to be set. - - @return KErrNone if successful. - */ - inline TInt SetEndpointDescriptor(TInt aSettingNumber, TInt aEndpointNumber, - const TDesC8& aEndpointDescriptor); - - /** Copies the size of the endpoint descriptor for logical endpoint number aEndpointNumber for the - interface with alternate setting aSettingNumber, 0 for the main interface, into aSize. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aEndpointNumber Valid endpoint number on this interface. - @param aSize receives the size of the endpoint descriptor. - - @return KErrNone if successful. - */ - inline TInt GetEndpointDescriptorSize(TInt aSettingNumber, TInt aEndpointNumber, TInt& aSize); - - /** Get OTG descriptor size - - @param aSize TInt reference which contains OTG descriptor size on return - */ - inline void GetOtgDescriptorSize(TInt& aSize); - - /** Get OTG descriptor of USB on-the-go feature - - @param aOtgDesc User-side buffer to store copy of descriptor - - @return KErrNone if successful - */ - inline TInt GetOtgDescriptor(TDes8& aOtgDesc); - - /** Set OTG descriptor by user to enable/disable USB on-the-go feature - - @param aOtgDesc Descriptor buffer containing OTG features - - @return KErrNone if successful - */ - inline TInt SetOtgDescriptor(const TDesC8& aOtgDesc); - - /** Copies the current device_qualifier descriptor into aDescriptor. - - @param aDescriptor Receives the current device_qualifier descriptor. - - @return KErrNone if successful. - */ - inline TInt GetDeviceQualifierDescriptor(TDes8& aDescriptor); - - /** Sets the device_qualifier descriptor to the contents of aDescriptor. - - @param aDescriptor contains the new device_qualifier descriptor. - - @return KErrNone if successful. - */ - inline TInt SetDeviceQualifierDescriptor(const TDesC8& aDescriptor); - - /** Copies the current other_speed_configuration descriptor into aDescriptor. - - @param aDescriptor Receives the current other_speed_configuration descriptor. - - @return KErrNone if successful. - */ - inline TInt GetOtherSpeedConfigurationDescriptor(TDes8& aDescriptor); - - /** Sets the other_speed_configuration descriptor to the contents of aDescriptor. - - @param aDescriptor contains the new other_speed_configuration descriptor. - - @return KErrNone if successful. - */ - inline TInt SetOtherSpeedConfigurationDescriptor(const TDesC8& aDescriptor); - - /** Copies the class specific interface descriptor block into aInterfaceDescriptor for the interface - with alternate setting aSettingNumber, 0 for the main interface. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aInterfaceDescriptor Contains the interface descriptor to be set. - - @return KErrNone if successful. - */ - inline TInt GetCSInterfaceDescriptorBlock(TInt aSettingNumber, TDes8& aInterfaceDescriptor); - - /** aSettingNumber is the alternate interface setting, 0 for the main interface, that the descriptor block - aDes should be attached to. aDes is a block of data containing at least one class specific descriptor - for transmission during enumeration after the class interface descriptor (or alternate interface - descriptor) has been sent, but before the endpoint descriptors belonging to this interface are sent. - aDes may contain as many descriptors as are necessary or only 1. SetCSInterfaceDescriptorBlock() - should be called at any time after SetInterface() has been called to establish a main interface or an - alternate interface. More than one call may be made - the data blocks will be concatenated prior to - sending. No checking or validation of the contents of aDes will be made and it is the caller's - responsibility to ensure that the data supplied is correct and appropriate to the interface identified - by aSettingNumber. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aInterfaceDescriptor Contains the interface descriptor to be set. - - @return KErrNone if successful. - */ - inline TInt SetCSInterfaceDescriptorBlock(TInt aSettingNumber, const TDesC8& aInterfaceDescriptor); - - /** Copies the size of the class specific interface descriptor block for the interface with alternate - setting aSettingNumber, 0 for the main interface, into aSize. - - @param aSettingNumber The alternate setting number. - @param aSize receives the size of the interface descriptor. - - @return KErrNone if successful. - */ - inline TInt GetCSInterfaceDescriptorBlockSize(TInt aSettingNumber, TInt& aSize); - - /** Copies the class specific endpoint descriptor for logical endpoint number aEndpointNumber - into aEndpointDescriptor for the interface with alternate setting aSettingNumber, 0 for the main - interface. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aEndpointNumber Valid endpoint number on this interface. - @param aEndpointDescriptor Receives the endpoint descriptor. - - @return KErrNone if successful. - */ - inline TInt GetCSEndpointDescriptorBlock(TInt aSettingNumber, TInt aEndpointNumber, - TDes8& aEndpointDescriptor); - - /** Sets the class specific endpoint descriptor for logical endpoint number aEndpointNumber contained in - aEndpointDescriptor for the interface with alternate setting aSettingNumber, 0 for the main interface, - for transmission to the host during enumeration. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aEndpointNumber Valid endpoint number on this interface. - @param aEndpointDescriptor Contains the endpoint descriptor to be set. - - @return KErrNone if successful. - */ - inline TInt SetCSEndpointDescriptorBlock(TInt aSettingNumber, TInt aEndpointNumber, - const TDesC8& aEndpointDescriptor); - - /** Copies the size of the class specific endpoint descriptor block for logical endpoint number - aEndpointNumber for the interface with alternate setting aSettingNumber, 0 for the main interface, - into aSize. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aEndpointNumber Valid endpoint number on this interface. - @param aSize On return, contains the size of the class specific endpoint descriptor block. - - @return KErrNone if successful. - */ - inline TInt GetCSEndpointDescriptorBlockSize(TInt aSettingNumber, TInt aEndpointNumber, TInt& aSize); - - /** Generates a Remote Wakeup bus condition - The capability of the device to generate Remote Wakeup signalling is enquired in - RDevUsbcClient::DeviceCaps. - - @return KErrNone if this signalling is possible and the signal has been generated. - */ - inline TInt SignalRemoteWakeup(); - - /** Simulates a physical removal of the USB cable by disabling the D+/- pull-ups.The iConnect member of - TUsbDeviceCapsV01, returned by RDevUsbcClient::DeviceCaps(), indicates whether this functionality is - supported. - - @return KErrNone if successful. - */ - inline TInt DeviceDisconnectFromHost(); - - /** Simulates a physical insertion of the USB cable by enabling the D+/- pull-ups.The iConnect member - of TUsbDeviceCapsV01, returned by RDevUsbcClient::DeviceCaps(), indicates whether this functionality - is supported. - - @return KErrNone if successful. - */ - inline TInt DeviceConnectToHost(); - - /** Powers up the UDC and connects it to the bus if one or more interfaces exist. - - @return KErrNone if UDC successfully powered up, KErrNotReady if no - interfaces have been registered yet, KErrHardwareNotAvailable if UDC - couldn't be activated. - */ - inline TInt PowerUpUdc(); - - /** Enquires about the current operating speed of the UDC. - - @return ETrue if the UDC is currently operating at High speed, EFalse otherwise. - */ - inline TBool CurrentlyUsingHighSpeed(); - - /** Allocates the use of aResource to aEndpoint. it will be used from when the current bus transfer has been - completed. - - @param aResource is typically some rationed hardware resource or possibly specifies a type of endpoint - behaviour. aResource is not a bitmap and TEndpointResource values should not be combined. - @param aEndpoint The endpoint number to which the resource is to be allocated. - - @return KErrNone if successful, KErrInUse if the resource is already consumed and cannot be allocated, - KErrNotSupported if the endpoint does not support the resource requested. - - @publishedPartner @deprecated - - @see TUsbcEndpointInfo - */ - inline TInt AllocateEndpointResource(TInt aEndpoint, TUsbcEndpointResource aResource); - - /** Deallocates the use of aResource aEndpoint or ends a specified endpoint behaviour. - - @param aResource is typically some rationed hardware resource or possibly specifies a type of endpoint - behaviour. aResource is not a bitmap and TEndpointResource values should not be combined. - @param aEndpoint The endpoint number from which the resource is to be removed. - - @return KErrNone if the resource has been successfully deallocated, KErrNotSupported if the endpoint - does not support the resource requested. - - @publishedPartner @deprecated - - @see TUsbcEndpointInfo - */ - inline TInt DeAllocateEndpointResource(TInt aEndpoint, TUsbcEndpointResource aResource); - - /** Queries endpoint resource use. - - @param aResource is typically some rationed hardware resource or possibly specifies a type of endpoint - behaviour. aResource is not a bitmap and TEndpointResource values should not be combined. - @param aEndpoint The endpoint number at which the resource is to be queried. - - @return ETrue is the specified resource is in use at the endpoint and EFalse if not. - */ - inline TBool QueryEndpointResourceUse(TInt aEndpoint, TUsbcEndpointResource aResource); - - /** Request (i.e. claim for this channel) up to five endpoints and set the class type for this USB - interface. 'aInterfaceData' is a package buffer which describes the interface and all the endpoints - being requested by the driver for this interface. - - @param aInterfaceNumber Distinguishes between alternate interfaces. If these are not be used then this - should always be zero. If this parameter is used, then its value must be one more than that of the - proceeding alternate interface. - @param aInterfaceData a package buffer which describes the interface and all the endpoints being - requested by the driver for this interface. - @param aBandwidthPriority is a bitmap combining the required IN and OUT priorities. Values are in the - range [0,3] from the lowest priority bandwidth, 0, to the highest 3 and are separately specified for - IN and OUT endpoints. Interfaces requiring higher bandwidth are allocated significantly more buffering - than low bandwidth interfaces. Interfaces should not be given a higher bandwidth priority than they - require. - - @return KErrInUse if any of the endpoints being requested have already been claimed by another channel - KErrNotSupported if an endpoint with all of the specified properties is not supported on this - platform. KErrNoMemory if insufficient memory is available to complete the operation. - */ - inline TInt SetInterface(TInt aInterfaceNumber, TUsbcInterfaceInfoBuf& aInterfaceData, - TUint32 aBandwidthPriority = - (EUsbcBandwidthOUTDefault | EUsbcBandwidthINDefault)); - - /** Release an interface previously claimed by this channel. Alternate interfaces need to be released - in strict descending order, starting with the last (i.e. highest numbered) one. - It is not necessary to release an interface that wasn't successfully requested. - - @param aInterfaceNumber Specifies the alternate setting number 'aInterfaceNum' of the interface to be - released. - - @return KErrNone if successful. KErrArgument if the alternate setting doesn't exist or is released out - of order. - */ - inline TInt ReleaseInterface(TInt aInterfaceNumber); - - /** Copies the current string descriptor language ID (LANGID) code into the aLangId argument. Even though - the USB spec allows for the existence of a whole array of LANGID codes, we only support one. - - @param aLangId receives the LANGID code. - - @return KErrNone if successful, KErrArgument if problem with argument (memory cannot be written to, etc.). - */ - inline TInt GetStringDescriptorLangId(TUint16& aLangId); - - /** Sets the string descriptor language ID (LANGID). Even though the USB spec allows for the existence of - a whole array of LANGID codes, we only support one. - - @param aLangId the LANGID code to be set. - - @return KErrNone if successful. - */ - inline TInt SetStringDescriptorLangId(TUint16 aLangId); - - /** Copies the string descriptor identified by the iManufacturer index field of the Standard Device - Descriptor into the aString argument. - - @param aString receives manufacturer string. - - @return KErrNone if successful, KErrArgument if MaxLength of aString is too small to hold the entire - descriptor, KErrNotFound if the string descriptor couldn't be found. - */ - inline TInt GetManufacturerStringDescriptor(TDes16& aString); - - /** Sets the string descriptor identified by the iManufacturer index field of the Standard Device - Descriptor to the aString argument. - - @param aString Contains the new manufacturer string descriptor. - - @return KErrNone if successful, KErrNoMemory if no memory is available to store the new string from - aString (in which case the old string descriptor will be preserved). - */ - inline TInt SetManufacturerStringDescriptor(const TDesC16& aString); - - /** Removes (deletes) the string descriptor identified by the iManufacturer index field of the Standard - Device Descriptor and sets that field to zero. - - @return KErrNone if successful, KErrNotFound if the string descriptor couldn't be found. - */ - inline TInt RemoveManufacturerStringDescriptor(); - - /** Retrieves the string descriptor identified by the iProduct index field of the Standard Device - Descriptor into the aString argument. - - @param aString receives product string. - - @return KErrNone if successful, KErrArgument if MaxLength of aString is too small to hold the entire - descriptor, KErrNotFound if the string descriptor couldn't be found. - */ - inline TInt GetProductStringDescriptor(TDes16& aString); - - /** Sets the string descriptor identified by the iProduct index field of the Standard Device Descriptor to - the aString argument. - - @param aString Contains the new product string descriptor. - - @return KErrNone if successful, KErrNoMemory if no memory is available to store the new string from - aString (in which case the old string descriptor will be preserved). - */ - inline TInt SetProductStringDescriptor(const TDesC16& aString); - - /** Removes (deletes) the string descriptor identified by the iProduct index field of the Standard Device - Descriptor and sets that field to zero. - - @return KErrNone if successful, KErrNotFound if the string descriptor couldn't be found. - */ - inline TInt RemoveProductStringDescriptor(); - - /** Retrieves the string descriptor identified by the iSerialNumber index field of the Standard Device - Descriptor into the aString argument. - - @param aString receives product string. - - @return KErrNone if successful, KErrArgument if MaxLength of aString is too small to hold the entire - descriptor, KErrNotFound if the string descriptor couldn't be found. - */ - inline TInt GetSerialNumberStringDescriptor(TDes16& aString); - - /** Sets the string descriptor identified by the iSerialNumber index field of the Standard Device - Descriptor to the aString argument. - - @param aString Contains the new serial number string descriptor. - - @return KErrNone if successful, KErrNoMemory if no memory is available to store the new string from - aString (in which case the old string descriptor will be preserved). - */ - inline TInt SetSerialNumberStringDescriptor(const TDesC16& aString); - - /** Removes (deletes) the string descriptor identified by the iSerialNumber index field of the Standard - Device Descriptor and sets that field to zero. - - @return KErrNone if successful, KErrNotFound if the string descriptor couldn't be found. - */ - inline TInt RemoveSerialNumberStringDescriptor(); - - /** Retrieves the string descriptor identified by the iConfiguration index field of the (first) Standard - Configuration Descriptor into the aString argument. - - @param aString receives configuration string. - - @return KErrNone if successful, KErrArgument if MaxLength of aString is too small to hold the entire - descriptor, KErrNotFound if the string descriptor couldn't be found. - */ - inline TInt GetConfigurationStringDescriptor(TDes16& aString); - - /** Sets the string descriptor identified by the iConfiguration index field of the Standard Configuration - Descriptor to the aString argument. - - @param aString Contains the new serial number string descriptor. - - @return KErrNone if successful, KErrNoMemory if no memory is available to store the new string from - aString (in which case the old string descriptor will be preserved). - */ - inline TInt SetConfigurationStringDescriptor(const TDesC16& aString); - - /** Removes (deletes) the string descriptor identified by the iConfiguration index field of the Standard - Configuration Descriptor and sets that field to zero. - - @return KErrNone if successful, KErrNotFound if the string descriptor couldn't be found. - */ - inline TInt RemoveConfigurationStringDescriptor(); - - /** Copies the string of the USB string descriptor at the specified index in the string descriptor array - into the aString argument. - - Although this function can also be used for it, for querying most standard string descriptors - there exists a set of dedicated access functions. - - @see RDevUsbcClient::GetStringDescriptorLangId - @see RDevUsbcClient::GetManufacturerStringDescriptor - @see RDevUsbcClient::GetProductStringDescriptor - @see RDevUsbcClient::GetSerialNumberStringDescriptor - @see RDevUsbcClient::GetConfigurationStringDescriptor - - @param aIndex The position of the string descriptor in the string descriptor array. - @param aString The target location for the string descriptor copy. - - @return KErrNone if successful, KErrNotFound if no string descriptor exists at the specified index, - KErrArgument if MaxLength() of aString is too small to hold the entire descriptor. - */ - inline TInt GetStringDescriptor(TUint8 aIndex, TDes16& aString); - - /** Sets the aString argument to be the string of a USB string descriptor at the specified index in the - string descriptor array. If a string descriptor already exists at that position then its string will - be replaced. - - Care should be taken, when choosing aIndex, not to inadvertently overwrite one of the standard - string descriptors. For their manipulation there exists a set of dedicated access functions. - - @see RDevUsbcClient::SetStringDescriptorLangId - @see RDevUsbcClient::SetManufacturerStringDescriptor - @see RDevUsbcClient::SetProductStringDescriptor - @see RDevUsbcClient::SetSerialNumberStringDescriptor - @see RDevUsbcClient::SetConfigurationStringDescriptor - - @param aIndex The position of the string descriptor in the string descriptor array. - @param aString Contains the string descriptor to be set. - - @return KErrNone if successful, KErrArgument if aIndex is invalid, KErrNoMemory if no memory - is available to store the new string (an existing descriptor at that index will be preserved). - */ - inline TInt SetStringDescriptor(TUint8 aIndex, const TDesC16& aString); - - /** Removes (deletes) the USB string descriptor at the specified index in the string descriptor array. - The position in the array of other string descriptors is not affected. - - Care should be taken, when choosing aIndex, not to inadvertently delete a standard string descriptor - (also because index references from non-string descriptors would be invalidated). For the deletion - of most standard string descriptors there exists a set of dedicated functions. - - @see RDevUsbcClient::RemoveManufacturerStringDescriptor - @see RDevUsbcClient::RemoveProductStringDescriptor - @see RDevUsbcClient::RemoveSerialNumberStringDescriptor - @see RDevUsbcClient::RemoveConfigurationStringDescriptor - - @param aIndex The position of the string descriptor in the string descriptor array. - - @return KErrNone if successful, KErrNotFound if no string descriptor exists at the specified index. - */ - inline TInt RemoveStringDescriptor(TUint8 aIndex); - - /** Asynchronously read data from endpoint 'aEndpoint' into the descriptor 'aDes'. - Request completes when the specified number of bytes is received, length taken from max. length of - descriptor. - - @param aStatus The request status. - @param aEndpoint The endpoint number to read from. - @param aDes Descriptor to receive the data. - */ - inline void Read(TRequestStatus& aStatus, TEndpointNumber aEndpoint, TDes8& aDes); - - /** Asynchronously read data from endpoint 'aEndpoint' into the descriptor 'aDes'. - Request completes when the specified number of bytes is received. - - @param aStatus The request status. - @param aEndpoint The endpoint number to read from. - @param aDes Descriptor to receive the data. - @param aLen The number of bytes to read. - */ - inline void Read(TRequestStatus& aStatus, TEndpointNumber aEndpoint, TDes8& aDes, TInt aLen); - - /** Asynchronously read an entire packet of data from endpoint 'aEndpoint' into the descriptor 'aDes'. - If a packet has previously been partly read. then only the remainder of the packet will be returned. - The request should be for the maximum packet size of the endpoint. If less data is requested, then - after this read completes the remainder of the data in the packet will be discarded and the next read - will start from the next available packet. - Request completes when either a complete packet is received or the length of the packet currently - being received exceeds 'aMaxLen'. - - @param aStatus The request status. - @param aEndpoint The endpoint number to read from. - @param aDes Descriptor to receive the data. - @param aMaxLen . - */ - inline void ReadPacket(TRequestStatus& aStatus, TEndpointNumber aEndpoint, TDes8& aDes, TInt aMaxLen); - - /** Asynchronously read data from endpoint 'aEndpoint' into the descriptor 'aDes'. - Request completes when the specified number of bytes is received (in first version, - length taken from max. length of descriptor). - - @param aStatus The request status. - @param aEndpoint The endpoint number to read from. - @param aDes Descriptor to receive the data. - */ - inline void ReadUntilShort(TRequestStatus& aStatus, TEndpointNumber aEndpoint, TDes8& aDes); - - /** Asynchronously read data from endpoint 'aEndpoint' into the descriptor 'aDes'. - Request completes when the specified number of bytes is received (in first version, - length taken from max. length of descriptor). - - @param aStatus The request status. - @param aEndpoint The endpoint number to read from. - @param aDes Descriptor to receive the data. - @param aLen The number of bytes to receive. - */ - inline void ReadUntilShort(TRequestStatus& aStatus, TEndpointNumber aEndpoint, TDes8& aDes, TInt aLen); - - /** Asynchronously read data from endpoint 'aEndpoint' into the descriptor 'aDes'. The request completes - when the specified number of bytes is received, length taken from max. length of descriptor or a - packet whose size is smaller than the endpoint's maximum packet size is received. - - @param aStatus The request status. - @param aEndpoint The endpoint number to read from. - @param aDes Descriptor to receive the data. - */ - inline void ReadOneOrMore(TRequestStatus& aStatus, TEndpointNumber aEndpoint, TDes8& aDes); - - /** Asynchronously read data from endpoint 'aEndpoint' into the descriptor 'aDes'. The request completes - when the specified number of bytes is received, or a packet whose size is smaller than the endpoint's - maximum packet size is received. - - @param aStatus The request status. - @param aEndpoint The endpoint number to read from. - @param aDes Descriptor to receive the data. - @param aLen The number of bytes to receive. - */ - inline void ReadOneOrMore(TRequestStatus& aStatus, TEndpointNumber aEndpoint, TDes8& aDes, TInt aLen); - - /** Cancels an outstanding read request. The request will complete with whatever data is available. - */ - inline void ReadCancel(TEndpointNumber aEndpoint); - - /** Asynchronously write 'aLen' bytes of data to endpoint 'aEndpoint' from descriptor 'aDes'. 'aZlpRequired' - (optional) signals that ZLP termination may be required. - - @param aStatus The request status. - @param aEndpoint The endpoint number to write to. - @param aDes Descriptor to provide the data. - @param aLen The number of bytes of data to be written. - @param aZlpRequired True, if ZLP termination is required; false, otherwise. - */ - inline void Write(TRequestStatus& aStatus, TEndpointNumber aEndpoint, const TDesC8& aDes, TInt aLen, - TBool aZlpRequired=EFalse); - - /** Cancels an outstanding write request on endpoint aEndpoint. - - @param aEndpoint The endpoint number whose write is to be cancelled. - */ - inline void WriteCancel(TEndpointNumber aEndpoint); - - /** Cancels any transfer on any endpoint specified in aEndpointMask. - - @code - // Cancel transfer requests on endpoints 1, 2 & 3 - usbPort.EndpointTransferCancel(KUsbcEndpoint1Bit | KUsbcEndpoint2Bit | KUsbcEndpoint3Bit); - @endcode - - @param aEndpointMask bitmap of the endpoints. - */ - inline void EndpointTransferCancel(TUint aEndpointMask); - - /** Register for notification when a change of the Interface alternate setting or the USB Controller's - current state occurs. When the alternate setting or the Controller state changes, then the - asynchronous function completes and the current alternate setting number or Controller state is - written back to aValue. If the KUsbAlternateSetting bit is set then the remaining bits are the - alternate setting number. Otherwise aValue is interpreted as a TUsbcDeviceState. - - @see TUsbcDeviceState - - @param aStatus The request status. - @param aValue Receives the alternate setting number or Controller state. - */ - inline void AlternateDeviceStatusNotify(TRequestStatus& aStatus, TUint& aValue); - - /** Completes an AlternateDeviceStatusNotify request. If a request has previously been made then the - status variable is updated with the current device state. - */ - inline void AlternateDeviceStatusNotifyCancel(); - - /** If the channel has changed the grouping of endpoints between interfaces or changed the interface class - type from the defaults then it is necessary to force a re-enumeration. This will typically involve the - Symbian OS device initiating a disconnection and re-connection. This is an asynchronous operation - which will complete when the Controller is successfully configured by the host, i.e. has achieved - UsbShai::EUsbPeripheralStateConfigured. Since it is not known if the operation has failed, at the same time that - a ReEnumerate request is made, a timer should be set up to complete after approximately 5 seconds. It - can be assumed that if the operation has not completed after this time interval then it will not - complete. - - @param aStatus The request status. - */ - inline void ReEnumerate(TRequestStatus& aStatus); - - /** Cancels an outstanding ReEnumerate() request. - */ - inline void ReEnumerateCancel(); - - /** Register for notification when a change in stall status of any of the interface's endpoints occurs, - but not ep0. When a change in stall status occurs, then the asynchronous function completes and the - current stall state is written back to 'aEndpointStatus' as a bit map: Only stall state changes caused - by SET_FEATURE and CLEAR_FEATURE standard commands on ep0 will be notified when this function - completes. After this request completes the request should be re-issued to obtain future - notifications. - - @param aStatus The request status. - @param aEndpointMask a bitmap of the endpoints stall status. This is filled in when the call completes - bit 1 represents the interface's virtual endpoint 1, (KUsbcEndpoint1Bit) - bit 2 represents the interface's virtual endpoint 2, (KUsbcEndpoint2Bit) etc. - bit value 0 - not stalled, - bit value 1 - stalled. - */ - inline void EndpointStatusNotify(TRequestStatus& aStatus, TUint& aEndpointMask); - - /** Completes an endpoint status notify request. - */ - inline void EndpointStatusNotifyCancel(); - - /** Get current on-the-go features relating to the ability of device/host pair to - perform OTG role swap. - - @param aFeatures On return it contanis features the device currently has - bit 2 represents b_hnp_enable, (KUsbOtgAttr_B_HnpEnable) - bit 3 represents a_hnp_support, (KUsbOtgAttr_A_HnpSupport) - bit 4 represents a_alt_hnp_support, (KUsbOtgAttr_A_AltHnpSupport) - @return KErrNone if successful, KErrNotSupported if OTG is not supported by - this device, otherwise system-wide error returns - */ - inline TInt GetOtgFeatures(TUint8& aFeatures); - - /** Register for notification on USB on-the-go features' change. If any OTG feature - is changed, request completes and current feature value is filled in aValue. - - @param aStatus Request status object - @param aValue On request completion, it contains current OTG feature value - */ - inline void OtgFeaturesNotify(TRequestStatus& aStatus, TUint8& aValue); - - /** Cancel pending OTG feature request. - */ - inline void OtgFeaturesNotifyCancel(); - -#endif // #ifndef __KERNEL_MODE__ - }; - - -#include - - -#endif // __D32USBC_H__ diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/d32usbc.inl --- a/usbdrv/peripheral/public/d32usbc.inl Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,702 +0,0 @@ -// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32/include/d32usbc.inl -// User side class definitions for USB Device support (inline header). -// -// - -/** - @file d32usbc.inl - @publishedPartner - @released -*/ - -#ifndef __D32USBC_INL__ -#define __D32USBC_INL__ - - -/** @internalTechnology -*/ -struct TUsbcIfcInfo - { - TUsbcInterfaceInfoBuf* iInterfaceData; - TPtr8* iString; - TUint32 iBandwidthPriority; - }; - - -/** @internalTechnology -*/ -struct TEndpointTransferInfo - { - TDesC8* iDes; - TTransferType iTransferType; - TInt iTransferSize; - TBool iZlpReqd; - }; - -inline TUsbcInterfaceInfo::TUsbcInterfaceInfo(TInt aClass, TInt aSubClass, - TInt aProtocol, TDesC16* aString, - TUint aTotalEndpoints) - : iClass(aClass, aSubClass, aProtocol), iString(aString), - iTotalEndpointsUsed(aTotalEndpoints), iEndpointData(), iFeatureWord(0) - {} - - -#ifndef __KERNEL_MODE__ - -/** @capability CommDD -*/ -inline TInt RDevUsbcClient::Open(TInt aUnit) - { - _LIT(KUsbDevName, "Usbc"); - return (DoCreate(KUsbDevName, VersionRequired(), aUnit, NULL, NULL, EOwnerThread)); - } - - -inline TVersion RDevUsbcClient::VersionRequired() const - { - return (TVersion(EMajorVersionNumber, EMinorVersionNumber, EBuildVersionNumber)); - } - - -inline TInt RDevUsbcClient::EndpointZeroRequestError() - { - return DoControl(EControlEndpointZeroRequestError); - } - - -inline TInt RDevUsbcClient::EndpointCaps(TDes8& aCapsBuf) - { - return DoControl(EControlEndpointCaps, &aCapsBuf); - } - - -inline TInt RDevUsbcClient::DeviceCaps(TUsbDeviceCaps& aCapsBuf) - { - return DoControl(EControlDeviceCaps, &aCapsBuf); - } - - -inline TInt RDevUsbcClient::GetAlternateSetting(TInt &aInterfaceNumber) - { - return DoControl(EControlGetAlternateSetting, &aInterfaceNumber); - } - - -inline TInt RDevUsbcClient::DeviceStatus(TUsbcDeviceState &aDeviceStatus) - { - return DoControl(EControlDeviceStatus, &aDeviceStatus); - } - - -inline TInt RDevUsbcClient::EndpointStatus(TEndpointNumber aEndpoint,TEndpointState &aEndpointStatus) - { - return DoControl(EControlEndpointStatus,(TAny*) aEndpoint, &aEndpointStatus); - } - - -inline TInt RDevUsbcClient::QueryReceiveBuffer(TEndpointNumber aEndpoint,TInt& aNumberOfBytes) - { - return DoControl(EControlQueryReceiveBuffer, (TAny*) aEndpoint, &aNumberOfBytes); - } - - -inline TInt RDevUsbcClient::SendEp0StatusPacket() - { - return DoControl(EControlSendEp0StatusPacket); - } - - -inline TInt RDevUsbcClient::HaltEndpoint(TEndpointNumber aEndpoint) - { - return DoControl(EControlHaltEndpoint, (TAny*) aEndpoint); - } - - -inline TInt RDevUsbcClient::ClearHaltEndpoint(TEndpointNumber aEndpoint) - { - return DoControl(EControlClearHaltEndpoint, (TAny*) aEndpoint); - } - - -inline TUint RDevUsbcClient::EndpointZeroMaxPacketSizes() - { - return DoControl(EControlEndpointZeroMaxPacketSizes); - } - - -inline TInt RDevUsbcClient::SetEndpointZeroMaxPacketSize(TInt aMaxPacketSize) - { - return DoControl(EControlSetEndpointZeroMaxPacketSize, (TAny*) aMaxPacketSize); - } - - -inline TInt RDevUsbcClient::GetEndpointZeroMaxPacketSize() - { - return DoControl(EControlGetEndpointZeroMaxPacketSize); - } - - -inline TInt RDevUsbcClient::GetDeviceDescriptor(TDes8& aDeviceDescriptor) - { - return DoControl(EControlGetDeviceDescriptor, &aDeviceDescriptor); - } - - -inline TInt RDevUsbcClient::SetDeviceDescriptor(const TDesC8& aDeviceDescriptor) - { - return DoControl(EControlSetDeviceDescriptor, const_cast(&aDeviceDescriptor)); - } - - -inline TInt RDevUsbcClient::GetDeviceDescriptorSize(TInt& aSize) - { - TPckgBuf p; - TInt r = DoControl(EControlGetDeviceDescriptorSize, &p); - if (r == KErrNone) - aSize = p(); - return r; - } - - -inline TInt RDevUsbcClient::GetConfigurationDescriptor(TDes8& aConfigurationDescriptor) - { - return DoControl(EControlGetConfigurationDescriptor, &aConfigurationDescriptor); - } - - -inline TInt RDevUsbcClient::SetConfigurationDescriptor(const TDesC8& aConfigurationDescriptor) - { - return DoControl(EControlSetConfigurationDescriptor, const_cast (&aConfigurationDescriptor)); - } - - -inline TInt RDevUsbcClient::GetConfigurationDescriptorSize(TInt& aSize) - { - TPckgBuf p; - TInt r=DoControl(EControlGetConfigurationDescriptorSize, &p); - if (r == KErrNone) - aSize = p(); - return r; - } - - -inline TInt RDevUsbcClient::GetInterfaceDescriptor(TInt aSettingNumber, TDes8& aInterfaceDescriptor) - { - return DoControl(EControlGetInterfaceDescriptor,(TAny*) aSettingNumber, &aInterfaceDescriptor); - } - - -inline TInt RDevUsbcClient::SetInterfaceDescriptor(TInt aSettingNumber, const TDesC8& aInterfaceDescriptor) - { - return DoControl(EControlSetInterfaceDescriptor,(TAny*) aSettingNumber, - const_cast(&aInterfaceDescriptor)); - } - - -inline TInt RDevUsbcClient::GetInterfaceDescriptorSize(TInt aSettingNumber, TInt& aSize) - { - TPckgBuf p; - TInt r = DoControl(EControlGetInterfaceDescriptorSize,(TAny*) aSettingNumber, &p); - if (r == KErrNone) - aSize = p(); - return r; - } - - -inline TInt RDevUsbcClient::GetEndpointDescriptor(TInt aSettingNumber, TInt aEndpointNumber, - TDes8& aEndpointDescriptor) - { - TEndpointDescriptorInfo info = {aSettingNumber, aEndpointNumber, &aEndpointDescriptor}; - return DoControl(EControlGetEndpointDescriptor, &info, NULL); - } - - -inline TInt RDevUsbcClient::SetEndpointDescriptor(TInt aSettingNumber, TInt aEndpointNumber, - const TDesC8& aEndpointDescriptor) - { - TEndpointDescriptorInfo info = {aSettingNumber, aEndpointNumber, const_cast(&aEndpointDescriptor)}; - return DoControl(EControlSetEndpointDescriptor, &info, NULL); - } - - -inline TInt RDevUsbcClient::GetEndpointDescriptorSize(TInt aSettingNumber, TInt aEndpointNumber, TInt& aSize) - { - TPckgBuf p; - TEndpointDescriptorInfo info = {aSettingNumber, aEndpointNumber, &p}; - TInt r = DoControl(EControlGetEndpointDescriptorSize, &info, NULL); - if (r == KErrNone) - aSize = p(); - return r; - } - - -inline void RDevUsbcClient::GetOtgDescriptorSize(TInt& aSize) - { - aSize = KUsbDescSize_Otg; - } - - -inline TInt RDevUsbcClient::GetOtgDescriptor(TDes8& aOtgDesc) - { - return DoControl(EControlGetOtgDescriptor, (TAny*)&aOtgDesc); - } - - -inline TInt RDevUsbcClient::SetOtgDescriptor(const TDesC8& aOtgDesc) - { - return DoControl(EControlSetOtgDescriptor, (TAny*)&aOtgDesc); - } - - -inline TInt RDevUsbcClient::GetDeviceQualifierDescriptor(TDes8& aDescriptor) - { - return DoControl(EControlGetDeviceQualifierDescriptor, &aDescriptor); - } - - -inline TInt RDevUsbcClient::SetDeviceQualifierDescriptor(const TDesC8& aDescriptor) - { - return DoControl(EControlSetDeviceQualifierDescriptor, const_cast(&aDescriptor)); - } - - -inline TInt RDevUsbcClient::GetOtherSpeedConfigurationDescriptor(TDes8& aDescriptor) - { - return DoControl(EControlGetOtherSpeedConfigurationDescriptor, &aDescriptor); - } - - -inline TInt RDevUsbcClient::SetOtherSpeedConfigurationDescriptor(const TDesC8& aDescriptor) - { - return DoControl(EControlSetOtherSpeedConfigurationDescriptor, const_cast (&aDescriptor)); - } - - -inline TInt RDevUsbcClient::GetCSInterfaceDescriptorBlock(TInt aSettingNumber, TDes8& aInterfaceDescriptor) - { - return DoControl(EControlGetCSInterfaceDescriptor,(TAny*) aSettingNumber, &aInterfaceDescriptor); - } - - -inline TInt RDevUsbcClient::GetCSInterfaceDescriptorBlockSize(TInt aSettingNumber, TInt& aSize) - { - TPckgBuf p; - TInt r = DoControl(EControlGetCSInterfaceDescriptorSize,(TAny*) aSettingNumber, &p); - if (r == KErrNone) - aSize = p(); - return r; - } - - -inline TInt RDevUsbcClient::GetCSEndpointDescriptorBlock(TInt aSettingNumber, TInt aEndpointNumber, - TDes8& aEndpointDescriptor) - { - TEndpointDescriptorInfo info={aSettingNumber, aEndpointNumber, &aEndpointDescriptor}; - return DoControl(EControlGetCSEndpointDescriptor,&info,NULL); - } - - -inline TInt RDevUsbcClient::GetCSEndpointDescriptorBlockSize(TInt aSettingNumber, TInt aEndpointNumber, - TInt& aSize) - { - TPckgBuf p; - TEndpointDescriptorInfo info = {aSettingNumber, aEndpointNumber, &p}; - TInt r = DoControl(EControlGetCSEndpointDescriptorSize, &info, NULL); - if (r == KErrNone) - aSize = p(); - return r; - } - - -inline TInt RDevUsbcClient::SignalRemoteWakeup() - { - return DoControl(EControlSignalRemoteWakeup); - } - - -inline TInt RDevUsbcClient::DeviceDisconnectFromHost() - { - return DoControl(EControlDeviceDisconnectFromHost); - } - - -inline TInt RDevUsbcClient::DeviceConnectToHost() - { - return DoControl(EControlDeviceConnectToHost); - } - - -inline TInt RDevUsbcClient::PowerUpUdc() - { - return DoControl(EControlDevicePowerUpUdc); - } - - -inline TBool RDevUsbcClient::CurrentlyUsingHighSpeed() - { - return DoControl(EControlCurrentlyUsingHighSpeed); - } - - -inline TInt RDevUsbcClient::SetInterface(TInt aInterfaceNumber, TUsbcInterfaceInfoBuf& aInterfaceData, - TUint32 aBandwidthPriority) - { - TPtr8 name_8(NULL,0); - TUsbcIfcInfo ifcinfo; - ifcinfo.iInterfaceData = const_cast(&aInterfaceData); - if (!aInterfaceData().iString) - { - ifcinfo.iString = NULL; - } - else - { - name_8.Set(const_cast(reinterpret_cast(aInterfaceData().iString->Ptr())), - aInterfaceData().iString->Size(), aInterfaceData().iString->Size()); - ifcinfo.iString = &name_8; - } - ifcinfo.iBandwidthPriority = aBandwidthPriority; - return DoControl(EControlSetInterface, (TAny*)aInterfaceNumber, &ifcinfo); - } - - -inline TInt RDevUsbcClient::ReleaseInterface(TInt aInterfaceNumber) - { - return DoControl(EControlReleaseInterface, (TAny*)aInterfaceNumber); - } - - -inline TInt RDevUsbcClient::SetCSInterfaceDescriptorBlock(TInt aSettingNumber, const TDesC8& aInterfaceDescriptor) - { - TCSDescriptorInfo info = {aSettingNumber, 0, const_cast(&aInterfaceDescriptor), - aInterfaceDescriptor.Size()}; - return DoControl(EControlSetCSInterfaceDescriptor, &info, NULL); - } - - -inline TInt RDevUsbcClient::SetCSEndpointDescriptorBlock(TInt aSettingNumber, TInt aEndpointNumber, - const TDesC8& aEndpointDescriptor) - { - TCSDescriptorInfo info = {aSettingNumber, aEndpointNumber, const_cast(&aEndpointDescriptor), - aEndpointDescriptor.Size()}; - return DoControl(EControlSetCSEndpointDescriptor, &info, NULL); - } - - -inline TInt RDevUsbcClient::SetDeviceControl() - { - return DoControl(EControlSetDeviceControl); - } - - -inline TInt RDevUsbcClient::ReleaseDeviceControl() - { - return DoControl(EControlReleaseDeviceControl); - } - - -inline TInt RDevUsbcClient::GetStringDescriptorLangId(TUint16& aLangId) - { - TPckgBuf p; - const TInt r = DoControl(EControlGetStringDescriptorLangId, &p); - if (r == KErrNone) - aLangId = p(); - return r; - } - - -inline TInt RDevUsbcClient::SetStringDescriptorLangId(TUint16 aLangId) - { - return DoControl(EControlSetStringDescriptorLangId, (TAny*)(TUint)aLangId); - } - - -inline TInt RDevUsbcClient::GetManufacturerStringDescriptor(TDes16& aString) - { - TPtr8 name_8(const_cast(reinterpret_cast(aString.Ptr())), aString.MaxSize()); - const TInt r = DoControl(EControlGetManufacturerStringDescriptor, &name_8); - aString.SetLength(name_8.Size()/2); - return r; - } - - -inline TInt RDevUsbcClient::SetManufacturerStringDescriptor(const TDesC16& aString) - { - TPtrC8 name_8(reinterpret_cast(aString.Ptr()), aString.Size()); - return DoControl(EControlSetManufacturerStringDescriptor, &name_8); - } - - -inline TInt RDevUsbcClient::RemoveManufacturerStringDescriptor() - { - return DoControl(EControlRemoveManufacturerStringDescriptor); - } - - -inline TInt RDevUsbcClient::GetProductStringDescriptor(TDes16& aString) - { - TPtr8 name_8(const_cast(reinterpret_cast(aString.Ptr())), aString.MaxSize()); - const TInt r = DoControl(EControlGetProductStringDescriptor, &name_8); - aString.SetLength(name_8.Size()/2); - return r; - } - - -inline TInt RDevUsbcClient::SetProductStringDescriptor(const TDesC16& aString) - { - TPtrC8 name_8(reinterpret_cast(aString.Ptr()), aString.Size()); - return DoControl(EControlSetProductStringDescriptor, &name_8); - } - - -inline TInt RDevUsbcClient::RemoveProductStringDescriptor() - { - return DoControl(EControlRemoveProductStringDescriptor); - } - - -inline TInt RDevUsbcClient::GetSerialNumberStringDescriptor(TDes16& aString) - { - TPtr8 name_8(const_cast(reinterpret_cast(aString.Ptr())), aString.MaxSize()); - const TInt r = DoControl(EControlGetSerialNumberStringDescriptor, &name_8); - aString.SetLength(name_8.Size()/2); - return r; - } - - -inline TInt RDevUsbcClient::SetSerialNumberStringDescriptor(const TDesC16& aString) - { - TPtrC8 name_8(reinterpret_cast(aString.Ptr()), aString.Size()); - return DoControl(EControlSetSerialNumberStringDescriptor, &name_8); - } - - -inline TInt RDevUsbcClient::RemoveSerialNumberStringDescriptor() - { - return DoControl(EControlRemoveSerialNumberStringDescriptor); - } - - -inline TInt RDevUsbcClient::GetConfigurationStringDescriptor(TDes16& aString) - { - TPtr8 name_8(const_cast(reinterpret_cast(aString.Ptr())), aString.MaxSize()); - const TInt r = DoControl(EControlGetConfigurationStringDescriptor, &name_8); - aString.SetLength(name_8.Size() / 2); - return r; - } - - -inline TInt RDevUsbcClient::SetConfigurationStringDescriptor(const TDesC16& aString) - { - TPtrC8 name_8(reinterpret_cast(aString.Ptr()), aString.Size()); - return DoControl(EControlSetConfigurationStringDescriptor, &name_8); - } - - -inline TInt RDevUsbcClient::RemoveConfigurationStringDescriptor() - { - return DoControl(EControlRemoveConfigurationStringDescriptor); - } - - -inline TInt RDevUsbcClient::GetStringDescriptor(TUint8 aIndex, TDes16& aString) - { - TPtr8 name_8(const_cast(reinterpret_cast(aString.Ptr())), aString.MaxSize()); - const TInt r = DoControl(EControlGetStringDescriptor, (TAny*)(TUint)aIndex, &name_8); - aString.SetLength(name_8.Size() / 2); - return r; - } - - -inline TInt RDevUsbcClient::SetStringDescriptor(TUint8 aIndex, const TDesC16& aString) - { - TPtrC8 name_8(reinterpret_cast(aString.Ptr()), aString.Size()); - return DoControl(EControlSetStringDescriptor, (TAny*)(TUint)aIndex, &name_8); - } - - -inline TInt RDevUsbcClient::RemoveStringDescriptor(TUint8 aIndex) - { - return DoControl(EControlRemoveStringDescriptor, (TAny*)(TUint)aIndex); - } - - -inline TInt RDevUsbcClient::AllocateEndpointResource(TInt aEndpoint, TUsbcEndpointResource aResource) - { - return DoControl(EControlAllocateEndpointResource, (TAny*)aEndpoint, (TAny*)aResource); - } - - -inline TInt RDevUsbcClient::DeAllocateEndpointResource(TInt aEndpoint, TUsbcEndpointResource aResource) - { - return DoControl(EControlDeAllocateEndpointResource, (TAny*)aEndpoint, (TAny*)aResource); - } - - -inline TBool RDevUsbcClient::QueryEndpointResourceUse(TInt aEndpoint, TUsbcEndpointResource aResource) - { - return DoControl(EControlQueryEndpointResourceUse, (TAny*)aEndpoint, (TAny*)aResource); - } - - -inline void RDevUsbcClient::ReadUntilShort(TRequestStatus &aStatus, TEndpointNumber aEndpoint, TDes8 &aDes) - { - TInt ep = (aEndpoint < 0 || aEndpoint > KMaxEndpointsPerClient) ? KInvalidEndpointNumber : aEndpoint; - TEndpointTransferInfo info = {&aDes, ETransferTypeReadUntilShort, aDes.MaxLength()}; - DoRequest(ep, aStatus, &info, NULL); - } - - -inline void RDevUsbcClient::ReadUntilShort(TRequestStatus &aStatus, TEndpointNumber aEndpoint, TDes8 &aDes, - TInt aLen) - { - TInt ep = (aEndpoint < 0 || aEndpoint > KMaxEndpointsPerClient) ? KInvalidEndpointNumber : aEndpoint; - TEndpointTransferInfo info = {&aDes, ETransferTypeReadUntilShort, aLen}; - DoRequest(ep, aStatus, &info, NULL); - } - - -inline void RDevUsbcClient::ReadOneOrMore(TRequestStatus &aStatus, TEndpointNumber aEndpoint, TDes8 &aDes) - { - TInt ep = (aEndpoint < 0 || aEndpoint > KMaxEndpointsPerClient) ? KInvalidEndpointNumber : aEndpoint; - TEndpointTransferInfo info = {&aDes, ETransferTypeReadOneOrMore, aDes.MaxLength()}; - DoRequest(ep, aStatus, &info, NULL); - } - - -inline void RDevUsbcClient::ReadOneOrMore(TRequestStatus &aStatus, TEndpointNumber aEndpoint, TDes8 &aDes, - TInt aLen) - { - TInt ep = (aEndpoint < 0 || aEndpoint > KMaxEndpointsPerClient) ? KInvalidEndpointNumber : aEndpoint; - TEndpointTransferInfo info = {&aDes, ETransferTypeReadOneOrMore, aLen}; - DoRequest(ep, aStatus, &info, NULL); - } - - -inline void RDevUsbcClient::Read(TRequestStatus &aStatus, TEndpointNumber aEndpoint, TDes8 &aDes) - { - TInt ep = (aEndpoint < 0 || aEndpoint > KMaxEndpointsPerClient) ? KInvalidEndpointNumber : aEndpoint; - TEndpointTransferInfo info = {&aDes, ETransferTypeReadData, aDes.MaxLength()}; - DoRequest(ep, aStatus, &info, NULL); - } - - -inline void RDevUsbcClient::Read(TRequestStatus &aStatus, TEndpointNumber aEndpoint, TDes8 &aDes, TInt aLen) - { - TInt ep = (aEndpoint < 0 || aEndpoint > KMaxEndpointsPerClient) ? KInvalidEndpointNumber : aEndpoint; - TEndpointTransferInfo info = {&aDes, ETransferTypeReadData, aLen}; - DoRequest(ep, aStatus, &info, NULL); - } - - -inline void RDevUsbcClient::ReadPacket(TRequestStatus &aStatus, TEndpointNumber aEndpoint, TDes8 &aDes, - TInt aMaxLen) - { - TInt ep = (aEndpoint < 0 || aEndpoint > KMaxEndpointsPerClient) ? KInvalidEndpointNumber : aEndpoint; - TEndpointTransferInfo info = {&aDes, ETransferTypeReadPacket, aMaxLen}; - DoRequest(ep, aStatus, &info, NULL); - } - - -inline void RDevUsbcClient::Write(TRequestStatus &aStatus, TEndpointNumber aEndpoint, const TDesC8& aDes, - TInt aLen, TBool aZlpRequired) - { - TInt ep = (aEndpoint < 0 || aEndpoint > KMaxEndpointsPerClient) ? KInvalidEndpointNumber : aEndpoint; - TEndpointTransferInfo info = {const_cast(&aDes), ETransferTypeWrite, aLen, aZlpRequired}; - DoRequest(ep, aStatus, &info, NULL); - } - - -inline void RDevUsbcClient::AlternateDeviceStatusNotify(TRequestStatus& aStatus, TUint& aValue) - { - DoRequest(ERequestAlternateDeviceStatusNotify, aStatus, &aValue); - } - - -inline void RDevUsbcClient::ReEnumerate(TRequestStatus& aStatus) - { - DoRequest(ERequestReEnumerate, aStatus); - } - - -inline void RDevUsbcClient::EndpointStatusNotify(TRequestStatus& aStatus, TUint& aEndpointMask) - { - DoRequest(ERequestEndpointStatusNotify, aStatus, &aEndpointMask); - } - - -inline void RDevUsbcClient::ReadCancel(TEndpointNumber aEndpoint) - { - if (aEndpoint < 0 || aEndpoint > KMaxEndpointsPerClient) - return; - DoCancel(1 << aEndpoint); - } - - -inline void RDevUsbcClient::WriteCancel(TEndpointNumber aEndpoint) - { - ReadCancel(aEndpoint); - } - - -inline void RDevUsbcClient::EndpointTransferCancel(TUint aEndpointMask) - { - /* Mask off non-endpoint cancels */ - DoCancel(aEndpointMask & ERequestAllCancel); - } - - -inline void RDevUsbcClient::AlternateDeviceStatusNotifyCancel() - { - DoCancel(ERequestAlternateDeviceStatusNotifyCancel); - } - - -inline void RDevUsbcClient::ReEnumerateCancel() - { - DoCancel(ERequestReEnumerateCancel); - } - - -inline void RDevUsbcClient::EndpointStatusNotifyCancel() - { - DoCancel(ERequestEndpointStatusNotifyCancel); - } - -inline TInt RDevUsbcClient::GetOtgFeatures(TUint8& aFeatures) - { - TPckgBuf p; - TInt r = DoControl(EControlGetOtgFeatures, &p); - if (r == KErrNone) - aFeatures = p(); - return r; - } - - -inline void RDevUsbcClient::OtgFeaturesNotify(TRequestStatus& aStatus, TUint8& aValue) - { - DoRequest(ERequestOtgFeaturesNotify, aStatus, &aValue); - } - - -inline void RDevUsbcClient::OtgFeaturesNotifyCancel() - { - DoCancel(ERequestOtgFeaturesNotifyCancel); - } - - -#endif // #ifndef __KERNEL_MODE__ - -#endif // #ifndef __D32USBC_INL__ diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/d32usbcsc.h --- a/usbdrv/peripheral/public/d32usbcsc.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1558 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32\include\d32usbcsc.h -// User side class definitions for USB Device support. -// -// - -/** - @file d32usbcsc.h - @publishedPartner - @released -*/ - -#ifndef __D32USBCSC_H__ -#define __D32USBCSC_H__ - -#include -#include -#include - - -/** This means that SetInterface was called after RealizeInterface had been called. - RealizeInterface is meant to signal that all interfaces have been set. -*/ -const TInt KErrUsbAlreadyRealized = -6813; //Changed from -6713 for future compatibility with the d32usbcshared.h file - -const TInt KErrAlternateSettingChanged = -6814; - - -const TUint KChunkCellSize = 1; //1 32 bit integer -const TInt KEpDescPacketSizeOffset = 4; - -/** The user side enpoint number of Endpoint Zero. */ -const TInt KEp0Number = 0; - -/* Used in TUsbcScHdrEndpointRecord to describe the endpoint type -*/ - -const TUint8 KUsbScHdrEpDirectionIn=1; -const TUint8 KUsbScHdrEpDirectionOut=2; -const TUint8 KUsbScHdrEpDirectionBiDir=3; - - -const TUint8 KUsbScHdrEpTypeControl = 0; -const TUint8 KUsbScHdrEpTypeIsochronous =1; -const TUint8 KUsbScHdrEpTypeBulk = 2; -const TUint8 KUsbScHdrEpTypeInterrupt = 3; -const TUint8 KUsbScHdrEpTypeUnknown = ~0; -/** Used in the the Shared Chunk Header, to represent an endpoint. -*/ -class TUsbcScHdrEndpointRecord - { -public: - inline TUsbcScHdrEndpointRecord(TInt aBufferNo, TUint8 aType); - inline TUint Direction() const; - inline TUint Type() const; -public: - TUint8 iBufferNo; - TUint8 iType; - TUint16 iReserved; - }; - - -// This is used to hold the geometry of the shared buffers -class TUsbcScBufferRecord - { - friend class DLddUsbcScChannel; - -public: - inline TUint Offset() const; - inline TUint Size() const; -private: - inline void Set(TUint aOffset, TUint aEndOffset); - TUint iOffset; - TUint iSize; - }; - -struct SUsbcScBufferHeader - { - TInt iHead; // Where the LDD will next write a transfer - TInt iTail; // Indicates the fist packet that user side is processing (anything prior is disposable) - TInt iBilTail; // This is not used by LDD at all, but just for the BIL's benifit. - }; - - -struct SUsbcScAlternateSetting - { - TUint16 iSetting; - TUint16 iSequence; - }; - -/** Endpoint pair information. This can be used to control pairing of endpoint -for classes that require explicit pairing of endpoint, such as ADC. - -This is currently not used. -*/ - -class TEndpointPairInfo -{ -public: - TEndpointPairInfo(TUint8 aType=0, TUint16 aPair=0, TUint8 aSpare=0); -public: - TUint8 iType; - TUint8 iSpare; - TUint16 iPair; -}; - -/** -This is the buffer number reserved for use with endpoint zero with the ReadDataNotify and WriteData methods. -*/ -const TInt KUsbcScEndpointZero = -1; - -/** -This flag is reserved in TUsbcscEndpointInfo::iFlags, to indicate that the client driver's client wishes reads to operate in a coupled fashion. -This behaviour is not currently supported. -*/ -const TUint KUsbScCoupledRead = 0x1; - -/** -This flag, used in parameter aFlag of WriteData, is used to indicate that a ZLP should be sent. -*/ -const TUint KUsbcScWriteFlagsZlp = 0x0001; - - -// Bit fields used in iFlags of TUsbcScTransferHeader - -const TUint KUsbcScShortPacket = 0x0001; -const TUint KUsbcScStateChange = 0x0004; - -class TUsbcScTransferHeader -{ -public: -#ifdef _DEBUG - TUint iHashId; - TUint iSequence; -#endif - TUint iBytes; - TUint iFlags; - TUint iNext; - TUint16 iAltSettingSeq; - TInt16 iAltSetting; - union - { - TUint i[1]; // Extends - TUint8 b[4]; // Extends - } iData; -}; - -/** The desired endpoint capabilities used in RDevUsbcScClient::SetInterface(). - -This derived class has additional fields used in the shared chunk USB driver. -*/ -class TUsbcScEndpointInfo: public TUsbcEndpointInfo - { -public: - TUsbcScEndpointInfo(TUint aType=UsbShai::KUsbEpTypeBulk, TUint aDir=UsbShai::KUsbEpDirOut, TInt aInterval=0, TInt aExtra=0, - TUint aBufferSize=0, TUint aReadSize=0); - - -public: - /** This indicates the requested size of the endpoint buffer and must be at - least as large as iReadSize. - */ - TUint iBufferSize; - - /** This is the amount of data that the LDD reads from the bus before it sets - up another read and is normally intended to read many packets. - */ - TUint iReadSize; - - /** TEndpointPairInfo represents pairing information for isochronous endpoints. - Should be zero in other cases. If this specifies paired endpoints then - iExtra (in the base class TUsbcEndpointInfo) also needs to be set to the - class specific size for this endpoint descriptor (This is here only for future use). - */ - TEndpointPairInfo iPairing; - - /** The necessary alignment, in bytes, that needs to be applied to the transfer start points - of the data. This is only observed on OUT endpoints. Zero can be specified to indicate - there are no class side requirements for alignment. The alignment for OUT endpoints is - which ever is greater of this field or the USB hardware requirements. - */ - TUint iAlignment; - - /** Flags to indicate how the endpoint should function. None currently defined, - but could be used to allow support for direct read. - */ - TUint iFlags; - - /** Reserved for future use. */ - TUint32 iReserved2[2]; - }; - -/** This must be filled in prior to a call to RDevUsbcClient::SetInterface(). -*/ -class TUsbcScInterfaceInfo - { -public: - TUsbcScInterfaceInfo(TInt aClass=0, TInt aSubClass=0, TInt aProtocol=0, - TDesC16* aString=NULL, TUint aTotalEndpoints=0); -public: - /** The class, subclass and protocol that this interface supports. */ - TUsbcClassInfo iClass; - /** The description string for the interface. Used to construct the interface string descriptor. */ - const TDesC16* iString; - /** Total number of endpoints being requested (0-5). Endpoint 0 should not be included in this number. */ - TUint iTotalEndpointsUsed; - /** Desired properties of the endpoints requested. - Do NOT include endpoint 0. - APIs use endpoint numbers that are offsets into this array. - */ - TUsbcScEndpointInfo iEndpointData[KMaxEndpointsPerClient]; - /** 32 flag bits used for specifying miscellaneous Interface features. - Currently defined are: - - KUsbcInterfaceInfo_NoEp0RequestsPlease = 0x00000001 - */ - TUint32 iFeatureWord; - }; - -/** Package buffer for a TUsbcInterfaceInfo object. - - @see TUsbcInterfaceInfo -*/ -typedef TPckgBuf TUsbcScInterfaceInfoBuf; - -struct TUsbcScChunkHdrOffs - { - TUint iBuffers; - TUint iAltSettings; - }; - - -class TUsbcScChunkBuffersHeader // Not instantiable - { - friend class DLddUsbcScChannel; - friend class TRealizeInfo; - -public: - inline TUsbcScBufferRecord* Ep0Out() const; - inline TUsbcScBufferRecord* Ep0In() const; - inline TUsbcScBufferRecord* Buffers(TInt aBuffer) const; - inline TInt NumberOfBuffers() const; - -private: - TUsbcScChunkBuffersHeader(); -private: - TInt iRecordSize; - TInt iNumOfBufs; - TUint8 iBufferOffset[8]; // Extends - }; - -struct TUsbcScChunkAltSettingHeader // Not instantiable - { - TInt iEpRecordSize; - TInt iNumOfAltSettings; - TUint iAltTableOffset[1]; // Extends - }; - -class TEndpointBuffer; - - -/** The user side handle to the USB client driver. -*/ -class RDevUsbcScClient : public RBusLogicalChannel - { -public: - /** @internalComponent */ - enum TVer - { - EMajorVersionNumber = 0, - EMinorVersionNumber = 1, - EBuildVersionNumber = KE32BuildVersionNumber - }; - -// Bit pattern. s = Request/Control. c = Cancel, m = mode bits, B = Buffer number, R = request number. -// scmm mmmm | mmmm mmmm | mmBB BBBB |RRRR RRRR - - enum TRequest - { - ERequestWriteData = 1, - ERequestReadDataNotify = 2, - ERequestAlternateDeviceStatusNotify = 3, - ERequestReEnumerate = 4, - ERequestEndpointStatusNotify = 5, - ERequestOtgFeaturesNotify = 6, - ERequestMaxRequests, // 7 - - ERequestCancel = 0x40000000, - - ERequestWriteDataCancel = ERequestWriteData | ERequestCancel, - ERequestReadDataNotifyCancel = ERequestReadDataNotify | ERequestCancel, - ERequestAlternateDeviceStatusNotifyCancel = ERequestAlternateDeviceStatusNotify | ERequestCancel, - ERequestReEnumerateCancel = ERequestReEnumerate | ERequestCancel, - ERequestEndpointStatusNotifyCancel = ERequestEndpointStatusNotify | ERequestCancel, - ERequestOtgFeaturesNotifyCancel = ERequestOtgFeaturesNotify | ERequestCancel - }; - - enum TControl - { - // Changing the order of these enums will break BC. - EControlEndpointZeroRequestError, // 00 - EControlEndpointCaps, - EControlDeviceCaps, - EControlGetAlternateSetting, - EControlDeviceStatus, - EControlEndpointStatus, - EControlSetInterface, - EControlReleaseInterface, - EControlSendEp0StatusPacket, - EControlHaltEndpoint, // 09 - // - EControlClearHaltEndpoint, // 10 - EControlSetDeviceControl, - EControlReleaseDeviceControl, - EControlEndpointZeroMaxPacketSizes, - EControlSetEndpointZeroMaxPacketSize, - EControlGetDeviceDescriptor, - EControlSetDeviceDescriptor, - EControlGetDeviceDescriptorSize, - EControlGetConfigurationDescriptor, - EControlSetConfigurationDescriptor, // 19 - // - EControlGetConfigurationDescriptorSize, // 20 - EControlGetInterfaceDescriptor, - EControlSetInterfaceDescriptor, - EControlGetInterfaceDescriptorSize, - EControlGetEndpointDescriptor, - EControlSetEndpointDescriptor, - EControlGetEndpointDescriptorSize, - EControlGetCSInterfaceDescriptor, - EControlSetCSInterfaceDescriptor, - EControlGetCSInterfaceDescriptorSize, // 29 - // - EControlGetCSEndpointDescriptor, // 30 - EControlSetCSEndpointDescriptor, - EControlGetCSEndpointDescriptorSize, - EControlSignalRemoteWakeup, - EControlGetStringDescriptorLangId, - EControlSetStringDescriptorLangId, - EControlGetManufacturerStringDescriptor, - EControlSetManufacturerStringDescriptor, - EControlRemoveManufacturerStringDescriptor, - EControlGetProductStringDescriptor, // 39 - // - EControlSetProductStringDescriptor, // 40 - EControlRemoveProductStringDescriptor, - EControlGetSerialNumberStringDescriptor, - EControlSetSerialNumberStringDescriptor, - EControlRemoveSerialNumberStringDescriptor, - EControlGetConfigurationStringDescriptor, - EControlSetConfigurationStringDescriptor, - EControlRemoveConfigurationStringDescriptor, - EControlDeviceDisconnectFromHost, - EControlDeviceConnectToHost, // 49 - // - EControlDevicePowerUpUdc, // 50 - EControlDumpRegisters, - EControlAllocateEndpointResource, - EControlDeAllocateEndpointResource, - EControlQueryEndpointResourceUse, - EControlGetEndpointZeroMaxPacketSize, - EControlGetDeviceQualifierDescriptor, - EControlSetDeviceQualifierDescriptor, - EControlGetOtherSpeedConfigurationDescriptor, - EControlSetOtherSpeedConfigurationDescriptor, // 59 - // - EControlCurrentlyUsingHighSpeed, // 60 - EControlSetStringDescriptor, - EControlGetStringDescriptor, - EControlRemoveStringDescriptor, - EControlSetOtgDescriptor, - EControlGetOtgDescriptor, - EControlGetOtgFeatures, - EControlRealizeInterface, - EControlStartNextInAlternateSetting - }; - - - // const static TUint KFieldIdPos = 0; - const static TUint KFieldIdMask = 0xFF; - const static TUint KFieldBuffPos = 8; - const static TUint KFieldBuffMask = 0x3F; - const static TUint KFieldFlagsPos = 14; - const static TUint KFieldFlagsMask = 0xFFFF; - - -public: - -#ifndef __KERNEL_MODE__ - - /** Opens a channel. - - @param aUnit This should be 0 (zero). - - @return KErrNone if successful. - */ - inline TInt Open(TInt aUnit); - - inline TVersion VersionRequired() const; - - /** Stalls ep0 to signal command fault to the host. - - @return KErrNone if successful. - */ - inline TInt EndpointZeroRequestError(); - - /** Retrieves the capabilities of all the endpoints on the device. - - Suggested use is as follows: - - @code - TUsbcEndpointData data[KUsbcMaxEndpoints]; - TPtr8 dataPtr(reinterpret_cast(data), sizeof(data), sizeof(data)); - ret = usbPort.EndpointCaps(dataPtr); - @endcode - - @param aEpCapsBuf A descriptor encapsulating an array of TUsbcEndpointData. - - @return KErrNone if successful. - */ - inline TInt EndpointCaps(TDes8& aEpCapsBuf); - - /** Retrieves the capabilities of the USB device. - - @see TUsbDeviceCaps - - @param aDevCapsBuf A TUsbDeviceCaps object. - - @return KErrNone if successful. - */ - inline TInt DeviceCaps(TUsbDeviceCaps& aDevCapsBuf); - - /** Copies the current alternate setting for this interface into aInterfaceNumber - For USB Interfaces whose main interface is active, this will be 0 (zero). - - @param aInterfaceNumber Current alternate setting for this interface is copied into this. - - @return KErrNone if successful. - */ - inline TInt GetAlternateSetting(TInt& aInterfaceNumber); - - /** Copies the current device status into aDeviceStatus. - - @param aDeviceStatus Current device status is copied into this. - - @return KErrNone if successful - */ - inline TInt DeviceStatus(TUsbcDeviceState& aDeviceStatus); - - /** Copies the current endpoint status into aEndpointStatus. - - @param aEndpoint Endpoint number valid for the current alternate setting. - @param aEndpointStatus The current endpoint status, might be stalled, not stalled or unknown. - - @return KErrNone if successful. - */ - inline TInt EndpointStatus(TInt aEndpoint, TEndpointState& aEndpointStatus); - - - /** Requests that a zero length status packet be sent to the host in response - to a class or vendor specific ep0 SETUP packet. - - @return KErrNone if successful. - */ - inline TInt SendEp0StatusPacket(); - - /** Stalls endpoint aEndpoint, usually to indicate an error condition with a previous command. - The host will normally send a SET_FEATURE command on ep0 to acknowledge and clear the stall. - - @return KErrNone if successful. - */ - inline TInt HaltEndpoint(TInt aEndpoint); - - /** Clears the stall condition on endpoint aEndpoint. This is inluded for symmetry and test purposes. - - @return KErrNone if successful. - */ - inline TInt ClearHaltEndpoint(TInt aEndpoint); - - /** Requests that device control be allocated to this channel. - - @return KErrNone if successful. - */ - inline TInt SetDeviceControl(); - - /** Relinquishes device control previously allocated to this channel. - - @return KErrNone if successful. - */ - inline TInt ReleaseDeviceControl(); - - /** Returns a bitmap of available ep0 maximum packet sizes. - - @return bitmap of available ep0 maximum packet sizes. - */ - inline TUint EndpointZeroMaxPacketSizes(); - - /** Requests that a maximum packet size of aMaxPacketSize be set on ep0. - - @param aMaxPacketSize The maximum packet size. - - @return KErrNone if successful. - */ - inline TInt SetEndpointZeroMaxPacketSize(TInt aMaxPacketSize); - - /** Queries the current maximum packet size on ep0. - - @return The currently set maximum packet size on ep0. - */ - inline TInt GetEndpointZeroMaxPacketSize(); - - /** Copies the current device descriptor into aDeviceDescriptor. - - @param aDeviceDescriptor Receives the current device descriptor. - - @return KErrNone if successful. - */ - inline TInt GetDeviceDescriptor(TDes8& aDeviceDescriptor); - - /** Sets the contents of aDeviceDescriptor to be the current device descriptor. - - @param aDeviceDescriptor Contains the device descriptor. - - @return KErrNone if successful. - */ - inline TInt SetDeviceDescriptor(const TDesC8& aDeviceDescriptor); - - /** Gets the size of the current device descriptor. This is unlikely to be anything other than 9. - - @param aSize Receives the size of the current device descriptor. - - @return KErrNone if successful. - */ - inline TInt GetDeviceDescriptorSize(TInt& aSize); - - /** Copies the current configuration descriptor into aConfigurationDescriptor. - - @param aConfigurationDescriptor Receives the current configuration descriptor. - - @return KErrNone if successful. - */ - inline TInt GetConfigurationDescriptor(TDes8& aConfigurationDescriptor); - - /** Sets the contents of aConfigurationDescriptor to be the current configuration descriptor. - - @param aConfigurationDescriptor Contains the configuration descriptor. - - @return KErrNone if successful. - */ - inline TInt SetConfigurationDescriptor(const TDesC8& aConfigurationDescriptor); - - /** Gets the size of the current configuration descriptor. - - @param aSize Receives the size of the current configuration descriptor. - - @return KErrNone if successful. - */ - inline TInt GetConfigurationDescriptorSize(TInt& aSize); - - /** Copies the interface descriptor into aInterfaceDescriptor for the interface with alternate - setting aSettingNumber, 0 for the main interface. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aInterfaceDescriptor Receives the interface descriptor. - - @return KErrNone if successful. - */ - inline TInt GetInterfaceDescriptor(TInt aSettingNumber, TDes8& aInterfaceDescriptor); - - /** Sets the interface descriptor contained in aInterfaceDescriptor for the interface with - alternate setting aSettingNumber, 0 for the main interface, for transmission to the host - during enumeration. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aInterfaceDescriptor Contains the interface descriptor to be set. - - @return KErrNone if successful. - */ - inline TInt SetInterfaceDescriptor(TInt aSettingNumber, const TDesC8& aInterfaceDescriptor); - - /** Copies the size of the interface descriptor for the interface with alternate - setting aSettingNumber, 0 for the main interface, into aSize. - - @param aSettingNumber The alternate setting. - @param aSize receives the size of the interface descriptor. - - @return KErrNone if successful. - */ - inline TInt GetInterfaceDescriptorSize(TInt aSettingNumber, TInt& aSize); - - /** Copies the endpoint descriptor for logical endpoint number aEndpointNumber into aEndpointDescriptor - for the interface with alternate setting aSettingNumber, 0 for the main interface. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aEndpointNumber The endpoint number of the endpoint. - @param aEndpointDescriptor Receives the endpoint descriptor. - - @return KErrNone if successful. - */ - inline TInt GetEndpointDescriptor(TInt aSettingNumber, TInt aEndpointNumber, TDes8& aEndpointDescriptor); - - /** Sets the endpoint descriptor for logical endpoint number aEndpointNumber contained in - aEndpointDescriptor for the interface with alternate setting aSettingNumber, 0 for the main interface, - for transmission to the host during enumeration. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aEndpointNumber Valid endpoint number on this interface. - @param aEndpointDescriptor Contains the endpoint descriptor to be set. - - @return KErrNone if successful. - */ - inline TInt SetEndpointDescriptor(TInt aSettingNumber, TInt aEndpointNumber, - const TDesC8& aEndpointDescriptor); - - /** Copies the size of the endpoint descriptor for logical endpoint number aEndpointNumber for the - interface with alternate setting aSettingNumber, 0 for the main interface, into aSize. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aEndpointNumber Valid endpoint number on this interface. - @param aSize Receives the size of the endpoint descriptor. - - @return KErrNone if successful. - */ - inline TInt GetEndpointDescriptorSize(TInt aSettingNumber, TInt aEndpointNumber, TInt& aSize); - - /** Get OTG descriptor size - - @param aSize TInt Reference which contains OTG descriptor size on return. - */ - inline void GetOtgDescriptorSize(TInt& aSize); - - /** Get OTG descriptor of USB on-the-go feature. - - @param aOtgDesc User-side buffer to store copy of descriptor. - - @return KErrNone if successful. - */ - inline TInt GetOtgDescriptor(TDes8& aOtgDesc); - - /** Set OTG descriptor by user to enable/disable USB on-the-go feature. - - @param aOtgDesc Descriptor buffer containing OTG features. - - @return KErrNone if successful. - */ - inline TInt SetOtgDescriptor(const TDesC8& aOtgDesc); - - /** Copies the current device_qualifier descriptor into aDescriptor. - - @param aDescriptor Receives the current device_qualifier descriptor. - - @return KErrNone if successful. - */ - inline TInt GetDeviceQualifierDescriptor(TDes8& aDescriptor); - - /** Sets the device_qualifier descriptor to the contents of aDescriptor. - - @param aDescriptor Contains the new device_qualifier descriptor. - - @return KErrNone if successful. - */ - inline TInt SetDeviceQualifierDescriptor(const TDesC8& aDescriptor); - - /** Copies the current other_speed_configuration descriptor into aDescriptor. - - @param aDescriptor Receives the current other_speed_configuration descriptor. - - @return KErrNone if successful. - */ - inline TInt GetOtherSpeedConfigurationDescriptor(TDes8& aDescriptor); - - /** Sets the other_speed_configuration descriptor to the contents of aDescriptor. - - @param aDescriptor Contains the new other_speed_configuration descriptor. - - @return KErrNone if successful. - */ - inline TInt SetOtherSpeedConfigurationDescriptor(const TDesC8& aDescriptor); - - /** Copies the class specific interface descriptor block into aInterfaceDescriptor for the interface - with alternate setting aSettingNumber, 0 for the main interface. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aInterfaceDescriptor Contains the interface descriptor to be set. - - @return KErrNone if successful. - */ - inline TInt GetCSInterfaceDescriptorBlock(TInt aSettingNumber, TDes8& aInterfaceDescriptor); - - /** aSettingNumber is the alternate interface setting, 0 for the main interface, that the descriptor block - aDes should be attached to. aDes is a block of data containing at least one class specific descriptor - for transmission during enumeration after the class interface descriptor (or alternate interface - descriptor) has been sent, but before the endpoint descriptors belonging to this interface are sent. - aDes may contain as many descriptors as are necessary or only one. SetCSInterfaceDescriptorBlock() - should be called at any time after SetInterface() has been called to establish a main interface or an - alternate interface. More than one call may be made - the data blocks will be concatenated prior to - sending. No checking or validation of the contents of aDes will be made and it is the caller's - responsibility to ensure that the data supplied is correct and appropriate to the interface identified - by aSettingNumber. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aInterfaceDescriptor Contains the interface descriptor to be set. - - @return KErrNone if successful. - */ - inline TInt SetCSInterfaceDescriptorBlock(TInt aSettingNumber, const TDesC8& aInterfaceDescriptor); - - /** Copies the size of the class specific interface descriptor block for the interface with alternate - setting aSettingNumber, 0 for the main interface, into aSize. - - @param aSettingNumber The alternate setting number. - @param aSize receives the size of the interface descriptor. - - @return KErrNone if successful. - */ - inline TInt GetCSInterfaceDescriptorBlockSize(TInt aSettingNumber, TInt& aSize); - - /** Copies the class specific endpoint descriptor for logical endpoint number aEndpointNumber - into aEndpointDescriptor for the interface with alternate setting aSettingNumber, 0 for the main - interface. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aEndpointNumber Valid endpoint number on this interface. - @param aEndpointDescriptor Receives the endpoint descriptor. - - @return KErrNone if successful. - */ - inline TInt GetCSEndpointDescriptorBlock(TInt aSettingNumber, TInt aEndpointNumber, - TDes8& aEndpointDescriptor); - - /** Sets the class specific endpoint descriptor for logical endpoint number aEndpointNumber contained in - aEndpointDescriptor for the interface with alternate setting aSettingNumber, 0 for the main interface, - for transmission to the host during enumeration. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aEndpointNumber Valid endpoint number on this interface. - @param aEndpointDescriptor Contains the endpoint descriptor to be set. - - @return KErrNone if successful. - */ - inline TInt SetCSEndpointDescriptorBlock(TInt aSettingNumber, TInt aEndpointNumber, - const TDesC8& aEndpointDescriptor); - - /** Copies the size of the class specific endpoint descriptor block for logical endpoint number - aEndpointNumber for the interface with alternate setting aSettingNumber, 0 for the main interface, - into aSize. - - @param aSettingNumber Alternate setting number on the interface, 0 for the main interface. - @param aEndpointNumber Valid endpoint number on this interface. - @param aSize On return, contains the size of the class specific endpoint descriptor block. - - @return KErrNone if successful. - */ - inline TInt GetCSEndpointDescriptorBlockSize(TInt aSettingNumber, TInt aEndpointNumber, TInt& aSize); - - /** Generates a Remote Wakeup bus condition. - The capability of the device to generate Remote Wakeup signalling is enquired in - RDevUsbcClient::DeviceCaps. - - @return KErrNone if this signalling is possible and the signal has been generated. - */ - inline TInt SignalRemoteWakeup(); - - /** Simulates a physical removal of the USB cable by disabling the D+/- pull-ups.The iConnect member of - TUsbDeviceCapsV01, returned by RDevUsbcClient::DeviceCaps(), indicates whether this functionality is - supported. - - @return KErrNone if successful. - */ - inline TInt DeviceDisconnectFromHost(); - - /** Simulates a physical insertion of the USB cable by enabling the D+/- pull-ups.The iConnect member - of TUsbDeviceCapsV01, returned by RDevUsbcClient::DeviceCaps(), indicates whether this functionality - is supported. - - @return KErrNone if successful. - */ - inline TInt DeviceConnectToHost(); - - /** Powers up the UDC and connects it to the bus if one or more interfaces exist. - - @return KErrNone if UDC successfully powered up, KErrNotReady if no - interfaces have been registered yet, KErrHardwareNotAvailable if UDC - couldn't be activated. - */ - inline TInt PowerUpUdc(); - - /** Enquires about the current operating speed of the UDC. - - @return ETrue if the UDC is currently operating at High speed, EFalse otherwise. - */ - inline TBool CurrentlyUsingHighSpeed(); - - /** Allocates the use of aResource to aEndpoint. It will be used from when the current bus transfer has been - completed. - - @param aResource is typically some rationed hardware resource or possibly specifies a type of endpoint - behaviour. aResource is not a bitmap and TEndpointResource values should not be combined. - @param aEndpoint The endpoint number to which the resource is to be allocated. - - @return KErrNone if successful, KErrInUse if the resource is already consumed and cannot be allocated, - KErrNotSupported if the endpoint does not support the resource requested. - - @publishedPartner @deprecated - */ - inline TInt AllocateEndpointResource(TInt aEndpoint, TUsbcEndpointResource aResource); - - /** Deallocates the use of aResource aEndpoint or ends a specified endpoint behaviour. - - @param aResource is typically some rationed hardware resource or possibly specifies a type of endpoint - behaviour. aResource is not a bitmap and TEndpointResource values should not be combined. - @param aEndpoint The endpoint number from which the resource is to be removed. - - @return KErrNone if the resource has been successfully deallocated, KErrNotSupported if the endpoint - does not support the resource requested. - - @publishedPartner @deprecated - */ - inline TInt DeAllocateEndpointResource(TInt aEndpoint, TUsbcEndpointResource aResource); - - /** Queries endpoint resource use. - - @param aResource is typically some rationed hardware resource or possibly specifies a type of endpoint - behaviour. aResource is not a bitmap and TEndpointResource values should not be combined. - @param aEndpoint The endpoint number at which the resource is to be queried. - - @return ETrue is the specified resource is in use at the endpoint and EFalse if not. - */ - inline TBool QueryEndpointResourceUse(TInt aEndpoint, TUsbcEndpointResource aResource); - - /** Request (i.e. claim for this channel) up to five endpoints and set the class type for this USB - interface. 'aInterfaceData' is a package buffer which describes the interface and all the endpoints - being requested by the driver for this interface. - - @param aInterfaceNumber Distinguishes between alternate interfaces. If these are not be used then this - should always be zero. If this parameter is used, then its value must be one more than that of the - proceeding alternate interface. - @param aInterfaceData A package buffer which describes the interface and all the endpoints being - requested by the driver for this interface. - - - @return KErrInUse if any of the endpoints being requested have already been claimed by another channel. - KErrNotSupported if an endpoint with all of the specified properties is not supported on this - platform. KErrNoMemory if insufficient memory is available to complete the operation. - */ - inline TInt SetInterface(TInt aInterfaceNumber, TUsbcScInterfaceInfoBuf& aInterfaceData); - - - /** - This method should be called after SetInterface has been called for all possible alternative settings. - Calling this invalidates further calls to SetInterface. On success, a chunk handle is created and - passed back though aChunk. This is needed for the user side to access the shared chunk where the - data is stored. Note that if you are using the BIL (described later), then FinalizeInterface (...) - should be used instead, which will call this method. - - @return KErrNone on successful completion, or one of the system wide error codes. - */ - inline TInt RealizeInterface(RChunk& aChunk); - - - /** Release an interface previously claimed by this channel. Alternate interfaces need to be released - in strict descending order, starting with the last (i.e. highest numbered) one. - It is not necessary to release an interface that wasn't successfully requested. - - @param aInterfaceNumber Specifies the alternate setting number 'aInterfaceNum' of the interface to be - released. - - @return KErrNone if successful. KErrArgument if the alternate setting doesn't exist or is released out - of order. - */ - inline TInt ReleaseInterface(TInt aInterfaceNumber); - - /** Copies the current string descriptor language ID (LANGID) code into the aLangId argument. Even though - the USB spec allows for the existence of a whole array of LANGID codes, we only support one. - - @param aLangId Receives the LANGID code. - - @return KErrNone if successful, KErrArgument if problem with argument (memory cannot be written to, etc.). - */ - inline TInt GetStringDescriptorLangId(TUint16& aLangId); - - /** Sets the string descriptor language ID (LANGID). Even though the USB spec allows for the existence of - a whole array of LANGID codes, we only support one. - - @param aLangId The LANGID code to be set. - - @return KErrNone if successful. - */ - inline TInt SetStringDescriptorLangId(TUint16 aLangId); - - /** Copies the string descriptor identified by the iManufacturer index field of the Standard Device - Descriptor into the aString argument. - - @param aString Receives manufacturer string. - - @return KErrNone if successful, KErrArgument if MaxLength of aString is too small to hold the entire - descriptor, KErrNotFound if the string descriptor couldn't be found. - */ - inline TInt GetManufacturerStringDescriptor(TDes16& aString); - - /** Sets the string descriptor identified by the iManufacturer index field of the Standard Device - Descriptor to the aString argument. - - @param aString Contains the new manufacturer string descriptor. - - @return KErrNone if successful, KErrNoMemory if no memory is available to store the new string from - aString (in which case the old string descriptor will be preserved). - */ - inline TInt SetManufacturerStringDescriptor(const TDesC16& aString); - - /** Removes (deletes) the string descriptor identified by the iManufacturer index field of the Standard - Device Descriptor and sets that field to zero. - - @return KErrNone if successful, KErrNotFound if the string descriptor couldn't be found. - */ - inline TInt RemoveManufacturerStringDescriptor(); - - /** Retrieves the string descriptor identified by the iProduct index field of the Standard Device - Descriptor into the aString argument. - - @param aString Receives product string. - - @return KErrNone if successful, KErrArgument if MaxLength of aString is too small to hold the entire - descriptor, KErrNotFound if the string descriptor couldn't be found. - */ - inline TInt GetProductStringDescriptor(TDes16& aString); - - /** Sets the string descriptor identified by the iProduct index field of the Standard Device Descriptor to - the aString argument. - - @param aString Contains the new product string descriptor. - - @return KErrNone if successful, KErrNoMemory if no memory is available to store the new string from - aString (in which case the old string descriptor will be preserved). - */ - inline TInt SetProductStringDescriptor(const TDesC16& aString); - - /** Removes (deletes) the string descriptor identified by the iProduct index field of the Standard Device - Descriptor and sets that field to zero. - - @return KErrNone if successful, KErrNotFound if the string descriptor couldn't be found. - */ - inline TInt RemoveProductStringDescriptor(); - - /** Retrieves the string descriptor identified by the iSerialNumber index field of the Standard Device - Descriptor into the aString argument. - - @param aString Receives product string. - - @return KErrNone if successful, KErrArgument if MaxLength of aString is too small to hold the entire - descriptor, KErrNotFound if the string descriptor couldn't be found. - */ - inline TInt GetSerialNumberStringDescriptor(TDes16& aString); - - /** Sets the string descriptor identified by the iSerialNumber index field of the Standard Device - Descriptor to the aString argument. - - @param aString Contains the new serial number string descriptor. - - @return KErrNone if successful, KErrNoMemory if no memory is available to store the new string from - aString (in which case the old string descriptor will be preserved). - */ - inline TInt SetSerialNumberStringDescriptor(const TDesC16& aString); - - /** Removes (deletes) the string descriptor identified by the iSerialNumber index field of the Standard - Device Descriptor and sets that field to zero. - - @return KErrNone if successful, KErrNotFound if the string descriptor couldn't be found. - */ - inline TInt RemoveSerialNumberStringDescriptor(); - - /** Retrieves the string descriptor identified by the iConfiguration index field of the (first) Standard - Configuration Descriptor into the aString argument. - - @param aString Receives configuration string. - - @return KErrNone if successful, KErrArgument if MaxLength of aString is too small to hold the entire - descriptor, KErrNotFound if the string descriptor couldn't be found. - */ - inline TInt GetConfigurationStringDescriptor(TDes16& aString); - - /** Sets the string descriptor identified by the iConfiguration index field of the Standard Configuration - Descriptor to the aString argument. - - @param aString Contains the new serial number string descriptor. - - @return KErrNone if successful, KErrNoMemory if no memory is available to store the new string from - aString (in which case the old string descriptor will be preserved). - */ - inline TInt SetConfigurationStringDescriptor(const TDesC16& aString); - - /** Removes (deletes) the string descriptor identified by the iConfiguration index field of the Standard - Configuration Descriptor and sets that field to zero. - - @return KErrNone if successful, KErrNotFound if the string descriptor couldn't be found. - */ - inline TInt RemoveConfigurationStringDescriptor(); - - /** Copies the string of the USB string descriptor at the specified index in the string descriptor array - into the aString argument. - - Although this function can also be used for it, for querying most standard string descriptors - there exists a set of dedicated access functions. - - @see RDevUsbcClient::GetStringDescriptorLangId - @see RDevUsbcClient::GetManufacturerStringDescriptor - @see RDevUsbcClient::GetProductStringDescriptor - @see RDevUsbcClient::GetSerialNumberStringDescriptor - @see RDevUsbcClient::GetConfigurationStringDescriptor - - @param aIndex The position of the string descriptor in the string descriptor array. - @param aString The target location for the string descriptor copy. - - @return KErrNone if successful, KErrNotFound if no string descriptor exists at the specified index, - KErrArgument if MaxLength() of aString is too small to hold the entire descriptor. - */ - inline TInt GetStringDescriptor(TUint8 aIndex, TDes16& aString); - - /** Sets the aString argument to be the string of a USB string descriptor at the specified index in the - string descriptor array. If a string descriptor already exists at that position then its string will - be replaced. - - Care should be taken, when choosing aIndex, not to inadvertently overwrite one of the standard - string descriptors. For their manipulation there exists a set of dedicated access functions. - - @see RDevUsbcClient::SetStringDescriptorLangId - @see RDevUsbcClient::SetManufacturerStringDescriptor - @see RDevUsbcClient::SetProductStringDescriptor - @see RDevUsbcClient::SetSerialNumberStringDescriptor - @see RDevUsbcClient::SetConfigurationStringDescriptor - - @param aIndex The position of the string descriptor in the string descriptor array. - @param aString Contains the string descriptor to be set. - - @return KErrNone if successful, KErrArgument if aIndex is invalid, KErrNoMemory if no memory - is available to store the new string (an existing descriptor at that index will be preserved). - */ - inline TInt SetStringDescriptor(TUint8 aIndex, const TDesC16& aString); - - /** Removes (deletes) the USB string descriptor at the specified index in the string descriptor array. - The position in the array of other string descriptors is not affected. - - Care should be taken, when choosing aIndex, not to inadvertently delete a standard string descriptor - (also because index references from non-string descriptors would be invalidated). For the deletion - of most standard string descriptors there exists a set of dedicated functions. - - @see RDevUsbcClient::RemoveManufacturerStringDescriptor - @see RDevUsbcClient::RemoveProductStringDescriptor - @see RDevUsbcClient::RemoveSerialNumberStringDescriptor - @see RDevUsbcClient::RemoveConfigurationStringDescriptor - - @param aIndex The position of the string descriptor in the string descriptor array. - - @return KErrNone if successful, KErrNotFound if no string descriptor exists at the specified index. - */ - inline TInt RemoveStringDescriptor(TUint8 aIndex); - - - - /** Requests notification for when there is data available on the buffer indicated. If the buffer - already has data in it, it will return immediately, otherwise it will block until there is. - - If the BIL methods are being used (recommended), then this method should not be called directly, - using TEndpointBuffer::GetBuffer instead. - - @param aBufferNumber Indicates the buffer for which the caller wishes to know about data - additions. The buffer needed of any given endpoint can be found by inspecting the alternative - setting table, in the chunk header. The location of the buffer can be found by looking at the - buffer offset table, also in the chunk header. - - @param aStatus The request status where notification of completion is directed. KErrCancel is - returned if the asynchronous operation was cancelled. - - @param aLength A preference for the quantity of data to be read. This value is only a - suggestion and my be ignored. The default value of 0 indicates no preference. - - @return KErrNone on success, or KErrArgument if the buffer number is invalid. - */ - inline TInt ReadDataNotify(TInt aBufferNumber, TRequestStatus& aStatus, TInt aLength=0); - - - /** Requests the LDD to write the contents of the given buffer to the USB hardware. Notification is - given when this is complete. More then one write request can be queued on any one endpoint, to allow - for less Hardware idling between buffers. - - If the BIL methods are being used (recommended), then this method should not be called directly, - using TEndpointBuffer::WriteBuffer instead. - - @param aBufferNumber represents the buffer number of the buffer of which the caller has placed the - data. As described with ReadDataNotify(...), details of the buffers can be found in the chunk header. - - @param aStart Represents the start offset of the data within the chunk. This start location must be - aligned to a multiple of the maximum packet size for the endpoint, so that the data can be DMAed - straight out of the buffer. - - @param aLength Represents the amount of data to be sent to the host in bytes. - - @param aFlags Is a bitfield, where bit 0 should be set if a ZLP is to be sent to the host after the - current transaction. All other bits are reserved for future use. -*/ - inline void WriteData(TInt aBufferNumber, TUint aStart, TUint aLength, TUint aFlags, TRequestStatus& aStatus); - - - - /** Cancels an outstanding read request on endpoint buffer aBufferNumber. - - @param aBufferNumber The endpoint buffer number whose read is to be cancelled. - */ - inline void ReadCancel(TInt aBufferNumber); - - - /** Cancels an outstanding write request on endpoint buffer aBufferNumber. - - @param aBufferNumber The endpoint buffer number whose write is to be cancelled. - */ - inline void WriteCancel(TInt aBufferNumber); - - /** Cancels any transfer on any endpoint buffer specified in aBufferMask. - - @code - // Cancel transfer requests on buffers 1, 2, 3 & 4 - usbPort.EndpointTransferCancel(1 | 2 | 4 | 8); - @endcode - - @param aBufferMask bitmap of the endpoint buffer numbers. - */ - inline void EndpointTransferCancel(TUint aBufferMask); - - /** Register for notification when a change of the Interface alternate setting or the USB Controller's - current state occurs. When the alternate setting or the Controller state changes, then the - asynchronous function completes and the current alternate setting number or Controller state is - written back to aValue. If the KUsbAlternateSetting bit is set then the remaining bits are the - alternate setting number. Otherwise aValue is interpreted as a TUsbcDeviceState. - - @see TUsbcDeviceState - - @param aStatus The request status. - @param aValue Receives the alternate setting number or Controller state. - */ - inline void AlternateDeviceStatusNotify(TRequestStatus& aStatus, TUint& aValue); - - /** Completes an AlternateDeviceStatusNotify request. If a request has previously been made then the - status variable is updated with the current device state. - */ - inline void AlternateDeviceStatusNotifyCancel(); - - /** If the channel has changed the grouping of endpoints between interfaces or changed the interface class - type from the defaults then it is necessary to force a re-enumeration. This will typically involve the - Symbian OS device initiating a disconnection and re-connection. This is an asynchronous operation - which will complete when the Controller is successfully configured by the host, i.e. has achieved - UsbShai::EUsbPeripheralStateConfigured. Since it is not known if the operation has failed, at the same time that - a ReEnumerate request is made, a timer should be set up to complete after approximately 5 seconds. It - can be assumed that if the operation has not completed after this time interval then it will not - complete. - - @param aStatus The request status. - */ - inline void ReEnumerate(TRequestStatus& aStatus); - - /** Cancels an outstanding ReEnumerate() request. - */ - inline void ReEnumerateCancel(); - - /** Register for notification when a change in stall status of any of the interface's endpoints occurs, - but not ep0. When a change in stall status occurs, then the asynchronous function completes and the - current stall state is written back to 'aEndpointStatus' as a bit map: Only stall state changes caused - by SET_FEATURE and CLEAR_FEATURE standard commands on ep0 will be notified when this function - completes. After this request completes the request should be re-issued to obtain future - notifications. - - @param aStatus The request status. - @param aEndpointMask A bitmap of the endpoints' stall status. This is filled in when the call completes. - bit 1 represents the interface's virtual endpoint 1, (KUsbcEndpoint1Bit) - bit 2 represents the interface's virtual endpoint 2, (KUsbcEndpoint2Bit) etc. - bit value 0 - not stalled, - bit value 1 - stalled. - */ - inline void EndpointStatusNotify(TRequestStatus& aStatus, TUint& aEndpointMask); - - /** Completes an endpoint status notify request. - */ - inline void EndpointStatusNotifyCancel(); - - /** Get current on-the-go features relating to the ability of device/host pair to - perform OTG role swap. - - @param aFeatures On return it contains features the device currently has. - bit 2 represents b_hnp_enable, (KUsbOtgAttr_B_HnpEnable) - bit 3 represents a_hnp_support, (KUsbOtgAttr_A_HnpSupport) - bit 4 represents a_alt_hnp_support, (KUsbOtgAttr_A_AltHnpSupport) - @return KErrNone if successful, KErrNotSupported if OTG is not supported by - this device, otherwise system-wide error returns. - */ - inline TInt GetOtgFeatures(TUint8& aFeatures); - - /** Register for notification on USB on-the-go features' change. If any OTG feature - is changed, request completes and current feature value is filled in aValue. - - @param aStatus Request status object. - @param aValue On request completion, contains current OTG feature value. - */ - inline void OtgFeaturesNotify(TRequestStatus& aStatus, TUint8& aValue); - - /** Cancel pending OTG feature request. - */ - inline void OtgFeaturesNotifyCancel(); - - /** This function retrieves the alternate setting that the WriteData function can - write to. After a host sets the alternate setting, writes to the IN endpoint - are not permitted by the LDD until this method has been called. - This function is not asynchronous nor blocking, and should not be used to - detect that an alternate setting has happened. - - If the BIL methods are being used (recommended), then this method should not be called directly. - - @return The alternative setting number or KErrInUse if the current alternative - setting is already in use, that is to say that the alternative setting has not changed. - */ - inline TInt StartNextInAlternateSetting(); - - - /*******************************\ - * Buffer Interface Layer (BIL) * - \*******************************/ - - // This following functions, as well as the ones in TEndpointBuffer (below), - // can be considered the BIL. - - - /** - Finalize the interface, creating a chunk for use with reading/writing to endpoints. - FinalizeInterface should be called after all alternate interfaces have been set up with SetInteface. - Any attempt to call SetInterface after this stage will fail. - - @return KErrNone if operation is successfull - System wide error codes if chunk creation failed - */ - IMPORT_C TInt FinalizeInterface(); - - /** - Finalize the interface, creating a chunk for use with reading/writing to endpoints. This - version of the method provides a handle to the chunk, which is needed if the - buffer is to be passed and used by other processes. - FinalizeInterface should be called after all alternate interfaces have been set up with SetInteface. - Any attempt to call SetInterface after this stage will fail. - - @param aChunk On success aChunk points to the created chunk. - @return KErrNone if operation is successfull - System wide error codes if chunk creation failed - */ - IMPORT_C TInt FinalizeInterface(RChunk*& aChunk); - - /** - Opens an endpoint, an endpoint should be opened before any operations are attempted on it. - - @param aEpB On success aEpB will be filled with the relevant details for that endpoint - @param aEpI endpoint number to be opened - @return KErrNone if operation is successfull - KErrNotFound if endpoint number is not valid for current alternate setting - KErrInUse if endpoint is already opened - KErrArgument if endpoint buffer argument passed is already in existence and being used - */ - IMPORT_C TInt OpenEndpoint(TEndpointBuffer & aEpB, TInt aEpI); - - /** - Switches to processing from one Alternate setting to the next. All open endpoints (except EP0) must - be close before this can be called. - - @param aFlush If ETrue, the method will purge the buffers of any data unread for the old setting. - If each endpoint was not read up until KErrEof was reached, then this should be set. - - @return the alternate Setting if operation is successful - KErrInUse if any endpoints in present alternate setting is still open (except Ep0) - KErrNotReady if there is no change in alternate setting - KErrInUse if StartNextInAlternateSetting detects no change in alternate setting. - KErrCorrupt if the buffer structure becomes corrupt. - */ - IMPORT_C TInt StartNextOutAlternateSetting(TBool aFlush); - - /** - Sets aChunk to RChunk currently in use by BIL. - - @param aChunk aChunk will point to RChunk currently in use by BIL - @return KErrNone on success otherwise a system wide error code, if an error has occurred. - */ - IMPORT_C TInt GetDataTransferChunk(RChunk*& aChunk); - -private: - /** @internalTechnology */ - TInt Drain(TUint aBuffer); - /** @internalTechnology */ - TInt Peek(TUint aBuffer); - /** @internalTechnology */ - TInt FindNextAlternateSetting(); - -private: - TUint8 iEndpointStatus; /** @internalTechnology Each bit corresponds to each endpoint's open/close status. */ - RChunk iSharedChunk; /** @internalTechnology The shared chunk in use. */ - TInt iAltSettingSeq; /** @internalTechnology Used to track alternate setting changes. */ - TInt iAlternateSetting; /** @internalTechnology The alternate setting used by OUT endpoints, which may lag that of IN endpoints. */ - TInt iNewAltSetting; /** @internalTechnology Used to track the next alternate setting change on OUT endpoints, - during transition from one to the next. */ - TInt iInAltSetting; /** @internalTechnology The alternate setting used by IN endpoints, which may be ahead of OUT endpoints. */ - - - friend class TEndpointBuffer; -#endif // #ifndef __KERNEL_MODE__ - }; - -#ifndef __KERNEL_MODE__ - - -/** - This class forms part of the Buffer Interface Layer (BIL), which forms the - user side component of the USB Shared Chunk Client. Objects of this type - represent the shared chunk buffer, for a given endpoint. - The method RDevUsbcScClient::OpenEndpoint() should be used to initialise - objects of this type. -*/ -class TEndpointBuffer - { -public: - - /** - This return value used by GetBuffer indicates that the item pointed to by - aBuffer/aOffset represents a state change, instead of endpoint data. - */ - const static TInt KStateChange = 0x01; - -public: - IMPORT_C TEndpointBuffer(); - - /** - Read the next block of data from the Shared chunk buffer. This method should be used if the user wishes to process one block of data at a time. - This method also expires the previously read block, meaning that the memory used by the block of data may be re-used by the system, overwriting it - with new data. - @param aBuffer aBuffer will point to data location in shared chunk - @param aSize aSize will hold the number of valid bytes that can be read - @param aZLP aZLP will indicate whether its a short packet or not - @param aStatus In case of no data available to be read, aStatus will be passed on to LDD, and user side should wait for - asynchronous call ReadDataNotify to return - @param aLength Not used at the moment - @return KErrCompletion if operation is successfull and data is available in the buffer - KErrNone if no data is available to be read - KErrEof if alternate setting has changed - KErrAccessDenied if endpoint is not opened - KErrNotSupported if its an IN endpoint - TEndpointBuffer::KStateChange if the returned data represents a state change (Ep0 only) - */ - IMPORT_C TInt GetBuffer(TAny*& aBuffer,TUint& aSize,TBool& aZLP,TRequestStatus& aStatus,TUint aLength=0); - - /** - Read the next block of data from the Shared chunk buffer. This method should be used if the user wishes to process one block of data at a time. - This method also expires the previously read block, meaning that the memory used by the block of data may be re-used by the system, overwriting it - with new data. - @param aOffset aOffset will point to data offset in shared chunk - @param aSize aSize will hold the number of valid bytes that can be read - @param aZLP aZLP will indicate whether its a short packet or not - @param aStatus In case of no data available to be read, aStatus will be passed on to LDD, and user side should wait for - asynchronous call ReadDataNotify to return - @param aLength Not used at the moment - @return KErrCompletion if operation is successfull and data is available in the buffer - KErrNone if no data is available to be read - KErrEof if alternate setting has changed - KErrAccessDenied if endpoint is not opened - KErrNotSupported if its an IN endpoint - TEndpointBuffer::KStateChange if the returned data represents a state change (Ep0 only) - */ - inline TInt GetBuffer(TUint& aOffset,TUint& aSize,TBool& aZLP,TRequestStatus& aStatus,TUint aLength=0); - - /** - Read the next block of data from the Shared chunk buffer. This method should be used if the user wishes to process more than one block of data - simultaneously. The user must call one of the Expire() methods to free the memory used by the block of data, and make it available for new data. - @param aBuffer aBuffer will point to data location in shared chunk - @param aSize aSize will hold the number of valid bytes that can be read - @param aZLP aZLP will indicate whether its a short packet or not - @param aStatus In case of no data available to be read, aStatus will be passed on to LDD, and user side should wait for - asynchronous call ReadDataNotify to return - @param aLength Not used at the moment - @return KErrCompletion if operation is successfull and data is available in the buffer - KErrNone if no data is available to be read - KErrEof if alternate setting has changed - KErrAccessDenied if endpoint is not opened - KErrNotSupported if its an IN endpoint - TEndpointBuffer::KStateChange if the returned data represents a state change (Ep0 only) - */ - IMPORT_C TInt TakeBuffer(TAny*& aBuffer,TUint& aSize,TBool& aZLP,TRequestStatus& aStatus,TUint aLength=0); - - /** - Used in conjunction with TakeBuffer method. This will make the 'oldest' block of data previously read out using the TakeBuffer method, but not - already expired, to be released back to the system. This block can then be overwritten with new data, when it becomes available. - @return KErrNotSupported if its an IN endpoint - KErrNone if iTail is successfully bumped to the next transfer to be read - */ - - IMPORT_C TInt Expire(); - - /** - Used in conjunction with TakeBuffer method. This function allows blocks to be expired in a different order from which the user read the data out - of the buffer. Note that the system will only reuse blocks up to the point of the oldest non-expired block read. This means that the user must - ensure to expire all blocks in a timely manner to prevent the system from running out of usable memory. - @param aAddress aAddress is the start address of the block of data previously read by the user which can be overwritten. - @return KErrNotSupported if its an IN endpoint - KErrNone if iTail is successfully bumped to the next transfer to be read - KErrNotFound if a 'transfer' with start address of the data block is aAddress is not found - */ - - IMPORT_C TInt Expire(TAny* aAddress); - - /** - Initiates write operation. - @param aBuffer aBuffer will point to data in shared chunk to be written out. aBuffer should be aligned - @param aSize aSize will hold the number of valid bytes to be written out - @param aZLP aZLP will indicate whether a ZLP should be transmitted after writing the data out - @param aStatus This is an asynchronous function and user side should wait on status to know the end of write operation - @return KErrNone if a write is successfully queued - KErrEof if an alternate setting change has occurred, ending this endpoint. - KErrNotSupported if its an OUT endpoint - KErrAccessDenied if endpoint is not opened, or if buffer is out of range - */ - IMPORT_C TInt WriteBuffer(TAny* aBuffer,TUint aSize,TBool aZLP,TRequestStatus& aStatus); - - /** - Initiates write operation. - @param aOffset aOffset will point to offset of data in shared chunk to be written out. - @param aSize aSize will hold the number of valid bytes to be written out - @param aZLP aZLP will indicate whether a ZLP should be transmitted after writing the data out - @param aStatus This is an asynchronous function and user side should wait on status to know the end of write operation - @return KErrNone if a write is successfully queued - KErrEof if an alternate setting change has occurred, ending this endpoint. - KErrNotSupported if its an OUT endpoint - KErrAccessDenied if endpoint is not opened, or if buffer is out of range - */ - IMPORT_C TInt WriteBuffer(TUint aOffset,TUint aSize,TBool aZLP,TRequestStatus& aStatus); - /** - For IN endpoints, this method retrieves the geometry for the buffer, for which the - caller should stay within, when using the WriteBuffer method. - - @param aStart A pointer, which is set to point to the start of the buffer. - @param aSize An TUint for which the size (in bytes) of buffer, is written into. - - @returns KErrNotSupported if the object is on an open IN endpoint, - otherwise it KErrNone is returned on success. - */ - IMPORT_C TInt GetInBufferRange(TAny*& aStart, TUint& aSize); - - /** - For IN endpoints, this method retrieves the geometry for the buffer, for which the - caller should stay within, when using the WriteBuffer method. - - @param aStart A TUint for which the buffer's start offset from the start of the chunk, - in written into. - @param aSize An TUint for which the size (in bytes) of buffer, is written into. - - @returns KErrNotSupported if the object is on an open IN endpoint, - otherwise it KErrNone is returned on success. - */ - IMPORT_C TInt GetInBufferRange(TUint& aStart, TUint& aSize); - - /** - This method closes the endpoint, after it was opened with - RDevUsbcScClient::OpenEndpoint(...). - No method of this object can be used after this call, until - RDevUsbcScClient::OpenEndpoint(...) is called on it again. - - @return KErrNone on success, otherwise KErrNotFound, if the current object is not open. - */ - IMPORT_C TInt Close(); - - IMPORT_C void Dump(); - - /** - Used to retrieve the endpoint number for which this object was open on. - - @returns the endpoint number opened by this object. - */ - inline TInt GetEndpointNumber(); - -private: - /** @internalTechnology */ - void Construct(RDevUsbcScClient* aClient, TUint8* aBaseAddr, const TUsbcScHdrEndpointRecord* aEpType, - TInt aEndpointNumber, SUsbcScBufferHeader* aEndpointHdr=NULL); - -private: - enum TDir {EValid = KErrNone, ENotValid = KErrNotSupported, EEOF = KErrEof}; - TDir iInState; /** @internalTechnology describes state of endpoint, KErrNone if IN endpoint and ready to use, KErrNotSupportd if not an IN endpoint, KErrEof on alternate setting change */ - TDir iOutState; /** @internalTechnology describes state of endpoint, KErrNone if OUT endpoint and ready to use, KErrNotSupportd if not an OUT endpoint, KErrEoF on alternate setting change */ - TInt iEndpointNumber; /** @internalTechnology associated endpoint number */ - TInt iBufferNum; /** @internalTechnology buffer number within shared chunk */ - RDevUsbcScClient *iClient; /** @internalTechnology Parent RDevUsbcScClient object */ - TUint iBaseAddr; /** @internalTechnology The address of the beginning of the Ldd's chunk */ - - SUsbcScBufferHeader* iEndpointHdr; /** @internalTechnology Pointer to the buffer Header for OUT/BI endpoints */ - TUint8* iBufferStartAddr; /** @internalTechnology IN/BI endpoint buffer start address within shared chunk */ - TUint iSize; /** @internalTechnology IN/BI endpoint buffer size within shared chunk */ - friend class RDevUsbcScClient; - }; - -/** -This class can be used to retrieve the geometry of the structures -within a shared chunk, as used by RDevUsbcScClient. - -@see RDevUsbcScClient -*/ - -class TUsbcScChunkHeader - { -public: -/** -The constructor for the TUsbcScChunkHeader class takes a RChunk object, -containing USBcSc data structures, and initialises itself, so that -GetNumberOfEndpoints & GetBuffer can be used to interpret the chunk structures. - -@param An RChunk object, which represents an shared chunk, containing the - USBcSc data structures to be retrieved. -*/ - IMPORT_C TUsbcScChunkHeader(RChunk aChunk); -/** -Retrieves the available information in the chunk, about the given endpoint, -on the given alternate setting. The returned TUsbcScBufferRecord, -represents the buffer geometry, used for for the endpoint, while -the filled in TUsbcScHdrEndpointRecord represents additional endpoint -information. - -@param aAltSetting The alternate setting, for which the provided endpoint number, is a member of. -@param aEndpoint The endpoint, who's buffer geometry is required. -@param aEndpointInf The provided record is filled in with details of the endpoint, who's number was given. -*/ - IMPORT_C TUsbcScBufferRecord* GetBuffer(TInt aAltSetting, TInt aEndpoint, TUsbcScHdrEndpointRecord*& aEndpointInf); -/** -Retrieves the number of endpoints found in a given alternate setting. -@param aAltSetting The alternate setting number, for which the number of endpoints contained within, is needed. -*/ - IMPORT_C TInt GetNumberOfEndpoints(TInt aAltSetting); - -public: - TUsbcScChunkBuffersHeader* iBuffers; /** A pointer to the TUsbcScChunkBuffersHeader object, within the chunk header */ - TUsbcScChunkAltSettingHeader* iAltSettings; /** A pointer to the TUsbcScChunkAltSettingHeader object, within the chunk header */ -private: - RChunk iChunk; - }; - -#endif - -#include - -#endif // __D32USBCSC_H__ diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/d32usbcsc.inl --- a/usbdrv/peripheral/public/d32usbcsc.inl Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,735 +0,0 @@ -// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32\include\d32usbcsc.inl -// User side class definitions for USB Device support (inline header). -// -// - -/** @file d32usbcsc.inl - @publishedPartner - @released -*/ - -#ifndef __D32USBCSC_INL__ -#define __D32USBCSC_INL__ - - -/** @internalTechnology -*/ -struct TUsbcScIfcInfo - { - TUsbcScInterfaceInfoBuf* iInterfaceData; - TPtr8* iString; - TUint32 iBandwidthPriority; - }; - - -inline TUsbcScHdrEndpointRecord::TUsbcScHdrEndpointRecord(TInt aBufferNo, TUint8 aType) -: iBufferNo((TUint8)aBufferNo), - iType(aType) - { - }; - - -inline TUint TUsbcScHdrEndpointRecord::Type() const - { - return (TUint) (iType>>2); - }; - -inline TUint TUsbcScHdrEndpointRecord::Direction() const - { - return (TUint) (iType&3); - }; - - -inline void TUsbcScBufferRecord::Set(TUint aOffset, TUint aEndOffset) - { - iOffset = aOffset; - iSize = aEndOffset-aOffset; - }; - -inline TUint TUsbcScBufferRecord::Offset() const - { - return iOffset; - }; - -inline TUint TUsbcScBufferRecord::Size() const - { - return iSize; - }; - - -inline TEndpointPairInfo::TEndpointPairInfo(TUint8 aType, TUint16 aPair, TUint8 aSpare) - : iType(aType), iSpare(aSpare), iPair(aPair) - {} - - -inline TUsbcScEndpointInfo::TUsbcScEndpointInfo(TUint aType, TUint aDir, TInt aInterval, TInt aExtra, - TUint aBufferSize, TUint aReadSize -) - : TUsbcEndpointInfo(aType, aDir, 0, aInterval, aExtra), - iBufferSize(aBufferSize), iReadSize(aReadSize), iPairing(), iAlignment(0), iFlags(0) - {} - - - - -inline TUsbcScInterfaceInfo::TUsbcScInterfaceInfo(TInt aClass, TInt aSubClass, - TInt aProtocol, TDesC16* aString, - TUint aTotalEndpoints) - : iClass(aClass, aSubClass, aProtocol), iString(aString), - iTotalEndpointsUsed(aTotalEndpoints), iFeatureWord(0) - {} - - -inline TUsbcScBufferRecord* TUsbcScChunkBuffersHeader::Ep0Out() const - { - return (TUsbcScBufferRecord*) &iBufferOffset[0]; - }; -inline TUsbcScBufferRecord* TUsbcScChunkBuffersHeader::Ep0In() const - { - return (TUsbcScBufferRecord*) &iBufferOffset[iRecordSize]; - }; -inline TUsbcScBufferRecord* TUsbcScChunkBuffersHeader::Buffers(TInt aBuffer) const - { - return (TUsbcScBufferRecord*) &iBufferOffset[(aBuffer+2)*iRecordSize]; - }; - -inline TInt TUsbcScChunkBuffersHeader::NumberOfBuffers() const - { - return iNumOfBufs; - }; - - -#ifndef __KERNEL_MODE__ - - - -/** @capability CommDD -*/ -inline TInt RDevUsbcScClient::Open(TInt aUnit) - { - _LIT(KUsbDevName, "usbcsc"); - return (DoCreate(KUsbDevName, VersionRequired(), aUnit, NULL, NULL, EOwnerThread)); - } - - -inline TVersion RDevUsbcScClient::VersionRequired() const - { - return (TVersion(EMajorVersionNumber, EMinorVersionNumber, EBuildVersionNumber)); - } - - -inline TInt RDevUsbcScClient::EndpointZeroRequestError() - { - return DoControl(EControlEndpointZeroRequestError); - } - - -inline TInt RDevUsbcScClient::EndpointCaps(TDes8& aCapsBuf) - { - return DoControl(EControlEndpointCaps, &aCapsBuf); - } - - -inline TInt RDevUsbcScClient::DeviceCaps(TUsbDeviceCaps& aCapsBuf) - { - return DoControl(EControlDeviceCaps, &aCapsBuf); - } - - -inline TInt RDevUsbcScClient::GetAlternateSetting(TInt &aInterfaceNumber) - { - return DoControl(EControlGetAlternateSetting, &aInterfaceNumber); - } - - -inline TInt RDevUsbcScClient::DeviceStatus(TUsbcDeviceState &aDeviceStatus) - { - return DoControl(EControlDeviceStatus, &aDeviceStatus); - } - - -inline TInt RDevUsbcScClient::EndpointStatus(TInt aEndpoint,TEndpointState &aEndpointStatus) - { - return DoControl(EControlEndpointStatus,(TAny*) aEndpoint, &aEndpointStatus); - } - -/* -inline TInt RDevUsbcScClient::QueryReceiveBuffer(TInt aEndpoint,TInt& aNumberOfBytes) - { - return DoControl(EControlQueryReceiveBuffer, (TAny*) aEndpoint, &aNumberOfBytes); - } - -*/ -inline TInt RDevUsbcScClient::SendEp0StatusPacket() - { - return DoControl(EControlSendEp0StatusPacket); - } - - -inline TInt RDevUsbcScClient::HaltEndpoint(TInt aEndpoint) - { - return DoControl(EControlHaltEndpoint, (TAny*) aEndpoint); - } - - -inline TInt RDevUsbcScClient::ClearHaltEndpoint(TInt aEndpoint) - { - return DoControl(EControlClearHaltEndpoint, (TAny*) aEndpoint); - } - - -inline TUint RDevUsbcScClient::EndpointZeroMaxPacketSizes() - { - return DoControl(EControlEndpointZeroMaxPacketSizes); - } - - -inline TInt RDevUsbcScClient::SetEndpointZeroMaxPacketSize(TInt aMaxPacketSize) - { - return DoControl(EControlSetEndpointZeroMaxPacketSize, (TAny*) aMaxPacketSize); - } - - -inline TInt RDevUsbcScClient::GetEndpointZeroMaxPacketSize() - { - return DoControl(EControlGetEndpointZeroMaxPacketSize); - } - - -inline TInt RDevUsbcScClient::GetDeviceDescriptor(TDes8& aDeviceDescriptor) - { - return DoControl(EControlGetDeviceDescriptor, &aDeviceDescriptor); - } - - -inline TInt RDevUsbcScClient::SetDeviceDescriptor(const TDesC8& aDeviceDescriptor) - { - return DoControl(EControlSetDeviceDescriptor, const_cast(&aDeviceDescriptor)); - } - - -inline TInt RDevUsbcScClient::GetDeviceDescriptorSize(TInt& aSize) - { - TPckgBuf p; - TInt r = DoControl(EControlGetDeviceDescriptorSize, &p); - if (r == KErrNone) - aSize = p(); - return r; - } - - -inline TInt RDevUsbcScClient::GetConfigurationDescriptor(TDes8& aConfigurationDescriptor) - { - return DoControl(EControlGetConfigurationDescriptor, &aConfigurationDescriptor); - } - - -inline TInt RDevUsbcScClient::SetConfigurationDescriptor(const TDesC8& aConfigurationDescriptor) - { - return DoControl(EControlSetConfigurationDescriptor, const_cast (&aConfigurationDescriptor)); - } - - -inline TInt RDevUsbcScClient::GetConfigurationDescriptorSize(TInt& aSize) - { - TPckgBuf p; - TInt r=DoControl(EControlGetConfigurationDescriptorSize, &p); - if (r == KErrNone) - aSize = p(); - return r; - } - - -inline TInt RDevUsbcScClient::GetInterfaceDescriptor(TInt aSettingNumber, TDes8& aInterfaceDescriptor) - { - return DoControl(EControlGetInterfaceDescriptor,(TAny*) aSettingNumber, &aInterfaceDescriptor); - } - - -inline TInt RDevUsbcScClient::SetInterfaceDescriptor(TInt aSettingNumber, const TDesC8& aInterfaceDescriptor) - { - return DoControl(EControlSetInterfaceDescriptor,(TAny*) aSettingNumber, - const_cast(&aInterfaceDescriptor)); - } - - -inline TInt RDevUsbcScClient::GetInterfaceDescriptorSize(TInt aSettingNumber, TInt& aSize) - { - TPckgBuf p; - TInt r = DoControl(EControlGetInterfaceDescriptorSize,(TAny*) aSettingNumber, &p); - if (r == KErrNone) - aSize = p(); - return r; - } - - -inline TInt RDevUsbcScClient::GetEndpointDescriptor(TInt aSettingNumber, TInt aEndpointNumber, - TDes8& aEndpointDescriptor) - { - TEndpointDescriptorInfo info = {aSettingNumber, aEndpointNumber, &aEndpointDescriptor}; - return DoControl(EControlGetEndpointDescriptor, &info, NULL); - } - - -inline TInt RDevUsbcScClient::SetEndpointDescriptor(TInt aSettingNumber, TInt aEndpointNumber, - const TDesC8& aEndpointDescriptor) - { - TEndpointDescriptorInfo info = {aSettingNumber, aEndpointNumber, const_cast(&aEndpointDescriptor)}; - return DoControl(EControlSetEndpointDescriptor, &info, NULL); - } - - -inline TInt RDevUsbcScClient::GetEndpointDescriptorSize(TInt aSettingNumber, TInt aEndpointNumber, TInt& aSize) - { - TPckgBuf p; - TEndpointDescriptorInfo info = {aSettingNumber, aEndpointNumber, &p}; - TInt r = DoControl(EControlGetEndpointDescriptorSize, &info, NULL); - if (r == KErrNone) - aSize = p(); - return r; - } - - -inline void RDevUsbcScClient::GetOtgDescriptorSize(TInt& aSize) - { - aSize = KUsbDescSize_Otg; - } - - -inline TInt RDevUsbcScClient::GetOtgDescriptor(TDes8& aOtgDesc) - { - return DoControl(EControlGetOtgDescriptor, (TAny*)&aOtgDesc); - } - - -inline TInt RDevUsbcScClient::SetOtgDescriptor(const TDesC8& aOtgDesc) - { - return DoControl(EControlSetOtgDescriptor, (TAny*)&aOtgDesc); - } - - -inline TInt RDevUsbcScClient::GetDeviceQualifierDescriptor(TDes8& aDescriptor) - { - return DoControl(EControlGetDeviceQualifierDescriptor, &aDescriptor); - } - - -inline TInt RDevUsbcScClient::SetDeviceQualifierDescriptor(const TDesC8& aDescriptor) - { - return DoControl(EControlSetDeviceQualifierDescriptor, const_cast(&aDescriptor)); - } - - -inline TInt RDevUsbcScClient::GetOtherSpeedConfigurationDescriptor(TDes8& aDescriptor) - { - return DoControl(EControlGetOtherSpeedConfigurationDescriptor, &aDescriptor); - } - - -inline TInt RDevUsbcScClient::SetOtherSpeedConfigurationDescriptor(const TDesC8& aDescriptor) - { - return DoControl(EControlSetOtherSpeedConfigurationDescriptor, const_cast (&aDescriptor)); - } - - -inline TInt RDevUsbcScClient::GetCSInterfaceDescriptorBlock(TInt aSettingNumber, TDes8& aInterfaceDescriptor) - { - return DoControl(EControlGetCSInterfaceDescriptor,(TAny*) aSettingNumber, &aInterfaceDescriptor); - } - - -inline TInt RDevUsbcScClient::GetCSInterfaceDescriptorBlockSize(TInt aSettingNumber, TInt& aSize) - { - TPckgBuf p; - TInt r = DoControl(EControlGetCSInterfaceDescriptorSize,(TAny*) aSettingNumber, &p); - if (r == KErrNone) - aSize = p(); - return r; - } - - -inline TInt RDevUsbcScClient::GetCSEndpointDescriptorBlock(TInt aSettingNumber, TInt aEndpointNumber, - TDes8& aEndpointDescriptor) - { - TEndpointDescriptorInfo info={aSettingNumber, aEndpointNumber, &aEndpointDescriptor}; - return DoControl(EControlGetCSEndpointDescriptor,&info,NULL); - } - - -inline TInt RDevUsbcScClient::GetCSEndpointDescriptorBlockSize(TInt aSettingNumber, TInt aEndpointNumber, - TInt& aSize) - { - TPckgBuf p; - TEndpointDescriptorInfo info = {aSettingNumber, aEndpointNumber, &p}; - TInt r = DoControl(EControlGetCSEndpointDescriptorSize, &info, NULL); - if (r == KErrNone) - aSize = p(); - return r; - } - - -inline TInt RDevUsbcScClient::SignalRemoteWakeup() - { - return DoControl(EControlSignalRemoteWakeup); - } - - -inline TInt RDevUsbcScClient::DeviceDisconnectFromHost() - { - return DoControl(EControlDeviceDisconnectFromHost); - } - - -inline TInt RDevUsbcScClient::DeviceConnectToHost() - { - return DoControl(EControlDeviceConnectToHost); - } - - -inline TInt RDevUsbcScClient::PowerUpUdc() - { - return DoControl(EControlDevicePowerUpUdc); - } - - -inline TBool RDevUsbcScClient::CurrentlyUsingHighSpeed() - { - return DoControl(EControlCurrentlyUsingHighSpeed); - } - - -inline TInt RDevUsbcScClient::SetInterface(TInt aInterfaceNumber, TUsbcScInterfaceInfoBuf& aInterfaceData) - { - TPtr8 name_8(NULL,0); - TUsbcScIfcInfo ifcinfo; - ifcinfo.iInterfaceData = const_cast(&aInterfaceData); - if (!aInterfaceData().iString) - { - ifcinfo.iString = NULL; - } - else - { - name_8.Set(const_cast(reinterpret_cast(aInterfaceData().iString->Ptr())), - aInterfaceData().iString->Size(), aInterfaceData().iString->Size()); - ifcinfo.iString = &name_8; - } - return DoControl(EControlSetInterface, (TAny*)aInterfaceNumber, &ifcinfo); - } - -inline TInt RDevUsbcScClient::RealizeInterface(RChunk& aChunk) - { - return aChunk.SetReturnedHandle(DoControl(EControlRealizeInterface)); - } - - -inline TInt RDevUsbcScClient::ReleaseInterface(TInt aInterfaceNumber) - { - return DoControl(EControlReleaseInterface, (TAny*)aInterfaceNumber); - } - - -inline TInt RDevUsbcScClient::SetCSInterfaceDescriptorBlock(TInt aSettingNumber, const TDesC8& aInterfaceDescriptor) - { - TCSDescriptorInfo info = {aSettingNumber, 0, const_cast(&aInterfaceDescriptor), - aInterfaceDescriptor.Size()}; - return DoControl(EControlSetCSInterfaceDescriptor, &info, NULL); - } - - -inline TInt RDevUsbcScClient::SetCSEndpointDescriptorBlock(TInt aSettingNumber, TInt aEndpointNumber, - const TDesC8& aEndpointDescriptor) - { - TCSDescriptorInfo info = {aSettingNumber, aEndpointNumber, const_cast(&aEndpointDescriptor), - aEndpointDescriptor.Size()}; - return DoControl(EControlSetCSEndpointDescriptor, &info, NULL); - } - - -inline TInt RDevUsbcScClient::SetDeviceControl() - { - return DoControl(EControlSetDeviceControl); - } - - -inline TInt RDevUsbcScClient::ReleaseDeviceControl() - { - return DoControl(EControlReleaseDeviceControl); - } - - -inline TInt RDevUsbcScClient::GetStringDescriptorLangId(TUint16& aLangId) - { - TPckgBuf p; - const TInt r = DoControl(EControlGetStringDescriptorLangId, &p); - if (r == KErrNone) - aLangId = p(); - return r; - } - - -inline TInt RDevUsbcScClient::SetStringDescriptorLangId(TUint16 aLangId) - { - return DoControl(EControlSetStringDescriptorLangId, (TAny*)(TUint)aLangId); - } - - -inline TInt RDevUsbcScClient::GetManufacturerStringDescriptor(TDes16& aString) - { - TPtr8 name_8(const_cast(reinterpret_cast(aString.Ptr())), aString.MaxSize()); - const TInt r = DoControl(EControlGetManufacturerStringDescriptor, &name_8); - aString.SetLength(name_8.Size()/2); - return r; - } - - -inline TInt RDevUsbcScClient::SetManufacturerStringDescriptor(const TDesC16& aString) - { - TPtrC8 name_8(reinterpret_cast(aString.Ptr()), aString.Size()); - return DoControl(EControlSetManufacturerStringDescriptor, &name_8); - } - - -inline TInt RDevUsbcScClient::RemoveManufacturerStringDescriptor() - { - return DoControl(EControlRemoveManufacturerStringDescriptor); - } - - -inline TInt RDevUsbcScClient::GetProductStringDescriptor(TDes16& aString) - { - TPtr8 name_8(const_cast(reinterpret_cast(aString.Ptr())), aString.MaxSize()); - const TInt r = DoControl(EControlGetProductStringDescriptor, &name_8); - aString.SetLength(name_8.Size()/2); - return r; - } - - -inline TInt RDevUsbcScClient::SetProductStringDescriptor(const TDesC16& aString) - { - TPtrC8 name_8(reinterpret_cast(aString.Ptr()), aString.Size()); - return DoControl(EControlSetProductStringDescriptor, &name_8); - } - - -inline TInt RDevUsbcScClient::RemoveProductStringDescriptor() - { - return DoControl(EControlRemoveProductStringDescriptor); - } - - -inline TInt RDevUsbcScClient::GetSerialNumberStringDescriptor(TDes16& aString) - { - TPtr8 name_8(const_cast(reinterpret_cast(aString.Ptr())), aString.MaxSize()); - const TInt r = DoControl(EControlGetSerialNumberStringDescriptor, &name_8); - aString.SetLength(name_8.Size()/2); - return r; - } - - -inline TInt RDevUsbcScClient::SetSerialNumberStringDescriptor(const TDesC16& aString) - { - TPtrC8 name_8(reinterpret_cast(aString.Ptr()), aString.Size()); - return DoControl(EControlSetSerialNumberStringDescriptor, &name_8); - } - - -inline TInt RDevUsbcScClient::RemoveSerialNumberStringDescriptor() - { - return DoControl(EControlRemoveSerialNumberStringDescriptor); - } - - -inline TInt RDevUsbcScClient::GetConfigurationStringDescriptor(TDes16& aString) - { - TPtr8 name_8(const_cast(reinterpret_cast(aString.Ptr())), aString.MaxSize()); - const TInt r = DoControl(EControlGetConfigurationStringDescriptor, &name_8); - aString.SetLength(name_8.Size() / 2); - return r; - } - - -inline TInt RDevUsbcScClient::SetConfigurationStringDescriptor(const TDesC16& aString) - { - TPtrC8 name_8(reinterpret_cast(aString.Ptr()), aString.Size()); - return DoControl(EControlSetConfigurationStringDescriptor, &name_8); - } - - -inline TInt RDevUsbcScClient::RemoveConfigurationStringDescriptor() - { - return DoControl(EControlRemoveConfigurationStringDescriptor); - } - - -inline TInt RDevUsbcScClient::GetStringDescriptor(TUint8 aIndex, TDes16& aString) - { - TPtr8 name_8(const_cast(reinterpret_cast(aString.Ptr())), aString.MaxSize()); - const TInt r = DoControl(EControlGetStringDescriptor, (TAny*)(TUint)aIndex, &name_8); - aString.SetLength(name_8.Size() / 2); - return r; - } - - -inline TInt RDevUsbcScClient::SetStringDescriptor(TUint8 aIndex, const TDesC16& aString) - { - TPtrC8 name_8(reinterpret_cast(aString.Ptr()), aString.Size()); - return DoControl(EControlSetStringDescriptor, (TAny*)(TUint)aIndex, &name_8); - } - - -inline TInt RDevUsbcScClient::RemoveStringDescriptor(TUint8 aIndex) - { - return DoControl(EControlRemoveStringDescriptor, (TAny*)(TUint)aIndex); - } - - -inline TInt RDevUsbcScClient::AllocateEndpointResource(TInt aEndpoint, TUsbcEndpointResource aResource) - { - return DoControl(EControlAllocateEndpointResource, (TAny*)aEndpoint, (TAny*)aResource); - } - - -inline TInt RDevUsbcScClient::DeAllocateEndpointResource(TInt aEndpoint, TUsbcEndpointResource aResource) - { - return DoControl(EControlDeAllocateEndpointResource, (TAny*)aEndpoint, (TAny*)aResource); - } - - -inline TBool RDevUsbcScClient::QueryEndpointResourceUse(TInt aEndpoint, TUsbcEndpointResource aResource) - { - return DoControl(EControlQueryEndpointResourceUse, (TAny*)aEndpoint, (TAny*)aResource); - } - - -inline TInt RDevUsbcScClient::ReadDataNotify(TInt aBufferNumber, TRequestStatus& aStatus, TInt aLength) - { - TAny *a[2]; - a[0]=(TAny*) aBufferNumber; - a[1]=(TAny*) aLength; - aStatus=KRequestPending; - TInt r = DoControl(~ERequestReadDataNotify, &aStatus, &a[0]); - if (r) - aStatus=r; - return r; - } - - - -inline void RDevUsbcScClient::WriteData(TInt aBufferNumber, TUint aStart, TUint aLength, TUint aFlags, TRequestStatus& aStatus) - { - DoRequest( ERequestWriteData | ((aBufferNumber&KFieldBuffMask) << KFieldBuffPos) | ((aFlags&KFieldFlagsMask) << KFieldFlagsPos), - aStatus, (TAny*) aStart, (TAny*) aLength); - } - - - -inline void RDevUsbcScClient::AlternateDeviceStatusNotify(TRequestStatus& aStatus, TUint& aValue) - { - DoRequest(ERequestAlternateDeviceStatusNotify, aStatus, &aValue); - } - - -inline void RDevUsbcScClient::ReEnumerate(TRequestStatus& aStatus) - { - DoRequest(ERequestReEnumerate, aStatus); - } - - -inline void RDevUsbcScClient::EndpointStatusNotify(TRequestStatus& aStatus, TUint& aEndpointMask) - { - DoRequest(ERequestEndpointStatusNotify, aStatus, &aEndpointMask); - } - - -inline void RDevUsbcScClient::ReadCancel(TInt aBuffer) - { - DoControl(ERequestReadDataNotifyCancel, (TAny*) aBuffer); - } - - -inline void RDevUsbcScClient::WriteCancel(TInt aBuffer) - { - DoControl(ERequestWriteDataCancel, (TAny*) aBuffer); - } - - -inline void RDevUsbcScClient::EndpointTransferCancel(TUint aBufferMask) - { - DoControl(ERequestCancel, (TAny*) aBufferMask); - } - - -inline void RDevUsbcScClient::AlternateDeviceStatusNotifyCancel() - { - DoControl(ERequestAlternateDeviceStatusNotifyCancel); - } - - -inline void RDevUsbcScClient::ReEnumerateCancel() - { - DoControl(ERequestReEnumerateCancel); - } - - -inline void RDevUsbcScClient::EndpointStatusNotifyCancel() - { - DoControl(ERequestEndpointStatusNotifyCancel); - } - -inline TInt RDevUsbcScClient::GetOtgFeatures(TUint8& aFeatures) - { - TPckgBuf p; - TInt r = DoControl(EControlGetOtgFeatures, &p); - if (r == KErrNone) - aFeatures = p(); - return r; - } - - -inline void RDevUsbcScClient::OtgFeaturesNotify(TRequestStatus& aStatus, TUint8& aValue) - { - DoRequest(ERequestOtgFeaturesNotify, aStatus, &aValue); - } - -inline void RDevUsbcScClient::OtgFeaturesNotifyCancel() - { - DoControl(ERequestOtgFeaturesNotifyCancel); - } - -inline TInt RDevUsbcScClient::StartNextInAlternateSetting() - { - return DoControl(EControlStartNextInAlternateSetting); - } - -//Buffer Interface Layer (BIL) inline functions - - -inline TInt TEndpointBuffer::GetBuffer(TUint& aOffset,TUint& aSize,TBool& aZLP,TRequestStatus& aStatus,TUint aLength) - { - TInt r = GetBuffer(aOffset,aSize,aZLP,aStatus,aLength); - aOffset -= iBaseAddr; - return r; - }; - - -inline TInt TEndpointBuffer::GetEndpointNumber() - { - return iEndpointNumber; - } - -#endif // #ifndef __KERNEL_MODE__ - -#endif // #ifndef __D32USBCSC_INL__ diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/d32usbcshared.h --- a/usbdrv/peripheral/public/d32usbcshared.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,338 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32/include/d32usbcshared.h -// User side class definitions for USB Device support. -// -// - -/** - @file d32usbcshared.h - @publishedPartner - @released -*/ - -#ifndef __D32USBCSHARED_H__ -#define __D32USBCSHARED_H__ - -#include - -// FIXME: for dummy dcd compitible, move this line to usbcshared.h -// used by shared chunk version LDD's user app interface -typedef TInt TUsbcDeviceState; - -// USB driver error codes - -/** USB driver specific error codes start from here -*/ -const TInt KErrUsbDriverBase = -6701; - -/** Attempt at data transfer, or something interface related, - when neither an Interface has been set up nor Device Control is owned by - the channel -*/ -const TInt KErrUsbInterfaceNotReady = -6702; - -/** Attempt at data transfer on an endpoint that does not belong to the active interface -*/ -const TInt KErrUsbEpNotInInterface = -6703; - -/** Attempt at data transfer in a direction not supported by the endpoint -*/ -const TInt KErrUsbEpBadDirection = -6704; - -/** The data transfer size specified exceeds that of the source or - destination buffer descriptor -*/ -const TInt KErrUsbTransferSize = -6705; - -/** This has multiple uses: - 1) User request completed because device is no longer in configured state - 2) Something endpoint related, stall, unstall, status enquiry etc, - that requires the device to be configured -*/ -const TInt KErrUsbDeviceNotConfigured = -6706; - -/** Requested endpoint properties inconsistent during Interface setup -*/ -const TInt KErrUsbBadEndpoint = -6707; - -/** User data request completed because channel is closing (channel destructor called) -*/ -const TInt KErrUsbDeviceClosing = -6708; - -/** User data request completed because current endpoint set is being - replaced since alternate setting is changing -*/ -const TInt KErrUsbInterfaceChange = -6709; - -/** User data request completed because cable has been detached (or equivalent) -*/ -const TInt KErrUsbCableDetached = -6710; - -/** User data request completed because cable has been detached (or equivalent) -*/ -const TInt KErrUsbDeviceBusReset = -6711; - -/** This means that read data is still available when a write request is made. - Relates to bidirectional eps only (ep0). - A bidirectional ep must consume all of its read data before attempting to write. -*/ -const TInt KErrUsbEpNotReady = -6712; - -// FIXME: REMOVE THIS GUY, ONCE DUMMY DCD is modified according to new SHAI. -const TInt EUsbcDeviceStateUndefined = UsbShai::EUsbPeripheralStateUndefined; // 0 -const TInt EUsbcDeviceStateAttached = UsbShai::EUsbPeripheralStateAttached; // 1 -const TInt EUsbcDeviceStatePowered = UsbShai::EUsbPeripheralStatePowered;// 2 -const TInt EUsbcDeviceStateDefault = UsbShai::EUsbPeripheralStateDefault;// 3 -const TInt EUsbcDeviceStateAddress = UsbShai::EUsbPeripheralStateAddress; // 4 -const TInt EUsbcDeviceStateConfigured = UsbShai::EUsbPeripheralStateConfigured;// 5 -const TInt EUsbcDeviceStateSuspended = UsbShai::EUsbPeripheralStateSuspended;// 6 -const TInt EUsbcNoState = UsbShai::EUsbPeripheralNoState; // 255 (used as a place holder) - -/** The endpoint states. - - @see RDevUsbcClient::EndpointStatus() - @see RDevUsbcClient::EndpointStatusNotify() -*/ -enum TEndpointState - { - EEndpointStateNotStalled, - EEndpointStateStalled, - EEndpointStateUnknown - }; - -class TUsbcEndpointCaps : public UsbShai::TUsbPeripheralEndpointCaps - { - public: - /** Returns the greatest available packet size for this endpoint. */ - TInt MaxPacketSize() const; - /** Returns the smallest available packet size for this endpoint. */ - TInt MinPacketSize() const; - }; - -/** Endpoint resources/behaviours. - - @see AllocateEndpointResource() - @see DeAllocateEndpointResource() - @see QueryEndpointResourceUse() -*/ -enum TUsbcEndpointResource - { - /** Requests the use of DMA. */ - EUsbcEndpointResourceDMA = 0, - /** Requests the use of double FIFO buffering. */ - EUsbcEndpointResourceDoubleBuffering = 1 - }; - -const TUint KUsbcEndpointInfoFeatureWord1_DMA = UsbShai::KUsbEndpointInfoFeatureWord1_DMA; -const TUint KUsbcEndpointInfoFeatureWord1_DoubleBuffering = UsbShai::KUsbEndpointInfoFeatureWord1_DoubleBuffering; - -/** The USB client device capability class. -*/ -class TCapsDevUsbc - { - public: - /** The device version. */ - TVersion version; - }; - -/** The maximum number of endpoints supported by the device, excluding ep0. -*/ -const TInt KUsbcMaxEndpoints = 30; - -/** The maximum number of endpoints per interface, excluding ep0. -*/ -const TInt KMaxEndpointsPerClient = 5; - -/** @internalComponent -*/ -const TInt KInvalidEndpointNumber = 31; - -/** The alternate setting flag; when this bit is set the state change notified by - RDevUsbcClient::AlternateDeviceStatusNotify() is an alternate setting number. -*/ -const TUint KUsbAlternateSetting = 0x80000000; - -/** The USB cable detection feature flag; used by TUsbDeviceCapsV01::iFeatureWord1. - When this bit is set then the USB controller hardware (UDC) supports detection - of a plugged-in USB cable even when not powered. - - @see TUsbDeviceCapsV01 -*/ -const TUint KUsbDevCapsFeatureWord1_CableDetectWithoutPower = 0x00000001; - -/** If this flag is set then the driver supports the new endpoint resource - allocation scheme for DMA and Double-buffering via - TUsbcEndpointInfo::iFeatureWord1. - - @see TUsbDeviceCapsV01 -*/ -const TUint KUsbDevCapsFeatureWord1_EndpointResourceAllocV2 = 0x00000002; - - -/** Device USB capabilities. -*/ -class TUsbDeviceCapsV01 - { -public: - /** The total number of endpoints on the device. */ - TInt iTotalEndpoints; - /** Indicates whether the device supports software connect/disconnect. */ - TBool iConnect; - /** Indicates whether the device is self powered. */ - TBool iSelfPowered; - /** Indicates whether the device can send Remote Wakeup. */ - TBool iRemoteWakeup; - /** Indicates whether the device supports High-speed mode. */ - TBool iHighSpeed; - /** 32 flag bits indicating miscellaneous UDC/device features. - Currently defined are: - - KUsbDevCapsFeatureWord1_CableDetectWithoutPower = 0x00000001 - - KUsbDevCapsFeatureWord1_EndpointResourceAllocV2 = 0x00000002 - */ - TUint32 iFeatureWord1; - /** Reserved for future use. */ - TUint32 iReserved; - }; - -/** Package buffer for a TUsbDeviceCapsV01 object. - - @see TUsbDeviceCapsV01 -*/ -typedef TPckgBuf TUsbDeviceCaps; - -/** Bitmaps for TUsbcEndpointCaps.iSizes. - - This endpoint is not available (= no size). -*/ -const TUint KUsbEpNotAvailable = 0x00000000; -/** Max packet size is continuously variable up to some size specified. - (Interrupt and Isochronous endpoints only.) -*/ -const TUint KUsbEpSizeCont = 0x00000001; -/** Max packet size 8 bytes is supported -*/ -const TUint KUsbEpSize8 = 0x00000008; -/** Max packet size 16 bytes is supported -*/ -const TUint KUsbEpSize16 = 0x00000010; -/** Max packet size 32 bytes is supported -*/ -const TUint KUsbEpSize32 = 0x00000020; -/** Max packet size 64 bytes is supported -*/ -const TUint KUsbEpSize64 = 0x00000040; -/** Max packet size 128 bytes is supported -*/ -const TUint KUsbEpSize128 = 0x00000080; -/** Max packet size 256 bytes is supported -*/ -const TUint KUsbEpSize256 = 0x00000100; -/** Max packet size 512 bytes is supported -*/ -const TUint KUsbEpSize512 = 0x00000200; -/** Max packet size 1023 bytes is supported -*/ -const TUint KUsbEpSize1023 = 0x00000400; -/** Max packet size 1024 bytes is supported -*/ -const TUint KUsbEpSize1024 = 0x00000800; - -/** Bitmaps for TUsbcEndpointCaps.iSupportedTypesAndDir. - - Endpoint supports Control transfer type. -*/ -const TUint KUsbEpTypeControl = UsbShai::KUsbEpTypeControl; -/** Endpoint supports Isochronous transfer type. -*/ -const TUint KUsbEpTypeIsochronous = UsbShai::KUsbEpTypeIsochronous; -/** Endpoint supports Bulk transfer type. -*/ -const TUint KUsbEpTypeBulk = UsbShai::KUsbEpTypeBulk; -/** Endpoint supports Interrupt transfer type. -*/ -const TUint KUsbEpTypeInterrupt = UsbShai::KUsbEpTypeInterrupt; -/** Endpoint supports IN transfers. -*/ -const TUint KUsbEpDirIn = UsbShai::KUsbEpDirIn; -/** Endpoint supports OUT transfers. -*/ -const TUint KUsbEpDirOut = UsbShai::KUsbEpDirOut; -/** Endpoint supports bidirectional (Control) transfers only. -*/ -const TUint KUsbEpDirBidirect = UsbShai::KUsbEpDirBidirect; - - -/** Converts an absolute size value into a KUsbEpSize... mask. -*/ -static inline TUint PacketSize2Mask(TInt aSize); - -/** Converts an endpoint type mask KUsbEpType... into an endpoint attribute - value KUsbEpAttr_.... -*/ -static inline TUint EpTypeMask2Value(TInt aType); - - -/** Endpoint capabilities as returned by RDevUsbcClient::EndpointCaps(). -*/ -class TUsbcEndpointData - { -public: - /** Detail of endpoint capabilities. */ - TUsbcEndpointCaps iCaps; - /** Indicates whether this endpoint is already claimed. */ - TBool iInUse; - }; - -class TUsbcEndpointInfo : public UsbShai::TUsbPeripheralEndpointInfo - { - public: - TUsbcEndpointInfo(TUint aType=UsbShai::KUsbEpTypeBulk, TUint aDir=UsbShai::KUsbEpDirOut, - TInt aSize=0, TInt aInterval=0, TInt aExtra=0); - - TInt AdjustEpSizes(TInt& aEpSize_Fs, TInt& aEpSize_Hs) const; - - TInt AdjustPollInterval(); - }; - -/** USB Class information used in RDevUsbcClient::SetInterface(). -*/ -class TUsbcClassInfo - { -public: - TUsbcClassInfo(TInt aClass=0, TInt aSubClass=0, TInt aProtocol=0); -public: - /** The class type number. */ - TInt iClassNum; - /** The sub-class type number. */ - TInt iSubClassNum; - /** The protocol number. */ - TInt iProtocolNum; - /** Reserved for future use. */ - TUint32 iReserved; - }; - - -/** The Ep0 Setup request 'unsubscribe' flag; used by - TUsbcInterfaceInfo::iFeatureWord. When this bit is set then valid vendor- - or class-specific Ep0 requests addressed to this interface or any of its - endpoints will be stalled by the USB PDD PIL. - - @see TUsbcInterfaceInfo -*/ -const TUint KUsbcInterfaceInfo_NoEp0RequestsPlease = 0x00000001; - -#include - -#endif diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/d32usbcshared.inl --- a/usbdrv/peripheral/public/d32usbcshared.inl Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,145 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32/include/d32usbcshared.inl -// User side class definitions for USB Device support. -// -// - -/** - @file d32usbcshared.inl - @publishedPartner - @released -*/ - -#ifndef __D32USBCSHARED_INL__ -#define __D32USBCSHARED_INL__ - -inline TInt MaxEndpointPacketSize(TInt aSizes) - { - return (aSizes & KUsbEpSize1024) ? 1024 : - ((aSizes & KUsbEpSize1023) ? 1023 : - ((aSizes & KUsbEpSize512) ? 512 : - ((aSizes & KUsbEpSize256) ? 256 : - ((aSizes & KUsbEpSize128) ? 128 : - ((aSizes & KUsbEpSize64) ? 64 : - ((aSizes & KUsbEpSize32) ? 32 : - ((aSizes & KUsbEpSize16) ? 16 : - ((aSizes & KUsbEpSize8) ? 8 : 0)))))))); - } - - -inline TInt MinEndpointPacketSize(TInt aSizes) - { - return (aSizes & KUsbEpSize8) ? 8 : - ((aSizes & KUsbEpSize16) ? 16 : - ((aSizes & KUsbEpSize32) ? 32 : - ((aSizes & KUsbEpSize64) ? 64 : - ((aSizes & KUsbEpSize128) ? 128 : - ((aSizes & KUsbEpSize256) ? 256 : - ((aSizes & KUsbEpSize512) ? 512 : - ((aSizes & KUsbEpSize1023) ? 1023 : - ((aSizes & KUsbEpSize1024) ? 1024 : 0)))))))); - } - -inline TInt TUsbcEndpointCaps::MaxPacketSize() const - { - return (iSizes & KUsbEpSize1024) ? 1024 : - ((iSizes & KUsbEpSize1023) ? 1023 : - ((iSizes & KUsbEpSize512) ? 512 : - ((iSizes & KUsbEpSize256) ? 256 : - ((iSizes & KUsbEpSize128) ? 128 : - ((iSizes & KUsbEpSize64) ? 64 : - ((iSizes & KUsbEpSize32) ? 32 : - ((iSizes & KUsbEpSize16) ? 16 : - ((iSizes & KUsbEpSize8) ? 8 : 0)))))))); - } - - -inline TInt TUsbcEndpointCaps::MinPacketSize() const - { - return (iSizes & KUsbEpSize8) ? 8 : - ((iSizes & KUsbEpSize16) ? 16 : - ((iSizes & KUsbEpSize32) ? 32 : - ((iSizes & KUsbEpSize64) ? 64 : - ((iSizes & KUsbEpSize128) ? 128 : - ((iSizes & KUsbEpSize256) ? 256 : - ((iSizes & KUsbEpSize512) ? 512 : - ((iSizes & KUsbEpSize1023) ? 1023 : - ((iSizes & KUsbEpSize1024) ? 1024 : 0)))))))); - } - -static inline TUint PacketSize2Mask(TInt aSize) - { - return (aSize == 8) ? KUsbEpSize8 : - ((aSize == 16) ? KUsbEpSize16 : - ((aSize == 32) ? KUsbEpSize32 : - ((aSize == 64) ? KUsbEpSize64 : - ((aSize == 128) ? KUsbEpSize128 : - ((aSize == 256) ? KUsbEpSize256 : - ((aSize == 512) ? KUsbEpSize512 : - ((aSize == 1023) ? KUsbEpSize1023 : - ((aSize == 1024) ? KUsbEpSize1024 : 0)))))))); - } - - -static inline TUint EpTypeMask2Value(TInt aType) - { - return (aType & UsbShai::KUsbEpTypeControl) ? KUsbEpAttr_TransferTypeControl : - ((aType & UsbShai::KUsbEpTypeIsochronous) ? KUsbEpAttr_TransferTypeIsochronous : - ((aType & UsbShai::KUsbEpTypeBulk) ? KUsbEpAttr_TransferTypeBulk : - ((aType & UsbShai::KUsbEpTypeInterrupt) ? KUsbEpAttr_TransferTypeInterrupt : -1))); - } - - -/** @internalTechnology -*/ -struct TEndpointDescriptorInfo - { - TInt iSetting; // alternate setting - TInt iEndpoint; // excludes ep0 - TAny* iArg; // address of data - }; - - -/** @internalTechnology -*/ -struct TCSDescriptorInfo - { - TInt iSetting; // alternate setting - TInt iEndpoint; // excludes ep0, not used for CS ifc desc - TAny* iArg; // address of data - TInt iSize; // size of data (descriptor block) - }; - -inline TUsbcEndpointInfo::TUsbcEndpointInfo(TUint aType, TUint aDir, TInt aSize, - TInt aInterval, TInt aExtra) - { - iType = aType; - iDir = aDir; - iSize = aSize; - iInterval = aInterval; - iInterval_Hs = -1; - iTransactions = 0; - iExtra = aExtra; - iFeatureWord1 = 0; - iReserved = 0; - } - -inline TUsbcClassInfo::TUsbcClassInfo(TInt aClass, TInt aSubClass, TInt aProtocol) - : iClassNum(aClass), iSubClassNum(aSubClass), iProtocolNum(aProtocol), iReserved(0) - {} - -#endif - - diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/d32usbdescriptors.h --- a/usbdrv/peripheral/public/d32usbdescriptors.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,548 +0,0 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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 D32USBDESCRIPTORS_H -#define D32USBDESCRIPTORS_H - -#include - - -/*****************************************************************************/ -/* */ -/* USB descriptors parser framework */ -/* */ -/*****************************************************************************/ - -class TUsbGenericDescriptor; - -/** -The Symbian USB Descriptor Parsing Framework class. - -This class is to aid users of USBDI by providing the facilities to parse the -raw descriptor data into wrapper classes that allow access to the fields in -the descriptor bodies, and pointers to map the serial data blob into the tree -structure that descriptors logically have. - -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(UsbDescriptorParser) - { -public: - typedef TUsbGenericDescriptor* (*TUsbDescriptorParserL)(TPtrC8& aUsbDes, TUsbGenericDescriptor* aPreviousDesc); - -public: - // Main parse function. - IMPORT_C static TInt Parse(const TDesC8& aUsbDes, TUsbGenericDescriptor*& aDesc); - - // Custom parsing framework. - IMPORT_C static void RegisterCustomParserL(TUsbDescriptorParserL aParserFunc); - IMPORT_C static void UnregisterCustomParser(TUsbDescriptorParserL aParserFunc); - -private: - static TUsbGenericDescriptor* FindParserAndParseAndCheckL(TPtrC8& aUsbDes, TUsbGenericDescriptor* aPreviousDesc); - static TUsbGenericDescriptor* FindParserAndParseL(TPtrC8& aUsbDes, TUsbGenericDescriptor* aPreviousDesc); - static void ParseDescriptorTreeL(TPtrC8& aUsbDes, TUsbGenericDescriptor& aPreviousDesc); - static void BuildTreeL(TUsbGenericDescriptor& aNewDesc, TUsbGenericDescriptor& aPreviousDesc); - static TUsbGenericDescriptor& FindSuitableParentL(TUsbGenericDescriptor& aNewDesc, TUsbGenericDescriptor& aTopParent); - static TUsbGenericDescriptor* UnknownUsbDescriptorParserL(TPtrC8& aUsbDes, TUsbGenericDescriptor* aPreviousDesc); - }; - - -/*****************************************************************************/ -/* */ -/* USB standard descriptors */ -/* */ -/*****************************************************************************/ - - -/** -Base class for USB descriptors. -All USB descriptors contain type and length, and may have peers and children. - -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -class TUsbGenericDescriptor - { -public: - IMPORT_C TUsbGenericDescriptor(); - - IMPORT_C void DestroyTree(); - - IMPORT_C TUint8 TUint8At(TInt aOffset) const; - IMPORT_C TUint16 TUint16At(TInt aOffset) const; - IMPORT_C TUint32 TUint32At(TInt aOffset) const; - - IMPORT_C TUsbGenericDescriptor& operator=(const TUsbGenericDescriptor& aDescriptor); - - /** - Helper function to allow TUsbGenericDescriptor types to be placed on the cleanup stack. - */ - inline operator TCleanupItem() { return TCleanupItem(Cleanup,this); } - -public: - virtual TBool IsParent(TUsbGenericDescriptor& aPotentialParent); - virtual TBool IsPeer(TUsbGenericDescriptor& aPotentialPeer); - virtual TBool IsChild(TUsbGenericDescriptor& aPotentialChild); - -private: - IMPORT_C static void Cleanup(TAny* aPtr); - static void WalkAndDelete(TUsbGenericDescriptor* aDesc); - -public: // USB standard fields - /** - The offset in a standard USB descriptor to the bLength field. - */ - static const TInt KbLengthOffset = 0; - - /** - The offset in a standard USB descriptor to the bDescriptorType field. - */ - static const TInt KbDescriptorTypeOffset = 1; - - /** - Standard Length field. - */ - TUint8 ibLength; - - /** - Standard Type field. - */ - TUint8 ibDescriptorType; - -public: - /** - The flag to indicate whether the USB descriptor has been recognised - and parsed. - */ - enum TUsbGenericDescriptorFlags - { - EUnrecognised = 0x00, - ERecognised = 0x01, - }; - -public: // Symbian generated fields - /** - Flag to show if the descriptor has been recognised and parsed, or if its data can only be represented as a - binary blob. This field should particularly be checked if writing code which may run on older versions of - the operating system, where a (now) known descriptor may not have been parsed, or before parsing a new - descriptor from a blob, where later versions of the operating system may have already extracted the fields. - */ - TUint8 iRecognisedAndParsed; - - /** - A pointer to the next peer of this descriptor, or NULL. - As an example, an endpoint descriptor will contain pointers to any other endpoint descriptors on the same - interface. - */ - TUsbGenericDescriptor* iNextPeer; - - /** - A pointer to the first child of this descriptor, or NULL. - As an example, an interface descriptor will contain a pointer to the first endpoint descriptor on the - interface. The iNextPeer member can then be used to examine other endpoints on the interface. - */ - TUsbGenericDescriptor* iFirstChild; - - /** - A pointer to the parent to this descriptor, or NULL. - As an example an endpoint descriptor from a configuration bundle will have the interface that it - is a member of as it's parent. - */ - TUsbGenericDescriptor* iParent; - - /** - The binary blob that contains this descriptor - */ - TPtrC8 iBlob; - }; - -enum TUsbDescriptorType - { - EDevice = 1, - EConfiguration = 2, - EString = 3, - EInterface = 4, - EEndpoint = 5, - EDeviceQualifier = 6, - EOtherSpeedConfiguration = 7, - EInterfacePower = 8, - EOTG = 9, - EDebug = 10, - EInterfaceAssociation = 11, - }; - -/** -Device descriptor. - -See section 9.6.1 of the USB 2.0 specification. - -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(TUsbDeviceDescriptor) : public TUsbGenericDescriptor - { -public: - IMPORT_C TUsbDeviceDescriptor(); - IMPORT_C static TUsbDeviceDescriptor* Cast(TUsbGenericDescriptor* aOriginal); - -public: - static const TInt KSizeInOctets = 18; - enum TFieldOffsets - { - EbcdUSB = 2, - EbDeviceClass = 4, - EbDeviceSubClass = 5, - EbDeviceProtocol = 6, - EbMaxPacketSize0 = 7, - EidVendor = 8, - EidProduct = 10, - EbcdDevice = 12, - EiManufacturer = 14, - EiProduct = 15, - EiSerialNumber = 16, - EbNumConfigurations = 17 - }; - -public: - IMPORT_C TUint16 USBBcd() const; - IMPORT_C TUint8 DeviceClass() const; - IMPORT_C TUint8 DeviceSubClass() const; - IMPORT_C TUint8 DeviceProtocol() const; - IMPORT_C TUint8 MaxPacketSize0() const; - IMPORT_C TUint16 VendorId() const; - IMPORT_C TUint16 ProductId() const; - IMPORT_C TUint16 DeviceBcd() const; - IMPORT_C TUint8 ManufacturerIndex() const; - IMPORT_C TUint8 ProductIndex() const; - IMPORT_C TUint8 SerialNumberIndex() const; - IMPORT_C TUint8 NumConfigurations() const; - -public: - static TUsbDeviceDescriptor* ParseL(TPtrC8& aUsbDes, TUsbGenericDescriptor* aPreviousDesc); - virtual TBool IsParent(TUsbGenericDescriptor& aPotentialParent); - virtual TBool IsPeer(TUsbGenericDescriptor& aPotentialPeer); - }; - - -/** -Device Qualifier descriptor. - -See section 9.6.2 of the USB 2.0 specification. - -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(TUsbDeviceQualifierDescriptor) : public TUsbGenericDescriptor - { -public: - IMPORT_C TUsbDeviceQualifierDescriptor(); - IMPORT_C static TUsbDeviceQualifierDescriptor* Cast(TUsbGenericDescriptor* aOriginal); - -public: - static const TInt KSizeInOctets = 10; - enum TFieldOffsets - { - EbcdUSB = 2, - EbDeviceClass = 4, - EbDeviceSubClass = 5, - EbDeviceProtocol = 6, - EbMaxPacketSize0 = 7, - EbNumConfigurations = 8, - EbReserved = 9 - }; - -public: - IMPORT_C TUint16 USBBcd() const; - IMPORT_C TUint8 DeviceClass() const; - IMPORT_C TUint8 DeviceSubClass() const; - IMPORT_C TUint8 DeviceProtocol() const; - IMPORT_C TUint8 MaxPacketSize0() const; - IMPORT_C TUint8 NumConfigurations() const; - IMPORT_C TUint8 Reserved() const; - -public: - static TUsbDeviceQualifierDescriptor* ParseL(TPtrC8& aUsbDes, TUsbGenericDescriptor* aPreviousDesc); - virtual TBool IsParent(TUsbGenericDescriptor& aPotentialParent); - virtual TBool IsPeer(TUsbGenericDescriptor& aPotentialPeer); - }; - - -/** -Configuration descriptor. - -See section 9.6.3 of the USB 2.0 specification. - -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(TUsbConfigurationDescriptor) : public TUsbGenericDescriptor - { -public: - IMPORT_C TUsbConfigurationDescriptor(); - IMPORT_C static TUsbConfigurationDescriptor* Cast(TUsbGenericDescriptor* aOriginal); - -public: - static const TInt KSizeInOctets = 9; - enum TFieldOffsets - { - EwTotalLength = 2, - EbNumInterfaces = 4, - EbConfigurationValue = 5, - EiConfiguration = 6, - EbmAttributes = 7, - EbMaxPower = 8 - }; - -public: - IMPORT_C TUint16 TotalLength() const; - IMPORT_C TUint8 NumInterfaces() const; - IMPORT_C TUint8 ConfigurationValue() const; - IMPORT_C TUint8 ConfigurationIndex() const; - IMPORT_C TUint8 Attributes() const; - IMPORT_C TUint8 MaxPower() const; - -public: - static TUsbConfigurationDescriptor* ParseL(TPtrC8& aUsbDes, TUsbGenericDescriptor* aPreviousDesc); - virtual TBool IsParent(TUsbGenericDescriptor& aPotentialParent); - virtual TBool IsPeer(TUsbGenericDescriptor& aPotentialPeer); - }; - - -/** -Other Speed descriptor. - -See section 9.6.4 of the USB 2.0 specification. - -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(TUsbOtherSpeedDescriptor) : public TUsbGenericDescriptor - { -public: - IMPORT_C TUsbOtherSpeedDescriptor(); - IMPORT_C static TUsbOtherSpeedDescriptor* Cast(TUsbGenericDescriptor* aOriginal); - -public: - static const TInt KSizeInOctets = 9; - enum TFieldOffsets - { - EwTotalLength = 2, - EbNumInterfaces = 4, - EbConfigurationValue = 5, - EiConfiguration = 6, - EbmAttributes = 7, - EbMaxPower = 8 - }; - -public: - IMPORT_C TUint16 TotalLength() const; - IMPORT_C TUint8 NumInterfaces() const; - IMPORT_C TUint8 ConfigurationValue() const; - IMPORT_C TUint8 ConfigurationIndex() const; - IMPORT_C TUint8 Attributes() const; - IMPORT_C TUint8 MaxPower() const; - -public: - static TUsbOtherSpeedDescriptor* ParseL(TPtrC8& aUsbDes, TUsbGenericDescriptor* aPreviousDesc); - virtual TBool IsParent(TUsbGenericDescriptor& aPotentialParent); - virtual TBool IsPeer(TUsbGenericDescriptor& aPotentialPeer); - }; - - -/** -Interface Association Descriptor - -See the USB IAD ECN. - -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(TUsbInterfaceAssociationDescriptor) : public TUsbGenericDescriptor - { -public: - IMPORT_C TUsbInterfaceAssociationDescriptor(); - IMPORT_C static TUsbInterfaceAssociationDescriptor* Cast(TUsbGenericDescriptor* aOriginal); - -public: - static const TInt KSizeInOctets = 8; - enum TFieldOffsets - { - EbFirstInterface = 2, - EbInterfaceCount = 3, - EbFunctionClass = 4, - EbFunctionSubClass = 5, - EbFunctionProtocol = 6, - EiFunction = 7 - }; - -public: - IMPORT_C TUint8 FirstInterface() const; - IMPORT_C TUint8 InterfaceCount() const; - IMPORT_C TUint8 FunctionClass() const; - IMPORT_C TUint8 FunctionSubClass() const; - IMPORT_C TUint8 FunctionProtocol() const; - IMPORT_C TUint8 FunctionIndex() const; - -public: - static TUsbInterfaceAssociationDescriptor* ParseL(TPtrC8& aUsbDes, TUsbGenericDescriptor* aPreviousDesc); - virtual TBool IsParent(TUsbGenericDescriptor& aPotentialParent); - virtual TBool IsPeer(TUsbGenericDescriptor& aPotentialPeer); - virtual TBool IsChild(TUsbGenericDescriptor& aPotentialChild); - }; - -/** -Interface descriptor. - -See section 9.6.5 of the USB 2.0 specification. - -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(TUsbInterfaceDescriptor) : public TUsbGenericDescriptor - { -public: - IMPORT_C TUsbInterfaceDescriptor(); - IMPORT_C static TUsbInterfaceDescriptor* Cast(TUsbGenericDescriptor* aOriginal); - -public: - static const TInt KSizeInOctets = 9; - enum TFieldOffsets - { - EbInterfaceNumber = 2, - EbAlternateSetting = 3, - EbNumEndpoints = 4, - EbInterfaceClass = 5, - EbInterfaceSubClass = 6, - EbInterfaceProtocol = 7, - EiInterface = 8 - }; - -public: - IMPORT_C TUint8 InterfaceNumber() const; - IMPORT_C TUint8 AlternateSetting() const; - IMPORT_C TUint8 NumEndpoints() const; - IMPORT_C TUint8 InterfaceClass() const; - IMPORT_C TUint8 InterfaceSubClass() const; - IMPORT_C TUint8 InterfaceProtocol() const; - IMPORT_C TUint8 Interface() const; - -public: - static TUsbInterfaceDescriptor* ParseL(TPtrC8& aUsbDes, TUsbGenericDescriptor* aPreviousDesc); - virtual TBool IsParent(TUsbGenericDescriptor& aPotentialParent); - virtual TBool IsPeer(TUsbGenericDescriptor& aPotentialPeer); - }; - -/** -Endpoint descriptor. - -See section 9.6.6 of the USB 2.0 specification. -Note these exclude support support for: -'Standard AC Interrupt Endpoint Descriptor' -'Standard AS Isochronous Synch Endpoint Descriptor' -'Standard AS Isochronous Audio Data Endpoint Descriptor' -as defined in USB Audio Device Class Spec v1.0 which are all 9 bytes in size. -To support these custom descriptors may be registered with the -parser. - -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(TUsbEndpointDescriptor) : public TUsbGenericDescriptor - { -public: - IMPORT_C TUsbEndpointDescriptor(); - IMPORT_C static TUsbEndpointDescriptor* Cast(TUsbGenericDescriptor* aOriginal); - -public: - static const TInt KSizeInOctets = 7; - enum TFieldOffsets - { - EbEndpointAddress = 2, - EbmAttributes = 3, - EwMaxPacketSize = 4, - EbInterval = 6 - }; - -public: - IMPORT_C TUint8 EndpointAddress() const; - IMPORT_C TUint8 Attributes() const; - IMPORT_C TUint16 MaxPacketSize() const; - IMPORT_C TUint8 Interval() const; - -public: - static TUsbEndpointDescriptor* ParseL(TPtrC8& aUsbDes, TUsbGenericDescriptor* aPreviousDesc); - virtual TBool IsParent(TUsbGenericDescriptor& aPotentialParent); - virtual TBool IsPeer(TUsbGenericDescriptor& aPotentialPeer); - }; - -/** -String descriptor - -See section 9.6.7 of the USB 2.0 specification. - -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(TUsbStringDescriptor) : public TUsbGenericDescriptor - { -public: - IMPORT_C TUsbStringDescriptor(); - IMPORT_C static TUsbStringDescriptor* Cast(TUsbGenericDescriptor* aOriginal); - -public: - IMPORT_C TInt GetLangId(TInt aIndex) const; - IMPORT_C void StringData(TDes16& aString) const; - -public: - static TUsbStringDescriptor* ParseL(TPtrC8& aUsbDes, TUsbGenericDescriptor* aPreviousDesc); - virtual TBool IsParent(TUsbGenericDescriptor& aPotentialParent); - virtual TBool IsPeer(TUsbGenericDescriptor& aPotentialPeer); - }; - -/** -OTG descriptor. - -See section 6.4 of the USB 2.0 On-The-Go Supplement Revision 1.3 - -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(TUsbOTGDescriptor) : public TUsbGenericDescriptor - { -public: - IMPORT_C TUsbOTGDescriptor(); - IMPORT_C static TUsbOTGDescriptor* Cast(TUsbGenericDescriptor* aOriginal); - -public: - static const TInt KSizeInOctets = 3; - enum TFieldOffsets - { - EbmAttributes = 2 - }; - -public: - IMPORT_C TUint8 Attributes() const; - IMPORT_C TBool HNPSupported() const; - IMPORT_C TBool SRPSupported() const; -public: - static TUsbOTGDescriptor* ParseL(TPtrC8& aUsbDes, TUsbGenericDescriptor* aPreviousDesc); - virtual TBool IsParent(TUsbGenericDescriptor& aPotentialParent); - virtual TBool IsPeer(TUsbGenericDescriptor& aPotentialPeer); - }; - - -#endif // D32USBDESCRIPTORS_H diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/d32usbtransfers.h --- a/usbdrv/peripheral/public/d32usbtransfers.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,239 +0,0 @@ -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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 __D32USBTRANSFERS_H -#define __D32USBTRANSFERS_H - -#ifdef __KERNEL_MODE__ -#include -#else -#include -#endif -#include - - -class RUsbTransferStrategy; - -/** -Base class for all transfer descriptors. - -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(RUsbTransferDescriptor) - { -public: - enum TTransferType - { - EBulk, - EIsochronous, - EInterrupt - }; - - enum TZlpStatus - { - ESuppressZlp, - ESendZlpIfRequired, // Default - EAlwaysSendZlp - }; - -#ifndef __KERNEL_MODE__ -friend class RUsbPipe; -friend class RUsbTransferStrategy; - -public: - virtual void Close(); - -protected: - RUsbTransferDescriptor(TTransferType aType, TInt aMaxSize, TInt aMaxNumPackets); - -protected: - static const TInt KInvalidHandle = -1; - -protected: - /** - A pointer to the transfer strategy the descriptor is registered in. - */ - RUsbTransferStrategy* iTransferStrategy; - - /** - Handle into the transfer strategy for the descriptor. - */ - TInt iHandle; - -public: - /** - The type of transfer descriptor this instance represents. - */ - const TTransferType iType; - - /** - For isochronous transfers this refers to the maximum packet size packets - in this descriptor may be. - For other transfers this refers to the maximum size of the transfer. - */ - const TInt iMaxSize; - - /** - Used to specify the maximum number of packets the descriptor will hold. - */ - const TInt iMaxNumPackets; -#endif // __KERNEL_MODE__ - }; - - -#ifndef __KERNEL_MODE__ - -/** -A class that refers to the list of packet lengths for a isochronous transfer -descriptor. - -@publishedPartner -@prototype -*/ -NONSHARABLE_CLASS(TPacketLengths) - { -public: - NONSHARABLE_CLASS(TLength) - { - public: - IMPORT_C TUint16 operator=(TUint16 aValue); - IMPORT_C operator TUint16() const; - public: - TLength(TUint16& aRecv, TUint16& aReq); - private: - TUint16& iRecv; - TUint16& iReq; - }; -public: - IMPORT_C TLength At(TInt aIndex); - IMPORT_C const TLength At(TInt aIndex) const; - IMPORT_C TLength operator[](TInt aIndex); - IMPORT_C const TLength operator[](TInt aIndex) const; - IMPORT_C TInt MaxNumPackets(); - -public: - TPacketLengths(TUint16* aRecvPtr, TUint16* aReqPtr, TInt& aMaxNumPackets); - -private: - TUint16* iRecvPtr; - TUint16* iReqPtr; - TInt& iMaxNumPackets; - }; - -/** -A class that refers to the list of packet results for a isochronous transfer -descriptor. - -@publishedPartner -@prototype -*/ -NONSHARABLE_CLASS(TPacketResults) - { -public: - IMPORT_C TInt At(TInt aIndex) const; - IMPORT_C TInt operator[](TInt aIndex) const; - IMPORT_C TInt MaxNumPackets(); - -public: - TPacketResults(TInt* aResPtr, TInt& aMaxNumPackets); - -private: - TInt* iResPtr; - TInt& iMaxNumPackets; - }; - - -/** -Provides *SEQUENTIAL* access to the packet slots in an isochronous transfer descriptor. -As some HCs may pack the buffer space tightly, with one packet starting immediately after the preceeding one, -random access is not possible -- in this implementation, even replacing the content of a slot with another packet -of the same size is not 'intentionally' possible. -Note that reading data is possible in a random access manner -- the sequential constraint only applies to writing. -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(RUsbIsocTransferDescriptor) : public RUsbTransferDescriptor - { -friend class RUsbTransferStrategy; - -public: - IMPORT_C RUsbIsocTransferDescriptor(TInt aMaxPacketSize, TInt aMaxNumPackets); - -public: - IMPORT_C void Reset(); - IMPORT_C TPacketLengths Lengths(); - IMPORT_C TPacketResults Results(); - IMPORT_C TInt MaxPacketSize(); - -public: // Sending - IMPORT_C TPtr8 WritablePackets(TInt aNumPacketsRequested, TInt& aMaxNumOfPacketsAbleToWrite); - IMPORT_C void SaveMultiple(TInt aNumOfPackets); - -public: // Receiving - IMPORT_C TPtrC8 Packets(TInt aFirstPacketIndex, TInt aNumPacketsRequested, TInt& aNumOfPacketsReturned) const; - IMPORT_C void ReceivePackets(TInt aNumOfPackets); - -private: - /** - The handle to represent the current point in writing an isoc. transfer. - */ - TInt iWriteHandle; - }; - - -/** -Provides buffer management for Bulk transfers -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(RUsbBulkTransferDescriptor) : public RUsbTransferDescriptor - { -public: - IMPORT_C RUsbBulkTransferDescriptor(TInt aMaxSize); - -public: // Setters - IMPORT_C TPtr8 WritableBuffer(); - IMPORT_C void SaveData(TInt aLength); - IMPORT_C void SetZlpStatus(TZlpStatus aZlpStatus); - -public: // Getters - IMPORT_C TPtrC8 Buffer() const; - }; - - - -/** -Provides buffer management for Interrupt transfers -@publishedPartner Intended to be available to 3rd parties later -@prototype -*/ -NONSHARABLE_CLASS(RUsbIntrTransferDescriptor) : public RUsbTransferDescriptor - { -public: - IMPORT_C RUsbIntrTransferDescriptor(TInt aMaxSize); - -public: // Setters - IMPORT_C TPtr8 WritableBuffer(); - IMPORT_C void SaveData(TInt aLength); - IMPORT_C void SetZlpStatus(TZlpStatus aZlpStatus); - -public: // Getters - IMPORT_C TPtrC8 Buffer() const; - }; - -#endif // __KERNEL_MODE__ - -#endif // __D32USBTRANSFERS_H diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/usb.h --- a/usbdrv/peripheral/public/usb.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,246 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32\include\usb.h -// Definitions of USB-specific constants and macros. -// -// - -/** - @file usb.h - @publishedPartner - @released -*/ - -#ifndef __USB_H__ -#define __USB_H__ - -// -// 'Chapter 9' Request Types (bmRequestType) -// -const TUint8 KUsbRequestType_DirShift = 7; -const TUint8 KUsbRequestType_DirMask = (1 << KUsbRequestType_DirShift); - -const TUint8 KUsbRequestType_DirToDev = (0 << KUsbRequestType_DirShift); -const TUint8 KUsbRequestType_DirToHost = (1 << KUsbRequestType_DirShift); - -const TUint8 KUsbRequestType_TypeShift = 5; -const TUint8 KUsbRequestType_TypeMask = (3 << KUsbRequestType_TypeShift); -const TUint8 KUsbRequestType_TypeStd = (0 << KUsbRequestType_TypeShift); -const TUint8 KUsbRequestType_TypeClass = (1 << KUsbRequestType_TypeShift); -const TUint8 KUsbRequestType_TypeVendor = (2 << KUsbRequestType_TypeShift); - -const TUint8 KUsbRequestType_DestShift = 0; -const TUint8 KUsbRequestType_DestMask = (0x1f << KUsbRequestType_DestShift); -const TUint8 KUsbRequestType_DestDevice = (0x00 << KUsbRequestType_DestShift); -const TUint8 KUsbRequestType_DestIfc = (0x01 << KUsbRequestType_DestShift); -const TUint8 KUsbRequestType_DestEp = (0x02 << KUsbRequestType_DestShift); -const TUint8 KUsbRequestType_DestOther = (0x03 << KUsbRequestType_DestShift); - -// -// 'Chapter 9' Endpoint Zero Requests (bRequest) -// -const TUint8 KUsbRequest_GetStatus = 0; -const TUint8 KUsbRequest_ClearFeature = 1; -const TUint8 KUsbRequest_SetFeature = 3; -const TUint8 KUsbRequest_SetAddress = 5; -const TUint8 KUsbRequest_GetDescriptor = 6; -const TUint8 KUsbRequest_SetDescriptor = 7; -const TUint8 KUsbRequest_GetConfig = 8; -const TUint8 KUsbRequest_SetConfig = 9; -const TUint8 KUsbRequest_GetInterface = 10; -const TUint8 KUsbRequest_SetInterface = 11; -const TUint8 KUsbRequest_SynchFrame = 12; - -// -// Descriptor Types -// -const TUint8 KUsbDescType_Device = 1; -const TUint8 KUsbDescType_Config = 2; -const TUint8 KUsbDescType_String = 3; -const TUint8 KUsbDescType_Interface = 4; -const TUint8 KUsbDescType_Endpoint = 5; -const TUint8 KUsbDescType_DeviceQualifier = 6; -const TUint8 KUsbDescType_OtherSpeedConfig = 7; -const TUint8 KUsbDescType_InterfacePower = 8; -const TUint8 KUsbDescType_Otg = 9; -const TUint8 KUsbDescType_Debug = 10; -const TUint8 KUsbDescType_InterfaceAssociation = 11; - -// -// Descriptor Sizes -// -const TUint KUsbDescSize_Device = 18; -const TUint KUsbDescSize_Config = 9; -const TUint KUsbDescSize_Interface = 9; -const TUint KUsbDescSize_Endpoint = 7; -const TUint KUsbDescSize_Otg = 3; -const TUint KUsbDescSize_DeviceQualifier = 10; -const TUint KUsbDescSize_OtherSpeedConfig = 9; -const TUint KUsbDescSize_InterfaceAssociation = 8; -const TUint KUsbDescMaxSize_String = 255; -const TUint KUsbStringDescStringMaxSize = 252; // it's actually 253, but that's awkward - -// -// Configuration Characteristics (Configuration Descriptor) -// -const TUint8 KUsbDevAttr_SelfPowered = (0x01 << 6); -const TUint8 KUsbDevAttr_RemoteWakeup = (0x01 << 5); - -// -// Descriptor Indices for String Descriptors -// -const TUint KUsbDescStringIndex_Manufact = 14; -const TUint KUsbDescStringIndex_Product = 15; -const TUint KUsbDescStringIndex_Serial = 16; -const TUint KUsbDescStringIndex_Config = 6; - -// -// Endpoint Attributes -// -const TUint8 KUsbEpAttr_TransferTypeShift = 0; -const TUint8 KUsbEpAttr_TransferTypeMask = (0x03 << KUsbEpAttr_TransferTypeShift); -const TUint8 KUsbEpAttr_TransferTypeControl = (0x00 << KUsbEpAttr_TransferTypeShift); -const TUint8 KUsbEpAttr_TransferTypeIsochronous = (0x01 << KUsbEpAttr_TransferTypeShift); -const TUint8 KUsbEpAttr_TransferTypeBulk = (0x02 << KUsbEpAttr_TransferTypeShift); -const TUint8 KUsbEpAttr_TransferTypeInterrupt = (0x03 << KUsbEpAttr_TransferTypeShift); - -const TUint8 KUsbEpAttr_SyncTypeShift = 2; -const TUint8 KUsbEpAttr_SyncTypeMask = (0x03 << KUsbEpAttr_SyncTypeShift); -const TUint8 KUsbEpAttr_SyncTypeNoSync = (0x00 << KUsbEpAttr_SyncTypeShift); -const TUint8 KUsbEpAttr_SyncTypeAsync = (0x01 << KUsbEpAttr_SyncTypeShift); -const TUint8 KUsbEpAttr_SyncTypeAdaptive = (0x02 << KUsbEpAttr_SyncTypeShift); -const TUint8 KUsbEpAttr_SyncTypeSync = (0x03 << KUsbEpAttr_SyncTypeShift); - -const TUint8 KUsbEpAttr_UsageTypeShift = 4; -const TUint8 KUsbEpAttr_UsageTypeMask = (0x03 << KUsbEpAttr_UsageTypeShift); -const TUint8 KUsbEpAttr_UsageTypeDataEp = (0x00 << KUsbEpAttr_UsageTypeShift); -const TUint8 KUsbEpAttr_UsageTypeFeedbackEp = (0x01 << KUsbEpAttr_UsageTypeShift); -const TUint8 KUsbEpAttr_UsageTypeImplFbDataEp = (0x02 << KUsbEpAttr_UsageTypeShift); -const TUint8 KUsbEpAttr_UsageTypeReserved = (0x03 << KUsbEpAttr_UsageTypeShift); - -// -// OTG Feature Indicators -// -const TUint8 KUsbOtgAttr_SrpSupp = 0x01; -const TUint8 KUsbOtgAttr_HnpSupp = 0x02; -const TUint8 KUsbOtgAttr_B_HnpEnable = 0x04; -const TUint8 KUsbOtgAttr_A_HnpSupport = 0x08; -const TUint8 KUsbOtgAttr_A_AltHnpSupport = 0x10; - -// -// Feature Settings -// -const TUint KUsbFeature_EndpointHalt = 0; -const TUint KUsbFeature_RemoteWakeup = 1; -const TUint KUsbFeature_TestMode = 2; -const TUint KUsbFeature_B_HnpEnable = 3; -const TUint KUsbFeature_A_HnpSupport = 4; -const TUint KUsbFeature_A_AltHnpSupport = 5; - -// -// Test Mode Selectors (Set/ClearFeature) -// -const TUint KUsbTestSelector_Test_J = 0x01; -const TUint KUsbTestSelector_Test_K = 0x02; -const TUint KUsbTestSelector_Test_SE0_NAK = 0x03; -const TUint KUsbTestSelector_Test_Packet = 0x04; -const TUint KUsbTestSelector_Test_Force_Enable = 0x05; - -// -// Address Masks -// -const TUint8 KUsbEpAddress_In = 0x80; -const TUint8 KUsbEpAddress_Portmask = 0x0f; - -// -// Device Status Values (GET_STATUS) -// -const TUint16 KUsbDevStat_SelfPowered = (1 << 0); -const TUint16 KUsbDevStat_RemoteWakeup = (1 << 1); - -// -// Endpoint Status Values (GET_STATUS) -// -const TUint16 KUsbEpStat_Halt = (1 << 0); - - -// -// USB Descriptor Handling -// -/*------------------------------------------------ - USB transfers data in little-endian fashion. - The following macros swap the byte order in - words (16 bit) and longwords (32 bit), such that - they are in little-endian order afterwards. - ------------------------------------------------*/ -#if defined(__BIG_ENDIAN__) // Hitachi SuperH, Motorola 68k -#define SWAP_BYTES_16(x) \ - ((((x) >> 8) & 0x00ff) | \ - (((x) << 8) & 0xff00)) -#define SWAP_BYTES_32(x) \ - ((((x) >> 24) & 0x000000ff) | \ - (((x) >> 8) & 0x0000ff00) | \ - (((x) << 24) & 0xff000000) | \ - (((x) << 8) & 0x00ff0000)) -#else // ARM, Intel -#define SWAP_BYTES_16(x) (x) -#define SWAP_BYTES_32(x) (x) -#endif // defined(__BIG_ENDIAN__) - - -static inline TUint8 LowByte(TUint16 aWord) - { - return static_cast(aWord & 0x00ff); - } - -static inline TUint8 HighByte(TUint16 aWord) - { - return static_cast((aWord >> 8) & 0x00ff); - } - - -// -// Class-specific Values -// - -// These are from the CDC (valid also for Audio Class) -const TUint8 KUsbDescType_CS_Interface = 0x24; -const TUint8 KUsbDescType_CS_Endpoint = 0x25; - -// Audio Device Class -const TUint KUsbDescSize_AudioEndpoint = KUsbDescSize_Endpoint + 2; -const TUint KUsbAudioInterfaceClassCode = 0x01; -const TUint KUsbAudioInterfaceSubclassCode_Subclass_Undefined = 0x00; -const TUint KUsbAudioInterfaceSubclassCode_Audiocontrol = 0x01; -const TUint KUsbAudioInterfaceSubclassCode_Audiostreaming = 0x02; -const TUint KUsbAudioInterfaceSubclassCode_Midistreaming = 0x03; -const TUint KUsbAudioInterfaceProtocolCode_Pr_Protocol_Undefined = 0x00; - - -// -// These are defined just for convenience: -// -const TUint8 KEp0_Out = 0; -const TUint8 KEp0_In = 1; -const TUint8 KEp0_Rx = KEp0_Out; -const TUint8 KEp0_Tx = KEp0_In; - - -// -// USB Implementers Forum, Inc (USB-IF) assigned Vendor IDs: -// -const TUint16 KUsbVendorId_Symbian = 0x0E22; // Symbian Ltd. (dec. 3618) - - -#endif // __USB_H__ diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/usbc.h --- a/usbdrv/peripheral/public/usbc.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,359 +0,0 @@ -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32/include/drivers/usbc.h -// Kernel side definitions for the USB Device driver stack (PIL + LDD). -// -// - -/** - @file usbc.h - @internalTechnology -*/ - -#ifndef __USBC_H__ -#define __USBC_H__ - -#include -#include -#include -#include - -#include - -//#include -#include - - - -/** LDD Major version, This should agree with the information in RDevUsbcClient::TVer. -*/ -const TInt KUsbcMajorVersion = 0; - -/** LDD Minor version, This should agree with the information in RDevUsbcClient::TVer. -*/ -const TInt KUsbcMinorVersion = 1; - -/** LDD Build version, This should agree with the information in RDevUsbcClient::TVer. -*/ -const TInt KUsbcBuildVersion = KE32BuildVersionNumber; - -/** Must correspond to the max enum of TRequest + 1; - currently this is ERequestOtgFeaturesNotify = 10. -*/ -const TInt KUsbcMaxRequests = 11; - -// -//########################### Logical Device Driver (LDD) ############################# -// - -/** USB LDD factory class. -*/ -class DUsbcLogDevice : public DLogicalDevice - { -public: - DUsbcLogDevice(); - virtual TInt Install(); - virtual void GetCaps(TDes8& aDes) const; - virtual TInt Create(DLogicalChannelBase*& aChannel); - }; - - -/** OUT buffering is a collection of flat buffers. Each is either fillable or drainable. - When one buffer becomes full (notified by the PIL) it is marked as not-fillable and the next - fillable buffer is used. When the buffer has finished draining it is marked as fillable. -*/ -class TDmaBuf - { -public: - TDmaBuf(); - TDmaBuf(TUsbcEndpointInfo* aEndpointInfo, TInt aBandwidthPriority); - ~TDmaBuf(); - TInt Construct(TUsbcEndpointInfo* aEndpointInfo); - TInt BufferTotalSize() const; - TInt BufferSize() const; - TInt SetBufferAddr(TInt aBufInd, TUint8* aBufAddr); - TInt BufferNumber() const; - void SetMaxPacketSize(TInt aSize); - void Flush(); - // Rx (OUT) variants - void RxSetActive(); - void RxSetInActive(); - TBool RxIsActive(); - TBool IsReaderEmpty(); - void ReadXferComplete(TInt aNoBytesRx, TInt aNoPacketsRx, TInt aErrorCode); - TInt RxCopyDataToClient(DThread* aThread, TClientBuffer *aTcb, TInt aLength, TUint32& aDestOffset, - TBool aRUS, TBool& aCompleteNow); - TInt RxCopyPacketToClient(DThread* aThread,TClientBuffer *aTcb, TInt aLength); - TInt RxGetNextXfer(TUint8*& aBufferAddr, TUsbcPacketArray*& aIndexArray, TUsbcPacketArray*& aSizeArray, - TInt& aLength, TPhysAddr& aBufferPhys); - TBool RxIsEnoughSpace(TInt aSize); - inline TInt RxBytesAvailable() const; - inline void IncrementBufferIndex(TInt& aIndex); - inline TInt NoRxPackets() const; - TInt SetDrainable(TInt aBufferNum); - // Tx (IN) variants - void TxSetActive(); - void TxSetInActive(); - TBool TxIsActive(); - TInt TxStoreData(DThread* aThread,TClientBuffer *aTcb, TInt aTxLength, TUint32 aBufferOffset); - TInt TxGetNextXfer(TUint8*& aBufferAddr, TInt& aTxLength, TPhysAddr& aBufferPhys); - TBool ShortPacketExists(); - -#if defined(USBC_LDD_BUFFER_TRACE) - TInt NoRxPacketsAlt() const; - TInt NoRxBytesAlt() const; -#endif - -private: - TBool AdvancePacket(); - inline TInt GetCurrentError(); - TBool NextDrainableBuffer(); - TBool NextFillableBuffer(); - void FreeDrainedBuffers(); - TInt PeekNextPacketSize(); - TInt PeekNextDrainableBuffer(); - void ModifyTotalRxBytesAvail(TInt aVal); - void ModifyTotalRxPacketsAvail(TInt aVal); - void AddToDrainQueue(TInt aBufferIndex); - inline TInt CopyToUser(DThread* aThread, const TUint8* aSourceAddr, TInt aLength, - TClientBuffer *aTcb, TUint32& aDestOffset); -private: - TInt iExtractOffset; // offset into current packet for data read - TInt iMaxPacketSize; - TInt iNumberofBuffers; - TInt iBufSz; - TBool iRxActive; - TBool iTxActive; - TInt iTotalRxBytesAvail; - TInt iTotalRxPacketsAvail; - // - TUint8* iBufBasePtr; - TUint8* iCurrentDrainingBuffer; - TInt iCurrentDrainingBufferIndex; - TInt iCurrentFillingBufferIndex; - TUint iCurrentPacket; - TUsbcPacketArray* iCurrentPacketIndexArray; - TUsbcPacketArray* iCurrentPacketSizeArray; - TUint8* iBuffers[KUsbcDmaBufNumMax]; - TBool iDrainable[KUsbcDmaBufNumMax]; - TUsbcPacketArray iPacketInfoStorage[KUsbcDmaBufNumMax * KUsbcDmaBufNumArrays * KUsbcDmaBufMaxPkts]; - TUsbcPacketArray* iPacketIndex[KUsbcDmaBufNumMax]; - TUsbcPacketArray* iPacketSize[KUsbcDmaBufNumMax]; - TUint iNumberofBytesRx[KUsbcDmaBufNumMax]; - TUint iNumberofPacketsRx[KUsbcDmaBufNumMax]; - TInt iError[KUsbcDmaBufNumMax]; - TPhysAddr iBufferPhys[KUsbcDmaBufNumMax]; - TBool iCanBeFreed[KUsbcDmaBufNumMax]; - TInt iDrainQueue[KUsbcDmaBufNumMax + 1]; - TInt iDrainQueueIndex; - TUint iEndpointType; - -#if defined(USBC_LDD_BUFFER_TRACE) - TInt iFillingOrder; - TInt iFillingOrderArray[KUsbcDmaBufNumMax]; - TInt iDrainingOrder; - TUint iNumberofBytesRxRemain[KUsbcDmaBufNumMax]; - TUint iNumberofPacketsRxRemain[KUsbcDmaBufNumMax]; -#endif - }; - - -class DLddUsbcChannel; - -/** Endpoint tracking for the LDD buffering etc. -*/ -class TUsbcEndpoint - { -public: - TUsbcEndpoint(); - TUsbcEndpoint(DLddUsbcChannel* aLDD, DUsbClientController* aController, - const TUsbcEndpointInfo* aEndpointInfo, TInt aEndpointNum, - TInt aBandwidthPriority); - ~TUsbcEndpoint(); - TInt Construct(); - TInt TryToStartRead(TBool aReEntrant); - TInt TryToStartWrite(TEndpointTransferInfo* pTfr); - TInt CopyToClient(DThread* aThread, TClientBuffer *aTcb); - TInt CopyToClient(DThread* aClient, TBool& aCompleteNow, TClientBuffer *aTcb); - TInt ContinueWrite(); - void SetMaxPacketSize(TInt aSize); - void CancelTransfer(DThread* aThread, TClientBuffer *aTcb); - void AbortTransfer(); - inline TUsbcEndpointInfo* EndpointInfo(); - inline TInt RxBytesAvailable() const; - - inline TInt BufferSize() const; - inline TInt SetBufferAddr( TInt aBufInd, TUint8* aAddr); - inline TInt BufferNumber() const; - - inline void SetTransferInfo(TEndpointTransferInfo* aTransferInfo); - inline void ResetTransferInfo(); - inline void SetClientReadPending(TBool aVal); - inline void SetClientWritePending(TBool aVal); - inline TBool ClientWritePending(); - inline TBool ClientReadPending(); - inline void SetRealEpNumber(TInt aRealEpNumber); - inline TInt RealEpNumber() const; - -public: - TDmaBuf* iDmaBuffers; - -private: - static void RequestCallback(TAny* aTUsbcEndpoint); - void TxComplete(); - TInt RxComplete(TBool aReEntrant); - void RxCompleteNow(); - TInt EndpointComplete(); - -private: - DUsbClientController* iController; - TUsbcEndpointInfo iEndpointInfo; - TEndpointTransferInfo iTransferInfo; - TBool iClientReadPending; - TBool iClientWritePending; - TInt iEndpointNumber; - TInt iRealEpNumber; - DLddUsbcChannel* iLdd; - TInt iError; - TUsbcRequestCallback* iRequestCallbackInfo; - TUint32 iBytesTransferred; - TInt iBandwidthPriority; - }; - - -/** Linked list of 'alternate setting' info for use by the LDD. -*/ -class TUsbcAlternateSettingList - { -public: - TUsbcAlternateSettingList(); - ~TUsbcAlternateSettingList(); - -public: - TUsbcAlternateSettingList* iNext; - TInt iNumberOfEndpoints; - TUint iSetting; - TInt iEpNumDeOrderedByBufSize[KMaxEndpointsPerClient + 1]; - TUsbcEndpoint* iEndpoint[KMaxEndpointsPerClient + 1]; - }; - - -struct TClientAsynchNotify - { - TClientBufferRequest *iBufferRequest; - TClientBuffer *iClientBuffer; - void Reset(); - }; -/** The channel class - the actual USB LDD. -*/ -class DLddUsbcChannel : public DLogicalChannel - { -public: - DLddUsbcChannel(); - ~DLddUsbcChannel(); - virtual TInt SendMsg(TMessageBase * aMsg); - TInt PreSendRequest(TMessageBase * aMsg,TInt aReqNo, TRequestStatus* aStatus, TAny* a1, TAny* a2); - TInt SendControl(TMessageBase* aMsg); - virtual void HandleMsg(TMessageBase* aMsg); - virtual TInt DoCreate(TInt aUnit, const TDesC8* aInfo, const TVersion& aVer); - virtual TInt RequestUserHandle(DThread* aThread, TOwnerType aType); - TInt DoRxComplete(TUsbcEndpoint* aTUsbcEndpoint, TInt aEndpoint, TBool aReentrant); - void DoRxCompleteNow(TUsbcEndpoint* aTUsbcEndpoint, TInt aEndpoint); - void DoTxComplete(TUsbcEndpoint* aTUsbcEndpoint, TInt aEndpoint, TInt aError); - inline DThread* Client() const {return iClient;} - inline TBool ChannelClosing() const {return iChannelClosing;} - inline TUint AlternateSetting() const {return iAlternateSetting;} - TClientBuffer *GetClientBuffer(TInt aEndpoint); - -private: - TInt DoCancel(TInt aReqNo); - void DoRequest(TInt aReqNo, TRequestStatus* aStatus, TAny* a1, TAny* a2); - TInt DoControl(TInt aFunction, TAny* a1, TAny* a2); - TInt DoTransferAsyncReq(TInt aEndpointNum, TAny* a1, TAny* a2, TBool& aNeedsCompletion); - TInt DoOtherAsyncReq(TInt aReqNo, TAny* a1, TAny* a2, TBool& aNeedsCompletion); - TBool AlternateDeviceStateTestComplete(); - TInt SetInterface(TInt aInterfaceNum, TUsbcIfcInfo* aUserInterfaceInfoBuf); - void StartEpReads(); - void DestroyAllInterfaces(); - void DestroyInterface(TUint aInterface); - void DestroyEp0(); - inline TBool ValidEndpoint(TInt aEndpoint); - TInt DoEmergencyComplete(); - void ReadDes8(const TAny* aPtr, TDes8& aDes); - TInt SetupEp0(); - DPlatChunkHw* ReAllocate(TInt aBuffersize, DPlatChunkHw* aHwChunk, TUint32 aCacheAttribs); - DPlatChunkHw* Allocate(TInt aBuffersize, TUint32 aCacheAttribs); - void ClosePhysicalChunk(DPlatChunkHw* &aHwChunk); - void CancelNotifyEndpointStatus(); - void CancelNotifyOtgFeatures(); - static void StatusChangeCallback(TAny* aDLddUsbcChannel); - static void EndpointStatusChangeCallback(TAny* aDLddUsbcChannel); - static void OtgFeatureChangeCallback(TAny* aDLddUsbcChannel); - static void EmergencyCompleteDfc(TAny* aDLddUsbcChannel); - void DeConfigure(TInt aErrorCode); - TInt SelectAlternateSetting(TUint aAlternateSetting); - TInt EpFromAlternateSetting(TUint aAlternateSetting, TInt aEndpoint); - TInt ProcessAlternateSetting(TUint aAlternateSetting); - TInt ProcessDeviceState(TUsbcDeviceState aDeviceState); - void ResetInterface(TInt aErrorCode); - void AbortInterface(); - // Set buffer address of the interface - void ReSetInterfaceMemory(TUsbcAlternateSettingList* aAlternateSettingListRec, - RArray &aHwChunks ); - void UpdateEndpointSizes(); - // Check and alloc memory for the interface - TInt SetupInterfaceMemory(RArray &aHwChunks, - TUint32 aCacheAttribs ); - void PanicClientThread(TInt aReason); - TInt PinMemory(TDesC8 *aDes, TVirtualPinObject *iPinObj); //Descriptor pinning helper. - void CompleteBufferRequest(DThread* aThread, TInt aReqNo, TInt aReason); -private: - DUsbClientController* iController; - DThread* iClient; - TBool iValidInterface; - TUsbcAlternateSettingList* iAlternateSettingList; - TUsbcEndpoint* iEndpoint[KMaxEndpointsPerClient + 1]; // include ep0 - TRequestStatus* iRequestStatus[KUsbcMaxRequests]; - TClientAsynchNotify* iClientAsynchNotify[KUsbcMaxRequests]; - TUsbcClientCallback iCompleteAllCallbackInfo; - TAny* iStatusChangePtr; - TUsbcStatusCallback iStatusCallbackInfo; - TAny* iEndpointStatusChangePtr; - TUsbcEndpointStatusCallback iEndpointStatusCallbackInfo; - TAny* iOtgFeatureChangePtr; - TUsbcOtgFeatureCallback iOtgFeatureCallbackInfo; - TInt iNumberOfEndpoints; - RArray iHwChunksEp0; - RArray iHwChunks; - - TUsbcDeviceState iDeviceState; - TUsbcDeviceState iOldDeviceState; - TBool iOwnsDeviceControl; - TUint iAlternateSetting; - TBool iDeviceStatusNeeded; - TUsbcDeviceStatusQueue* iStatusFifo; - TBool iChannelClosing; - TVirtualPinObject *iPinObj1; - TVirtualPinObject *iPinObj2; - TVirtualPinObject *iPinObj3; - TClientDataRequest *iStatusChangeReq; - TClientDataRequest *iEndpointStatusChangeReq; - TClientDataRequest *iOtgFeatureChangeReq; - TEndpointTransferInfo iTfrInfo; - }; - - -#include - -#endif // __USBC_H__ diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/usbc.inl --- a/usbdrv/peripheral/public/usbc.inl Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,115 +0,0 @@ -// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32\include\drivers\usbc.inl -// Kernel side inline header file for USB device driver. -// -// - -/** - @file usbc.inl - @internalTechnology -*/ - -#ifndef __USBC_INL__ -#define __USBC_INL__ - - -// --- USB Logical Device Driver (LDD) --- -// - -TInt TDmaBuf::RxBytesAvailable() const - { - return iTotalRxBytesAvail; - } - - -TUsbcEndpointInfo* TUsbcEndpoint::EndpointInfo() - { - return &iEndpointInfo; - } - - -TInt TUsbcEndpoint::RxBytesAvailable() const - { - return iDmaBuffers->RxBytesAvailable(); - } - -TInt TUsbcEndpoint::BufferSize() const - { - return iDmaBuffers->BufferSize(); - } -TInt TUsbcEndpoint::SetBufferAddr( TInt aBufInd, TUint8* aBufAddr) - { - return iDmaBuffers->SetBufferAddr(aBufInd, aBufAddr); - } -TInt TUsbcEndpoint::BufferNumber() const - { - return iDmaBuffers->BufferNumber(); - } - -void TUsbcEndpoint::SetTransferInfo(TEndpointTransferInfo* aTransferInfo) - { - iTransferInfo = *aTransferInfo; - iBytesTransferred = 0; - } - - -void TUsbcEndpoint::ResetTransferInfo() - { - iTransferInfo.iDes = NULL; - iTransferInfo.iTransferType = ETransferTypeNone; - iTransferInfo.iTransferSize = 0; - iTransferInfo.iZlpReqd = EFalse; - iBytesTransferred = 0; - } - - -void TUsbcEndpoint::SetClientReadPending(TBool aVal) - { - iClientReadPending = aVal; - } - - -TBool TUsbcEndpoint::ClientReadPending() - { - return iClientReadPending; - } - - -void TUsbcEndpoint::SetClientWritePending(TBool aVal) - { - iClientWritePending = aVal; - } - - -TBool TUsbcEndpoint::ClientWritePending() - { - return iClientWritePending; - } - - -void TUsbcEndpoint::SetRealEpNumber(TInt aRealEpNumber) - { - iRealEpNumber = aRealEpNumber; - iRequestCallbackInfo->iRealEpNum = aRealEpNumber; - } - - -TInt TUsbcEndpoint::RealEpNumber() const - { - return iRealEpNumber; - } - - -#endif // __USBC_INL__ diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/usbcdesc.h --- a/usbdrv/peripheral/public/usbcdesc.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,360 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32/include/drivers/usbcdesc.h -// USB descriptors and their management. -// -// - -/** - @file usbcdesc.h - @internalTechnology -*/ - -#ifndef __USBCDESC_H__ -#define __USBCDESC_H__ - -#include - - -// Hard-wired positions of some descriptors in iDescriptors array (whether present or not): -static const TInt KDescPosition_Device = 0; -static const TInt KDescPosition_DeviceQualifier = 1; -static const TInt KDescPosition_OtherSpeedConfig = 2; -static const TInt KDescPosition_Config = 3; -static const TInt KDescPosition_Otg = 4; -static const TInt KDescPosition_FirstAvailable = 5; - -// Hard-wired positions of string descriptors in iStrings array (whether present or not): -static const TInt KStringPosition_Langid = 0; -static const TInt KStringPosition_Manufact = 1; -static const TInt KStringPosition_Product = 2; -static const TInt KStringPosition_Serial = 3; -static const TInt KStringPosition_Config = 4; -static const TInt KStringPosition_OtherSpeedConfig = 5; -static const TInt KStringPosition_FirstAvailable = 6; - - -NONSHARABLE_CLASS(TUsbcDescriptorBase) - { -public: - virtual ~TUsbcDescriptorBase(); - void SetByte(TInt aPosition, TUint8 aValue); - void SetWord(TInt aPosition, TUint16 aValue); - TUint8 Byte(TInt aPosition) const; - TUint16 Word(TInt aPosition) const; - void GetDescriptorData(TDes8& aBuffer) const; - TInt GetDescriptorData(TUint8* aBuffer) const; - TInt GetDescriptorData(TUint8* aBuffer, TUint aMaxSize) const; - const TDes8& DescriptorData() const; - TDes8& DescriptorData(); - TUint Size() const; - TUint8 Type() const; - virtual void UpdateFs(); - virtual void UpdateHs(); -protected: - TUsbcDescriptorBase(); - void SetBufferPointer(const TDesC8& aDes); -private: -#ifdef USB_SUPPORTS_SET_DESCRIPTOR_REQUEST - TUint8 iIndex; // only needed for SET_DESCRIPTOR -#endif - TPtr8 iBufPtr; - }; - - -NONSHARABLE_CLASS(TUsbcDeviceDescriptor) : public TUsbcDescriptorBase - { -public: - /** aMaxPacketSize0 should be the Ep0 max packet size for FS operation (as the HS size - is fixed and known). - */ - static TUsbcDeviceDescriptor* New(TUint8 aDeviceClass, TUint8 aDeviceSubClass, - TUint8 aDeviceProtocol, TUint8 aMaxPacketSize0, - TUint16 aVendorId, TUint16 aProductId, - TUint16 aDeviceRelease, TUint8 aNumConfigurations); - virtual void UpdateFs(); - virtual void UpdateHs(); -private: - TUsbcDeviceDescriptor(); - TInt Construct(TUint8 aDeviceClass, TUint8 aDeviceSubClass, TUint8 aDeviceProtocol, - TUint8 aMaxPacketSize0, TUint16 aVendorId, TUint16 aProductId, - TUint16 aDeviceRelease, TUint8 aNumConfigurations); - TBuf8 iBuf; - TUint8 iEp0Size_Fs; // holds Ep0 size for FS (could be < 64) - }; - - -NONSHARABLE_CLASS(TUsbcDeviceQualifierDescriptor) : public TUsbcDescriptorBase - { -public: - /** aMaxPacketSize0 should be the Ep0 max packet size for FS operation (as the HS size - is fixed and known). - */ - static TUsbcDeviceQualifierDescriptor* New(TUint8 aDeviceClass, TUint8 aDeviceSubClass, - TUint8 aDeviceProtocol, TUint8 aMaxPacketSize0, - TUint8 aNumConfigurations, TUint8 aReserved=0); - virtual void UpdateFs(); - virtual void UpdateHs(); -private: - TUsbcDeviceQualifierDescriptor(); - TInt Construct(TUint8 aDeviceClass, TUint8 aDeviceSubClass, TUint8 aDeviceProtocol, - TUint8 aMaxPacketSize0, TUint8 aNumConfigurations, TUint8 aReserved); - TBuf8 iBuf; - TUint8 iEp0Size_Fs; // holds Ep0 size for FS (could be < 64) - }; - - -NONSHARABLE_CLASS(TUsbcConfigDescriptor) : public TUsbcDescriptorBase - { -public: - /** aMaxPower should be given here in milliamps (not mA/2). */ - static TUsbcConfigDescriptor* New(TUint8 aConfigurationValue, TBool aSelfPowered, TBool aRemoteWakeup, - TUint16 aMaxPower); -private: - TUsbcConfigDescriptor(); - TInt Construct(TUint8 aConfigurationValue, TBool aSelfPowered, TBool aRemoteWakeup, TUint16 aMaxPower); - TBuf8 iBuf; - }; - - -// The Other_Speed_Configuration descriptor has same size and layout as the -// standard Configuration descriptor, therefore we don't need a new definition. -typedef TUsbcConfigDescriptor TUsbcOtherSpeedConfigDescriptor; - - -NONSHARABLE_CLASS(TUsbcInterfaceDescriptor) : public TUsbcDescriptorBase - { -public: - static TUsbcInterfaceDescriptor* New(TUint8 aInterfaceNumber, TUint8 aAlternateSetting, TInt NumEndpoints, - const TUsbcClassInfo& aClassInfo); -private: - TUsbcInterfaceDescriptor(); - TInt Construct(TUint8 aInterfaceNumber, TUint8 aAlternateSetting, TInt aNumEndpoints, - const TUsbcClassInfo& aClassInfo); - TBuf8 iBuf; - }; - - -NONSHARABLE_CLASS(TUsbcEndpointDescriptorBase) : public TUsbcDescriptorBase - { -public: - virtual void UpdateFs(); - virtual void UpdateHs(); -protected: - TInt Construct(const TUsbcEndpointInfo& aEpInfo); - TUsbcEndpointDescriptorBase(); -protected: - /** Stores the endpoint size to be used for FS. */ - TInt iEpSize_Fs; - /** Stores the endpoint size to be used for HS. */ - TInt iEpSize_Hs; - /** Stores the endpoint polling interval to be used for FS. */ - TInt iInterval_Fs; - /** Stores the endpoint polling interval to be used for HS. */ - TInt iInterval_Hs; - }; - - -NONSHARABLE_CLASS(TUsbcEndpointDescriptor) : public TUsbcEndpointDescriptorBase - { -public: - static TUsbcEndpointDescriptor* New(TUint8 aEndpointAddress, const TUsbcEndpointInfo& aEpInfo); -private: - TUsbcEndpointDescriptor(); - TInt Construct(TUint8 aEndpointAddress, const TUsbcEndpointInfo& aEpInfo); - TBuf8 iBuf; - }; - - -class TUsbcAudioEndpointDescriptor : public TUsbcEndpointDescriptorBase - { -public: - static TUsbcAudioEndpointDescriptor* New(TUint8 aEndpointAddress, const TUsbcEndpointInfo& aEpInfo); -private: - TUsbcAudioEndpointDescriptor(); - TInt Construct(TUint8 aEndpointAddress, const TUsbcEndpointInfo& aEpInfo); - TBuf8 iBuf; - }; - - -NONSHARABLE_CLASS(TUsbcOtgDescriptor) : public TUsbcDescriptorBase - { -public: - static TUsbcOtgDescriptor* New(TBool aHnpSupport, TBool aSrpSupport); -private: - TUsbcOtgDescriptor(); - TInt Construct(TBool aHnpSupport, TBool aSrpSupport); - TBuf8 iBuf; - }; - - -NONSHARABLE_CLASS(TUsbcClassSpecificDescriptor) : public TUsbcDescriptorBase - { -public: - virtual ~TUsbcClassSpecificDescriptor(); - static TUsbcClassSpecificDescriptor* New(TUint8 aType, TInt aSize); -private: - TUsbcClassSpecificDescriptor(); - TInt Construct(TUint8 aType, TInt aSize); - HBuf8* iBuf; - }; - - -NONSHARABLE_CLASS(TUsbcStringDescriptorBase) - { -public: - virtual ~TUsbcStringDescriptorBase(); - TUint16 Word(TInt aPosition) const; - void SetWord(TInt aPosition, TUint16 aValue); - TInt GetDescriptorData(TUint8* aBuffer) const; - TInt GetDescriptorData(TUint8* aBuffer, TUint aMaxSize) const; - const TDes8& StringData() const; - TDes8& StringData(); - TUint Size() const; - void SetBufferPointer(const TDesC8& aDes); -protected: - TUsbcStringDescriptorBase(); - TBuf8<2> iSBuf; - TPtr8 iBufPtr; -private: -// TUint8 iIndex; // not needed in DescriptorPool: position == index - }; - - -NONSHARABLE_CLASS(TUsbcStringDescriptor) : public TUsbcStringDescriptorBase - { -public: - virtual ~TUsbcStringDescriptor(); - static TUsbcStringDescriptor* New(const TDesC8& aString); -private: - TUsbcStringDescriptor(); - TInt Construct(const TDesC8& aString); - HBuf8* iBuf; - }; - - -// Currently we support only one language, and thus there's no need to provide -// a LangId string descriptor with more than one array element. -NONSHARABLE_CLASS(TUsbcLangIdDescriptor) : public TUsbcStringDescriptorBase - { -public: - virtual ~TUsbcLangIdDescriptor(); - static TUsbcLangIdDescriptor* New(TUint16 aLangId); -private: - TUsbcLangIdDescriptor(); - TInt Construct(TUint16 aLangId); - TBuf8<2> iBuf; - }; - - -class TUsbcDescriptorPool - { -public: - TUsbcDescriptorPool(TUint8* aEp0_TxBuf); - ~TUsbcDescriptorPool(); - TInt Init(TUsbcDeviceDescriptor* aDeviceDesc, TUsbcConfigDescriptor* aConfigDesc, - TUsbcLangIdDescriptor* aLangId, TUsbcStringDescriptor* aManufacturer, - TUsbcStringDescriptor* aProduct, TUsbcStringDescriptor* aSerialNum, - TUsbcStringDescriptor* aConfig, TUsbcOtgDescriptor* aOtgDesc); - TInt InitHs(); - TInt UpdateDescriptorsFs(); - TInt UpdateDescriptorsHs(); - - // Descriptors - TInt FindDescriptor(TUint8 aType, TUint8 aIndex, TUint16 aLangid, TInt& aSize) const; - void InsertDescriptor(TUsbcDescriptorBase* aDesc); - void DeleteIfcDescriptor(TInt aNumber, TInt aSetting=0); - // The TC in many of the following functions stands for 'ThreadCopy' because that's what happens there. - TInt GetDeviceDescriptorTC(DThread* aThread, TDes8& aBuffer) const; - TInt SetDeviceDescriptorTC(DThread* aThread, const TDes8& aBuffer); - TInt GetConfigurationDescriptorTC(DThread* aThread, TDes8& aBuffer) const; - TInt SetConfigurationDescriptorTC(DThread* aThread, const TDes8& aBuffer); - TInt GetOtgDescriptorTC(DThread* aThread, TDes8& aBuffer) const; - TInt SetOtgDescriptor(const TDesC8& aBuffer); - TInt GetInterfaceDescriptorTC(DThread* aThread, TDes8& aBuffer, TInt aInterface, TInt aSetting) const; - TInt SetInterfaceDescriptor(const TDes8& aBuffer, TInt aInterface, TInt aSetting); - TInt GetEndpointDescriptorTC(DThread* aThread, TDes8& aBuffer, TInt aInterface, TInt aSetting, - TUint8 aEndpointAddress) const; - TInt SetEndpointDescriptorTC(DThread* aThread, const TDes8& aBuffer, TInt aInterface, TInt aSetting, - TUint8 aEndpointAddress); - TInt GetEndpointDescriptorSize(TInt aInterface, TInt aSetting, TUint8 aEndpointAddress, TInt& aSize) const; - TInt GetDeviceQualifierDescriptorTC(DThread* aThread, TDes8& aBuffer) const; - TInt SetDeviceQualifierDescriptorTC(DThread* aThread, const TDes8& aBuffer); - TInt GetOtherSpeedConfigurationDescriptorTC(DThread* aThread, TDes8& aBuffer) const; - TInt SetOtherSpeedConfigurationDescriptorTC(DThread* aThread, const TDes8& aBuffer); - TInt GetCSInterfaceDescriptorTC(DThread* aThread, TDes8& aBuffer, TInt aInterface, TInt aSetting) const; - TInt SetCSInterfaceDescriptorTC(DThread* aThread, const TDes8& aBuffer, TInt aInterface, TInt aSetting, - TInt aSize); - TInt GetCSInterfaceDescriptorSize(TInt aInterface, TInt aSetting, TInt& aSize) const; - TInt GetCSEndpointDescriptorTC(DThread* aThread, TDes8& aBuffer, TInt aInterface, TInt aSetting, - TUint8 aEndpointAddress) const; - TInt SetCSEndpointDescriptorTC(DThread* aThread, const TDes8& aBuffer, TInt aInterface, TInt aSetting, - TUint8 aEndpointAddress, TInt aSize); - TInt GetCSEndpointDescriptorSize(TInt aInterface, TInt aSetting, TUint8 aEndpointAddress, TInt& aSize) const; - - // String descriptors - void SetIfcStringDescriptor(TUsbcStringDescriptor* aDesc, TInt aNumber, TInt aSetting=0); - TInt GetStringDescriptorLangIdTC(DThread* aThread, TDes8& aLangId) const; - TInt SetStringDescriptorLangId(TUint16 aLangId); - TInt GetManufacturerStringDescriptorTC(DThread* aThread, TDes8& aString) const; - TInt SetManufacturerStringDescriptorTC(DThread* aThread, const TDes8& aString); - TInt RemoveManufacturerStringDescriptor(); - TInt GetProductStringDescriptorTC(DThread* aThread, TDes8& aString) const; - TInt SetProductStringDescriptorTC(DThread* aThread, const TDes8& aString); - TInt RemoveProductStringDescriptor(); - TInt GetSerialNumberStringDescriptorTC(DThread* aThread, TDes8& aString) const; - TInt SetSerialNumberStringDescriptorTC(DThread* aThread, const TDes8& aString); - TInt RemoveSerialNumberStringDescriptor(); - TInt GetConfigurationStringDescriptorTC(DThread* aThread, TDes8& aString) const; - TInt SetConfigurationStringDescriptorTC(DThread* aThread, const TDes8& aString); - TInt RemoveConfigurationStringDescriptor(); - TInt GetStringDescriptorTC(DThread* aThread, TInt aIndex, TDes8& aString) const; - TInt SetStringDescriptorTC(DThread* aThread, TInt aIndex, const TDes8& aString); - TInt RemoveStringDescriptor(TInt aIndex); - -private: - // Descriptors - void InsertIfcDesc(TUsbcDescriptorBase* aDesc); - void InsertEpDesc(TUsbcDescriptorBase* aDesc); - TInt FindIfcDescriptor(TInt aIfcNumber, TInt aIfcSetting) const; - TInt FindEpDescriptor(TInt aIfcNumber, TInt aIfcSetting, TUint8 aEpAddress) const; - void DeleteDescriptors(TInt aIndex, TInt aCount = 1); - void UpdateConfigDescriptorLength(TInt aLength); - void UpdateConfigDescriptorNumIfcs(TInt aNumber); - void UpdateIfcNumbers(TInt aNumber); - TInt GetDeviceDescriptor(TInt aIndex) const; - TInt GetConfigurationDescriptor(TInt aIndex) const; - TInt GetOtgDescriptor() const; - - // String descriptors - TInt GetStringDescriptor(TInt aIndex) const; - TInt GetDeviceStringDescriptorTC(DThread* aThread, TDes8& aString, TInt aIndex, TInt aPosition) const; - TInt SetDeviceStringDescriptorTC(DThread* aThread, const TDes8& aString, TInt aIndex, TInt aPosition); - TInt RemoveDeviceStringDescriptor(TInt aIndex, TInt aPosition); - void ExchangeStringDescriptor(TInt aIndex, const TUsbcStringDescriptor* aDesc); - TBool AnyStringDescriptors() const; - TBool StringDescriptorExists(TInt aIndex) const; - TInt FindAvailableStringPos() const; - -private: - // Data members - RPointerArray iDescriptors; - RPointerArray iStrings; - TInt iIfcIdx; - TUint8* const iEp0_TxBuf; // points to the controller's ep0 TX buffer - TBool iHighSpeed; // true if currently operating at high-speed - }; - - -#endif // __USBCDESC_H__ diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/usbcontrolxferif.h --- a/usbdrv/peripheral/public/usbcontrolxferif.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -/* - Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). - All rights reserved. - - This program and the accompanying materials are made available - under the terms of the Eclipse Public License v1.0 which accompanies - this distribution, and is available at - http://www.eclipse.org/legal/epl-v10.html - - Initial Contributors: - Nokia Corporation - initial contribution. - - Contributors: -*/ - -#ifndef USBCONTROLXFERIF_H -#define USBCONTROLXFERIF_H - -#include // General types definition - -/** - * Callback interfaces that used to process packet received from Host - * and interfaces through which that PIL or app can send request to PSL - */ -NONSHARABLE_CLASS(MControlTransferIf) - { - public: - // Interface for RX - // Transfer direction from Device to Host - // This two interface is saying PSL had finished - // sending those data to host. - virtual void ProcessDataInPacket(TInt aCount,TInt aErrCode) = 0; - virtual void ProcessStatusInPacket(TInt aErrCode) = 0; - - // Transfer direction from Host to Device - // they are saying that some data had been recieved from host - virtual void ProcessDataOutPacket(TInt aCount,TInt aErrCode) = 0; - virtual void ProcessStatusOutPacket(TInt aErrCode) = 0; - virtual void ProcessSetupPacket(TInt aCount,TInt aErrCode) = 0; - - // Interface for TX and Control - // Data/Status transfer function - virtual TInt ProcessSetupEndpointZeroRead() = 0; - virtual TInt ProcessSetupEndpointZeroWrite(const TUint8* aBuffer, TInt aLength, TBool aZlpReqd=EFalse) = 0; - virtual TInt ProcessSendEp0ZeroByteStatusPacket() = 0; - virtual TInt ProcessStallEndpoint(TInt aRealEndpoint) = 0; - - // Flow control interface - // In case of we can not deliver received packet(setup or data) to a registered client - // (because the request callback is not ready), we need PSL stop reporting more packet - // to PIL until the pending packet had been process. - // this 2 functions is used to notify PSL: you can continue, the pending packet is proceed. - virtual void ProcessEp0SetupPacketProceed() = 0; - virtual void ProcessEp0DataPacketProceed() = 0; - }; - -#endif //USBCONTROLXFERIF_H - -// End of file - diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/usbcque.h --- a/usbdrv/peripheral/public/usbcque.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,147 +0,0 @@ -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32\include\drivers\usbcque.h -// Simple singly linked list + its iterator for the USB Device driver. -// -// - -/** - @file usbcque.h - @internalTechnology -*/ - -#ifndef __USBCQUE_H__ -#define __USBCQUE_H__ - -#include - - -// -// --- Class definitions --- -// - -class TSglQueLink - { -private: - void Enque(TSglQueLink* aLink); -public: - TSglQueLink* iNext; - friend class TSglQueBase; - }; - - -class TSglQueBase - { -protected: - TSglQueBase(TInt aOffset); - void DoAddLast(TAny* aPtr); - void DoRemove(TAny* aPtr); -protected: - TSglQueLink* iHead; - TSglQueLink* iLast; - TInt iOffset; - TInt iElements; -private: - friend class TSglQueIterBase; - }; - - -template -class TSglQue : public TSglQueBase - { -public: - inline TSglQue(TInt aOffset); - inline void AddLast(T& aRef); - inline void Remove(T& aRef); - inline TInt Elements() const; - }; - - -class TSglQueIterBase - { -public: - void SetToFirst(); -protected: - TSglQueIterBase(TSglQueBase& aQue); - TAny* DoPostInc(); - TAny* DoCurrent(); -protected: - TInt iOffset; - TSglQueLink*& iHead; - TSglQueLink* iNext; - }; - - -template -class TSglQueIter : public TSglQueIterBase - { -public: - inline TSglQueIter(TSglQueBase& aQue); - inline operator T*(); - inline T* operator++(TInt); - }; - -// -// --- Inline implementations --- -// - -// Class TSglQue -template -inline TSglQue::TSglQue(TInt aOffset) - : TSglQueBase(aOffset) - {} - - -template -inline void TSglQue::AddLast(T& aRef) - { - DoAddLast(&aRef); - } - - -template -inline void TSglQue::Remove(T& aRef) - { - DoRemove(&aRef); - } - - -template -inline TInt TSglQue::Elements() const - { - return iElements; - } - - -// Class TSglQueIter -template -inline TSglQueIter::TSglQueIter(TSglQueBase& aQue) - : TSglQueIterBase(aQue) - {} - - -template -inline TSglQueIter::operator T*() - { - return ((T*)DoCurrent()); - } - -template -inline T* TSglQueIter::operator++(TInt) - { - return ((T*)DoPostInc()); - } - - -#endif // __USBCQUE_H__ diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/usbcsc.h --- a/usbdrv/peripheral/public/usbcsc.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,500 +0,0 @@ -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32\include\drivers\usbcsc.h -// Kernel side definitions for the USB Device driver stack (PIL + LDD). -// -// - -/** - @file usbcsc.h - @internalTechnology -*/ - -#ifndef __USBCSC_H__ -#define __USBCSC_H__ - -#include -#include -#include -#include - -#include - -// #include -#include - -/** LDD Major version, This should agree with the information in RDevUsbcClient::TVer. -*/ -const TInt KUsbcScMajorVersion = 0; - -/** LDD Minor version, This should agree with the information in RDevUsbcClient::TVer. -*/ -const TInt KUsbcScMinorVersion = 1; - -/** LDD Build version, This should agree with the information in RDevUsbcClient::TVer. -*/ -const TInt KUsbcScBuildVersion = KE32BuildVersionNumber; - -/** Must correspond to the max enum of TRequest + 1; - currently this is ERequestOtgFeaturesNotify = 10. -*/ -const TInt KUsbcScMaxRequests = 11; - -// Request queue sizes need to be power of 2. - -/** The number of requests that can be queued on any IN endpoint */ -const TInt KUsbcScInRequests = 4; -/** The number of requests that can be queued on any OUT endpoint */ -const TInt KUsbcScOutRequests = 2; - -/** In TUsbcScBuffer.iDirection, this indicates that the endpoint is an IN endpoint */ -const TInt KUsbcScIn = 0; -/** In TUsbcScBuffer.iDirection, this indicates that the endpoint is an OUT endpoint */ -const TInt KUsbcScOut = 1; - - -/** In TUsbcScBuffer.iDirection, this indicates that the endpoint is an Bidirectional endpoint -currently operating as an IN endpoint */ -const TInt KUsbcScBiIn = 2; -/** In TUsbcScBuffer.iDirection, this indicates that the endpoint is an Bidirectional endpoint -currently operating as an OUT endpoint */ -const TInt KUsbcScBiOut = 3; - -/** The number of directions supported for endpoints, other then EP0. Currently 2, IN and OUT. */ -const TInt KUsbcScDirections = 2; - -/** In TUsbcScBuffer::iDirection, this indicates that the endpoint direction is Unknown. */ -const TInt KUsbcScUnknown = 4; - -const TInt KPageSize = 0x1000; - -/** The default buffer size requested for a endpoint, if the user app does not specify a size.*/ -const TInt KUsbcScDefaultBufferSize = 0x10000; // 64k - -/** The size of the unmapped region of memory between endpoint buffers. -This serves as a guard region, making memory over/under runs more obviose.*/ -const TInt KGuardSize = KPageSize; - -/** The size put aside for the chunk header structre.*/ -const TInt KHeaderSize = KPageSize; - -/** For buffers of size >= KUsbScBigBuffIs, The smallest unit of continiouse memory that will be used. -No read will be set up smaller then this, to avoid overly fragmenting the data. -*/ -const TInt KUsbSc_BigBuff_MinimumRamRun = KPageSize; - -/** For buffers of size < KUsbScBigBuffIs, The smallest unit of continiouse memory that will be used. -No read will be set up smaller then this, to avoid overly fragmenting the data.*/ -const TInt KUsbSc_SmallBuff_MinimumRamRun = 1024; - -/** The size a buffer request has to be to switch to using KUsbSc_BigBuff_MinimumRamRun. -If the requested buffer is smaller, then the smallest memory allocated to a buffer is KPageSize*/ -const TInt KUsbScBigBuffIs = KPageSize*6; - - - -// EP0 is mapped manually, unlike the other endpoints. - -/** The position, within the chunk, that the EP0 IN buffer appears*/ -const TInt KUsbScEP0InBufPos = 0x800; -/** The position, within the chunk, that the EP0 IN buffer ends*/ -const TInt KUsbScEP0InBufEnd = KUsbScEP0InBufPos + 0x400; - -// Its better for Out to go 2nd, so gaurd page after it. -/** The position, within the chunk, that the EP0 OUT buffer appears*/ -const TInt KUsbScEP0OutBufPos = 0xc00; -/** The position, within the chunk, that the EP0 OUT buffer ends*/ -const TInt KUsbScEP0OutBufEnd = KUsbScEP0OutBufPos + 0x400; - -/** The number of the entry within the chunk BufferRecord table, for the OUT ep0 buffer.*/ -const TInt KUsbcScEp0OutBuff = 0; -/** The number of the entry within the chunk BufferRecord table, for the IN ep0 buffer.*/ -const TInt KUsbcScEp0InBuff = 1; - - -// -//########################### Logical Device Driver (LDD) ############################# -// - -/** USB LDD factory class. -*/ -class DUsbcScLogDevice : public DLogicalDevice - { -public: - DUsbcScLogDevice(); - virtual TInt Install(); - virtual void GetCaps(TDes8& aDes) const; - virtual TInt Create(DLogicalChannelBase*& aChannel); - }; - - -class DLddUsbcScChannel; -class TUsbcScBuffer; -/** Endpoint tracking for the LDD buffering etc. -*/ -class TUsbcScEndpoint - { -public: - TUsbcScEndpoint(DLddUsbcScChannel* aLDD, DUsbClientController* aController, - const TUsbcScEndpointInfo* aEndpointInfo, TInt aEndpointNum - ); - ~TUsbcScEndpoint(); - TInt Construct(); - void CancelTransfer(DThread* aThread); - void AbortTransfer(); - inline TUsbcScEndpointInfo* EndpointInfo(); - inline TInt RxBytesAvailable() const; - inline void ResetTransferInfo(); - inline void SetClientReadPending(TBool aVal); - inline void SetClientWritePending(TBool aVal); - inline TBool ClientWritePending(); - inline TBool ClientReadPending(); - inline void SetRealEpNumber(TInt aRealEpNumber); - inline TInt RealEpNumber() const; - inline TInt EpNumber() const; - inline void StartBuffer(); - inline void SetBuffer(TUsbcScBuffer* aBuffer); - inline TUsbcScBuffer* GetBuffer(); - - -private: - static void RequestCallback(TAny* aTUsbcScEndpoint); - void TxComplete(); - TInt RxComplete(TBool aReEntrant); - void RxCompleteNow(); - - - -public: - TUsbcRequestCallback* iRequestCallbackInfo; - -private: - DUsbClientController* iController; - TUsbcScEndpointInfo iEndpointInfo; - TBool iClientReadPending; - TBool iClientWritePending; - TInt iEndpointNumber; - TInt iRealEpNumber; - DLddUsbcScChannel* iLdd; - TInt iError; - TUint32 iBytesTransferred; - TInt iBandwidthPriority; - TUsbcScBuffer* iBuffer; - - }; - - -/** Linked list of 'alternate setting' info for use by the LDD. -*/ -class TUsbcScAlternateSetting - { -public: - TUsbcScAlternateSetting(); - ~TUsbcScAlternateSetting(); - -public: - TUsbcScAlternateSetting* iNext; - TUsbcScAlternateSetting* iPrevious; - TInt iNumberOfEndpoints; - TUint iSetting; - TUsbcScEndpoint* iEndpoint[KMaxEndpointsPerClient + 1]; - }; - -class TUsbcScAlternateSettingList - { -public: - TUsbcScAlternateSettingList(); - ~TUsbcScAlternateSettingList(); - -public: - TUsbcScAlternateSetting* iHead; - TUsbcScAlternateSetting* iTail; - }; - -class TUsbcScChunkInfo - { -public: - TUsbcScChunkInfo(DLogicalDevice* aLdd); - TInt CreateChunk(TInt aTotalSize); - void Close(); - TInt ChunkAlloc(TInt aOffset, TInt aSize); - void ChunkCleanup(); - TInt GetPhysical(TInt aOffset, TPhysAddr* aPhysical); - static TInt New(TUsbcScChunkInfo*& aChunk, TInt aSize, DLogicalDevice* aLdd); -private: - TUint* iPhysicalMap; -public: - DChunk* iChunk; - TDfc iCleanup; - - TInt8 iPageNtz; // Number of trailing zeros for a page. (Eg 4k page has 12 t.z.) - TInt iAllocatedSize; - TInt8* iChunkMem; - TUint32 iChunkMapAttr; - DLogicalDevice* iLdd; - }; - - -// Used to represent a matrix of endpoints with a column of sizes. -// Used by TRealizeInfo - -class TEndpointSortBufs - { - public: - TUsbcScEndpoint** iEp; - TInt* iSizes; - TInt iEps; - }; - -// This is used to calculate the layout of the shared chunk -// based on a list of alternative settings / endpoints provided. - -class TRealizeInfo - { - public: - void Init(TUsbcScAlternateSettingList* aAlternateSettingList); - TInt CopyAndSortEndpoints(); - void CalcBuffSizes(); - void Free(); - - void LayoutChunkHeader(TUsbcScChunkInfo* aChunkInfo); - public: - TInt iMaxEndpoints; - TInt iTotalSize; - TInt iTotalBuffers; - TInt iAltSettings; - TEndpointSortBufs iBufs[KUsbcScDirections]; - TUsbcScAlternateSettingList* iAlternateSettingList; - - // Chunk layout info. - TUsbcScChunkBuffersHeader* iChunkStuct; - TUsbcScChunkAltSettingHeader* iAltSettingsTbl; - }; - - - -/** The channel class - the actual USB LDD. -*/ -class DLddUsbcScChannel : public DLogicalChannel - { -public: - DLddUsbcScChannel(); - ~DLddUsbcScChannel(); - virtual void HandleMsg(TMessageBase* aMsg); - virtual TInt DoCreate(TInt aUnit, const TDesC8* aInfo, const TVersion& aVer); - virtual TInt RequestUserHandle(DThread* aThread, TOwnerType aType); - inline DThread* Client() const {return iClient;} - inline TBool ChannelClosing() const {return iChannelClosing;} - inline TUint AlternateSetting() const {return iAlternateSetting;} - - static void RequestCallbackEp0(TAny* aTUsbcScChannel); - -private: - - TInt DoCancel(TInt aReqNo, TUint aMask, TUint a1); - TInt DoRequest(TInt aReqNo, TRequestStatus* aStatus, TAny* a1, TAny* a2); - TInt DoControl(TInt aFunction, TAny* a1, TAny* a2); - TInt DoReadDataNotify(TRequestStatus* aStatus, TInt aBufferNum, TInt aLength); - void StartDataRead(TInt aBufferNum); - TInt DoWriteData(TRequestStatus* aStatus,TInt aBufferNum, TUint aStart, TUint aLength, TUint aFlags); - TBool AlternateDeviceStateTestComplete(); - TInt SetInterface(TInt aInterfaceNum, TUsbcScIfcInfo* aUserInterfaceInfoBuf); - void StartEpReads(); - void DestroyAllInterfaces(); - void DestroyInterface(TUint aInterface); - void DestroyEp0(); - inline TBool ValidEndpoint(TInt aEndpoint); - TInt GetRealEpForEpResource(TInt aEndpoint, TInt& aRealEp); - inline TBool Configured(); - TInt DoEmergencyComplete(); - void ReadDes8(const TAny* aPtr, TDes8& aDes); - TInt SetupEp0(); - void CancelNotifyEndpointStatus(); - void CancelNotifyOtgFeatures(); - static void StatusChangeCallback(TAny* aDLddUsbcChannel); - static void EndpointStatusChangeCallback(TAny* aDLddUsbcChannel); - static void OtgFeatureChangeCallback(TAny* aDLddUsbcChannel); - static void EmergencyCompleteDfc(TAny* aDLddUsbcChannel); - void DeConfigure(TInt aErrorCode); - TInt SelectAlternateSetting(TUint aAlternateSetting); - TInt EpFromAlternateSetting(TUint aAlternateSetting, TInt aEndpoint); - TInt ProcessAlternateSetting(TUint aAlternateSetting); - TInt32 StartNextInAlternateSetting(); - TInt ProcessDeviceState(TUsbcDeviceState aDeviceState); - void ResetInterface(TInt aErrorCode); - void PanicClientThread(TInt aReason); - - TInt RealizeInterface(void); - -private: - DUsbClientController* iController; - DThread* iClient; - TBool iValidInterface; - - TUsbcScAlternateSettingList* iAlternateSettingList; - TUsbcScEndpoint** iEndpoint; // Pointer to the current endpoint set. - - static const TInt KUsbcMaxRequests = RDevUsbcScClient::ERequestMaxRequests; - TRequestStatus* iRequestStatus[KUsbcMaxRequests]; - TUsbcClientCallback iCompleteAllCallbackInfo; - TAny* iStatusChangePtr; - TUsbcStatusCallback iStatusCallbackInfo; - TAny* iEndpointStatusChangePtr; - TUsbcEndpointStatusCallback iEndpointStatusCallbackInfo; - TAny* iOtgFeatureChangePtr; - TUsbcOtgFeatureCallback iOtgFeatureCallbackInfo; - TUint8* iBufferBaseEp0; - TInt iBufferSizeEp0; - TInt iNumberOfEndpoints; - TUsbcDeviceState iDeviceState; - TUsbcDeviceState iOldDeviceState; - TBool iOwnsDeviceControl; - TUint16 iAlternateSetting; - TUint16 iAsSeq; - - TUsbcDeviceStatusQueue* iStatusFifo; - TBool iUserKnowsAltSetting; - TBool iDeviceStatusNeeded; - TBool iChannelClosing; - TBool iRealizeCalled; - - TUsbcScChunkInfo* iChunkInfo; - TInt iNumBuffers; - TUsbcScBuffer *iBuffers; - - TUsbcScEndpoint* iEp0Endpoint; - TInt iEP0InBuff; - TInt iEP0OutBuff; - - friend class TUsbcScBuffer; - friend void TUsbcScEndpoint::AbortTransfer(); - }; - -/** -This class is used by TUsbcScStatusList to form a queue of status requests. -These requests are on a buffer basis, so that all buffers can have at least two requests -pending, at the same time. (i.e. buffer 1 could have two requests outstanding, as well as 2 on buffer 2.) -*/ - -class TUsbcScStatusElement -{ -public: - TRequestStatus* iStatus; - TInt iLength; - TUint iStart; - TUint iFlags; -}; - -enum TUsbcScStatusState -{ - ENotRunning, - EInProgress, - EReadingAhead, - EFramgementInProgress -}; - -class TUsbcScStatusList -{ -public: - TInt Construct(TInt aSize, DThread* aThread); - void Destroy(); - - TUsbcScStatusElement* Next(); - void Pop(); - TInt Add(TRequestStatus* aStatus, TInt aLength, TUint aStart, TUint aFlags); - void CancelQueued(TInt aErrorCode=KErrCancel); - TInt Complete(TInt aError); - void Complete(); -public: - TUsbcScStatusState iState; - -private: - DThread* iClient; - TInt iHead; // The element at the head of the queue, ie, the earliest added, and next to be removed. - TInt iLength; // Length of queue, ie number of elements within - TInt iSize; // size of array, ie, max # of requests at a time. - TUsbcScStatusElement* iElements; - -}; - - - -/** -This class holds the kernel's copy of all the details related to a shared endpoint buffer, -and provides methods for the LDD to manipulate it. -*/ -class TUsbcScBuffer -{ -public: - static const TInt8 KNoEpAssigned=0; - static const TInt8 KEpIsEnding=1; - static const TInt8 KEpIsStarting=2; - -public: - TInt Construct(TInt aDirection, DLddUsbcScChannel* aLdd, TInt aBufferOffset, TInt aBufferEndOffset, TInt aMinReadSize, TInt aMaxPacketSize, TInt aMaxReadSize); - void CreateChunkBufferHeader(); - void StartEndpoint(TUsbcRequestCallback* iRequestInfo, TUint iFlags); - - void Destroy(); - - TInt StartDataRead(); - void CompleteRead(TBool aStartNextRead=ETrue); - void PopStall(); - void StartDataWrite(); - void CompleteWrite(); - void Cancel(TInt aErrorCode); - - void UpdateBufferList(TInt aByteCount,TUint aFlags, TBool aStartNextRead=ETrue); - void Ep0CancelLddRead(); - void SendEp0StatusPacket(TInt aState); - -public: - - TInt8 iDirection; - TInt8 iMode; - TInt8 iNeedsPacket; - TInt8 iReserved; - DLddUsbcScChannel* iLdd; - TLinAddr iChunkAddr; - SUsbcScBufferHeader* iBufferStart; - TUint iBufferEnd; // One word on from the last word in the buffer. - TUint iAlignMask; - TUsbcScStatusList iStatusList; - TUsbcRequestCallback* iCallback; - union - { - TInt iHead; // Out endpoints only; - TUint iSent; // In endpoints only - }; - TUsbcScChunkInfo* iChunkInfo; - TInt iMinReadSize; - TInt iMaxReadSize; - TInt iMaxPacketSize; // 0 indicates unconfiured. - TInt iFirstPacket; - TInt iStalled; - - // needed for backwards compatibility - TUsbcPacketArray iIndexArray[KUsbcDmaBufNumMax]; // Has 2 elements - TUsbcPacketArray iSizeArray[KUsbcDmaBufNumMax]; // Has 2 elements -#ifdef _DEBUG - TUint iSequence; -#endif - -}; - - - -#include - -#endif // __USBCSC_H__ diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/usbcsc.inl --- a/usbdrv/peripheral/public/usbcsc.inl Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,107 +0,0 @@ -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32\include\drivers\usbcsc.inl -// Kernel side inline header file for USB device driver. -// -// - -/** - @file usbcsc.inl - @internalTechnology -*/ - -#ifndef __USBCSC_INL__ -#define __USBCSC_INL__ - - -// -// --- USB Logical Device Driver (LDD) --- -// - -TUsbcScEndpointInfo* TUsbcScEndpoint::EndpointInfo() - { - return &iEndpointInfo; - } - - -void TUsbcScEndpoint::SetClientReadPending(TBool aVal) - { - iClientReadPending = aVal; - } - - -TBool TUsbcScEndpoint::ClientReadPending() - { - return iClientReadPending; - } - - -void TUsbcScEndpoint::SetClientWritePending(TBool aVal) - { - iClientWritePending = aVal; - } - - -TBool TUsbcScEndpoint::ClientWritePending() - { - return iClientWritePending; - } - - -void TUsbcScEndpoint::SetRealEpNumber(TInt aRealEpNumber) - { - iRealEpNumber = aRealEpNumber; - iRequestCallbackInfo->iRealEpNum = aRealEpNumber; - } - - -TInt TUsbcScEndpoint::RealEpNumber() const - { - return iRealEpNumber; - } -TInt TUsbcScEndpoint::EpNumber() const - { - return iEndpointNumber; - } -void TUsbcScEndpoint::StartBuffer() - { - iBuffer->StartEndpoint(iRequestCallbackInfo, iEndpointInfo.iFlags); - } - -void TUsbcScEndpoint::SetBuffer(TUsbcScBuffer* aBuffer) - { - __ASSERT_ALWAYS(iBuffer==NULL, Kern::Fault("TUsbcScEndpoint::SetBuffer", __LINE__)); - iBuffer = aBuffer; - } - -TUsbcScBuffer* TUsbcScEndpoint::GetBuffer() - { - __ASSERT_DEBUG(iBuffer!=NULL, Kern::Fault("TUsbcScEndpoint::GetBuffer", __LINE__)); - return iBuffer; - } - -inline TBool DLddUsbcScChannel::ValidEndpoint(TInt aEndpoint) - { - return (aEndpoint <= iNumberOfEndpoints && aEndpoint >= 0); - } - -inline TBool DLddUsbcScChannel::Configured() - { - if (iValidInterface && - (iDeviceState == UsbShai::EUsbPeripheralStateConfigured || iDeviceState == UsbShai::EUsbPeripheralStateSuspended)) - return ETrue; - return EFalse; - } - -#endif // __USBCSC_INL__ diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/usbcshared.h --- a/usbdrv/peripheral/public/usbcshared.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,997 +0,0 @@ -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32\include\drivers\usbcshared.h -// Kernel side definitions for the USB Device driver stack (PIL + LDD). -// -// - -/** - @file usbcshared.h - @internalTechnology -*/ - -#ifndef __USBCSHARED_H__ -#define __USBCSHARED_H__ - -//#include -#include - -// Define here what options are required: -// (USB_SUPPORTS_CONTROLENDPOINTS and USB_SUPPORTS_SET_DESCRIPTOR_REQUEST -// have never been tested though...) -//#define USB_SUPPORTS_CONTROLENDPOINTS -//#define USB_SUPPORTS_SET_DESCRIPTOR_REQUEST - -//#include -#include -//#include -#include - -#include -#include - -#include - -// FIXME: Remove this typedef once PIL and LDD are ready for SHAI -typedef UsbShai::TUsbPeripheralEvent TUsbcDeviceEvent; -typedef UsbShai::TUsbPeripheralPacketArray TUsbcPacketArray; - -// Forward declaration -class DControlTransferManager; -class TUsbcSetup; - -// Debug Support - -// Use for debugging purposes only (commented out for normal operation): -//#define USBC_LDD_BUFFER_TRACE - -static const char KUsbPILPanicCat[] = "USB PIL FAULT"; // kernel fault category -_LIT(KUsbPILKillCat, "USB PIL KILL"); // thread kill category -_LIT(KUsbLDDKillCat, "USB LDD KILL"); // thread kill category - -/** Error code for stalled endpoint. -*/ -const TInt KErrEndpointStall = KErrLocked; - -/** Error code for Ep0 write prematurely ended by a host OUT token. -*/ -const TInt KErrPrematureEnd = KErrDiskFull; - -/** The following constants control the buffer arrangement for OUT transfers (IN transfers have only 1 - buffer). The total size of buffering for an OUT endpoint will be number of buffers * buffersize, - so that, for example, a Bulk OUT endpoint will have KUsbcDmaBufNumBulk * KUsbcDmaBufSzBulk bytes of - buffering. - These buffers will be physically contiguous, so that DMA may be used. - The number of buffers MUST be >=2 - otherwise the buffering scheme won't work. - The buffer sizes should be an exact fraction of 4kB and the number of buffers such that the - buffersize * number of buffers is an exact multiple of 4kB, otherwise memory will be wasted. -*/ -/** Size of a Control ep buffer. -*/ -const TInt KUsbcDmaBufSzControl = 1024; - -/** Size of a Bulk ep buffer. -*/ -const TInt KUsbcDmaBufSzBulk = 4096; - -/** Size of an Interrupt ep buffer. -*/ -const TInt KUsbcDmaBufSzInterrupt = 4096; - -/** Size of an Isochronous ep buffer. -*/ -const TInt KUsbcDmaBufSzIsochronous = 4096; - -/** Number of buffers for Control OUT endpoints. -*/ -const TInt KUsbcDmaBufNumControl = 2; - -/** Number of buffers for Isochronous OUT endpoints. -*/ -const TInt KUsbcDmaBufNumIsochronous = 2; - -/** Number of buffers for Bulk OUT endpoints. -*/ -const TInt KUsbcDmaBufNumBulk = 2; - -/** Number of buffers for Interrupt OUT endpoints. -*/ -const TInt KUsbcDmaBufNumInterrupt = 2; - -/** Maximum buffer number. -*/ -const TInt KUsbcDmaBufNumMax = MAX4(KUsbcDmaBufNumControl, KUsbcDmaBufNumIsochronous, - KUsbcDmaBufNumBulk, KUsbcDmaBufNumInterrupt); - -/** Maximum number of recorded packets possible. -*/ -const TUint KUsbcDmaBufMaxPkts = 2; - -/** Number of arrays. -*/ -const TInt KUsbcDmaBufNumArrays = 2; - -/** Max size that Ep0 packets might have. -*/ -const TInt KUsbcBufSzControl = 64; - -/** The Ep0 RX data collection buffer area. - (Arbitrary size, judged to be sufficient for SET_DESCRIPTOR requests) -*/ -const TInt KUsbcBufSz_Ep0Rx = 1024; - -/** The Ep0 TX buffer area. - (Size sufficient to hold as much data as can be requested via GET_DESCRIPTOR) -*/ -const TInt KUsbcBufSz_Ep0Tx = 1024 * 64; - - -/** The USB version the stack is compliant with: 2.0 (BCD). -*/ -const TUint16 KUsbcUsbVersion = 0x0200; - -/** Maximum number of endpoints an interface (i.e. LDD) may have. -*/ -const TInt KUsbcMaxEpNumber = 5; - -/** Status FIFO depth; enough for 2 complete configs. -*/ -const TInt KUsbDeviceStatusQueueDepth = 15; - -/** = 'no status info'. -*/ -const TUint32 KUsbDeviceStatusNull = 0xffffffffu; - -/** = 'no buffer available'. -*/ -const TInt KUsbcInvalidBufferIndex = -1; - -/** = 'no packet available'. -*/ -const TUint KUsbcInvalidPacketIndex = (TUint)(-1); - -/** = 'no drainable buffers'. -*/ -const TInt KUsbcInvalidDrainQueueIndex = -1; - -/** Number of possible bandwidth priorities. -*/ -const TInt KUsbcDmaBufMaxPriorities = 4; - -// The following buffer sizes are used within the LDD for the different -// user-selectable endpoint bandwidth priorities -// (EUsbcBandwidthOUTDefault/Plus1/Plus2/Maximum + the same for 'IN'). -// These values, in particular those for the Maximum setting, were obtained -// empirically. - -/** Bulk IN buffer sizes for different priorities (4K, 16K, 64K, 512K). -*/ -const TInt KUsbcDmaBufSizesBulkIN[KUsbcDmaBufMaxPriorities] = - {KUsbcDmaBufSzBulk, 0x4000, 0x10000, 0x80000}; - -/** Bulk OUT buffer sizes for different priorities (4K, 16K, 64K, 512K). -*/ -const TInt KUsbcDmaBufSizesBulkOUT[KUsbcDmaBufMaxPriorities] = - {KUsbcDmaBufSzBulk, 0x4000, 0x10000, 0x80000}; - -/** Number of UDCs supported in the system. - (Support for more than one UDC is preliminary.) -*/ -const TInt KUsbcMaxUdcs = 2; - -/** Number of endpoints a USB device can have. - (30 regular endpoints + 2 x Ep0) -*/ -const TInt KUsbcEpArraySize = KUsbcMaxEndpoints + 2; - -/** Number of notification requests of the same kind that can be registered at - a time. As normally not more than one request per kind per LDD is - permitted, this number is roughly equivalent to the maximum number of LDDs - that can be operating at the same time. - This constant is used by the PIL while maintaining its request lists - (iClientCallbacks, iStatusCallbacks, iEpStatusCallbacks, iOtgCallbacks) to - ensure that the lists are of a finite length and thus the list traverse - time is bounded. - This value is chosen with the maximum number of USB interfaces (not - settings) allowed by the spec for a single device in mind. -*/ -const TInt KUsbcMaxListLength = 256; - -/** - * device event FIFO depth, there are 5 different event define currently, - * 10 should be enough - */ -const TInt KUsbDeviceEventQueueDepth = 10; - -/** USB LDD client callback. -*/ -class TUsbcClientCallback - { -public: - inline TUsbcClientCallback(DBase* aOwner, TDfcFn aCallback, TInt aPriority); - 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; - }; - - -/** The endpoint halt/clear_halt status. -*/ -class TUsbcEndpointStatusCallback - { -public: - inline TUsbcEndpointStatusCallback(DBase* aOwner, TDfcFn aCallback, TInt aPriority); - inline void SetState(TUint aState); - inline TUint State() 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 iState; - }; - - -/** Maximum number of device status requests that can be queued at a time. - The value chosen is thought to be sufficient in all situations. -*/ -const TInt KUsbcDeviceStateRequests = 8; - - -/** The USB device status. -*/ -class TUsbcStatusCallback - { -public: - inline TUsbcStatusCallback(DBase* aOwner, TDfcFn aCallback, TInt aPriority); - inline void SetState(UsbShai::TUsbPeripheralState aState); - inline UsbShai::TUsbPeripheralState State(TInt aIndex) const; - inline void ResetState(); - 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; - UsbShai::TUsbPeripheralState iState[KUsbcDeviceStateRequests]; - }; - - -/** A USB transfer request. - - @publishedPartner - @released -*/ -class TUsbcRequestCallback : public UsbShai::TUsbPeripheralRequest - { -public: - /** @internalTechnology */ - inline TUsbcRequestCallback(const DBase* aOwner, TInt aEndpointNum, TDfcFn aDfcFunc, - TAny* aEndpoint, TDfcQue* aDfcQ, TInt aPriority); - /** @internalTechnology */ - inline ~TUsbcRequestCallback(); - - IMPORT_C void SetRxBufferInfo(TUint8* aBufferStart, - TUintPtr aBufferAddr, - TUint32* aPacketIndex, - TUint32* aPacketSize, - TInt aLength); - - IMPORT_C void SetTxBufferInfo(TUint8* aBufferStart, - TUintPtr aBufferAddr, - TInt aLength); - - /** @internalTechnology */ - inline void SetTransferDirection(UsbShai::TTransferDirection aTransferDir); - /** @internalTechnology */ - inline const DBase* Owner() const; - /** @internalTechnology */ - inline TInt DoCallback(); - /** @internalTechnology */ - inline void Cancel(); -public: - /** Used by the PIL to queue callback objects into a TSglQue. - @internalTechnology - */ - TSglQueLink iLink; -public: - /** The endpoint number. */ - const TInt iEndpointNum; - - /** Indicates the LDD client for this transfer. */ - const DBase* const iOwner; - /** DFC, used by PIL to call back the LDD when transfer completes to the LDD. */ - TDfc iDfc; - }; - -/** USB On-The-Go feature change callback. -*/ -class TUsbcOtgFeatureCallback - { -public: - inline TUsbcOtgFeatureCallback(DBase* aOwner, TDfcFn aCallback, TInt aPriority); - inline void SetFeatures(TUint8 aFeatures); - inline TUint8 Features() 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; - TUint8 iValue; - }; - -// -//########################### Physical Device Driver (PIL + PSL) ###################### -// - -class TUsbcLogicalEndpoint; - -/** This models a physical (real) endpoint of the UDC. -*/ -class TUsbcPhysicalEndpoint - { -public: - TUsbcPhysicalEndpoint(); - ~TUsbcPhysicalEndpoint(); - TBool EndpointSuitable(const TUsbcEndpointInfo* aEpInfo, TInt aIfcNumber) const; // Check Todo, SC will pass pointer to derived class - TInt TypeAvailable(TUint aType) const; - TInt DirAvailable(TUint aDir) const; -public: - /** This endpoint's capabilities. */ - UsbShai::TUsbPeripheralEndpointCaps iCaps; - /** USB address: 0x00, 0x80, 0x01, 0x81, etc. */ - TUint8 iEndpointAddr; - /** Pointer to interface # this endpoint has been assigned to. */ - const TUint8* iIfcNumber; - /** Pointer to corresponding logical endpoint or NULL. */ - const TUsbcLogicalEndpoint* iLEndpoint; - /** Only used when searching for available endpoints. */ - TBool iSettingReserve; - /** True if endpoint is halted (i.e. issues STALL handshakes), false otherwise. */ - TBool iHalt; - }; - - -class DUsbClientController; -class TUsbcInterface; - -/** This is a 'logical' endpoint, as used by our device configuration model. -*/ -class TUsbcLogicalEndpoint - { -public: - TUsbcLogicalEndpoint(DUsbClientController* aController, TUint aEndpointNum, - const TUsbcEndpointInfo& aEpInfo, TUsbcInterface* aInterface, - TUsbcPhysicalEndpoint* aPEndpoint); // Check Todo, SC will pass pointer to derived class - ~TUsbcLogicalEndpoint(); -public: - /** Pointer to controller object. */ - DUsbClientController* iController; - /** The virtual (logical) endpoint number. */ - const TInt iLEndpointNum; - /** This endpoint's info structure. */ - TUsbcEndpointInfo iInfo; // Check Todo, SC will pass pointer to derived class - /** Stores the endpoint size to be used for FS. */ - TInt iEpSize_Fs; - /** Stores the endpoint size to be used for HS. */ - TInt iEpSize_Hs; - /** 'Back' pointer. */ - const TUsbcInterface* iInterface; - /** Pointer to corresponding physical endpoint, never NULL. */ - TUsbcPhysicalEndpoint* const iPEndpoint; - }; - - -class TUsbcInterfaceSet; - -/** This is an 'alternate setting' of an interface. -*/ -class TUsbcInterface - { -public: - TUsbcInterface(TUsbcInterfaceSet* aIfcSet, TUint8 aSetting, TBool aNoEp0Requests); - ~TUsbcInterface(); -public: - /** Array of endpoints making up (belonging to) this setting. */ - RPointerArray iEndpoints; - /** 'Back' pointer. */ - TUsbcInterfaceSet* const iInterfaceSet; - /** bAlternateSetting (zero-based). */ - const TUint8 iSettingCode; - /** KUsbcInterfaceInfo_NoEp0RequestsPlease: stall non-std Setup requests. */ - const TBool iNoEp0Requests; - }; - - -/** This is an 'interface' (owning 1 or more alternate settings). - - @see TUsbcInterface -*/ -class TUsbcInterfaceSet - { -public: - TUsbcInterfaceSet(const DBase* aClientId, TUint8 aIfcNum); - ~TUsbcInterfaceSet(); - inline const TUsbcInterface* CurrentInterface() const; - inline TUsbcInterface* CurrentInterface(); -public: - /** Array of alternate settings provided by (belonging to) this interface. */ - RPointerArray iInterfaces; - /** Pointer to the LDD which created and owns this interface. */ - const DBase* const iClientId; - /** bInterfaceNumber (zero-based). */ - TUint8 iInterfaceNumber; - /** bAlternateSetting (zero-based). */ - TUint8 iCurrentInterface; - }; - - -/** This is a 'configuration' of the USB device. - Currently we support only one configuration. -*/ -class TUsbcConfiguration - { -public: - TUsbcConfiguration(TUint8 aConfigVal); - ~TUsbcConfiguration(); -public: - /** Array of interfaces making up (belonging to) this configuration. */ - RPointerArray iInterfaceSets; - /** bConfigurationValue (one-based). */ - const TUint8 iConfigValue; - }; - - -/** The USB controller's power handler class. -*/ -NONSHARABLE_CLASS(DUsbcPowerHandler) : public DPowerHandler - { -public: - void PowerUp(); - void PowerDown(TPowerState); -public: - DUsbcPowerHandler(DUsbClientController* aController); -private: - DUsbClientController* iController; - }; - - -/* -This is the EndpointInfo class used by the usb shared chunk client driver. -*/ - -class TUsbcScEndpointInfo; - - -/** -Used to represent an array of (or inheriting from) TUsbcEndpointInfo objects. - -@see DUsbClientController::SetInterface -*/ - -class TUsbcEndpointInfoArray - { -public: - typedef enum {EUsbcEndpointInfo, EUsbcScEndpointInfo} TArrayType; - - TUsbcEndpointInfoArray(const TUsbcEndpointInfo* aData, TInt aDataSize=0); - TUsbcEndpointInfoArray(const TUsbcScEndpointInfo* aData, TInt aDataSize=0); - inline TUsbcEndpointInfo& operator[](TInt aIndex) const; - - TArrayType iType; -private: - TUint8* iData; - TInt iDataSize; - }; - -class TUsbPeriDeviceEventQueue - { -public: - TUsbPeriDeviceEventQueue(); - - void FifoAdd(TUsbcDeviceEvent aDeviceStatus); - TUsbcDeviceEvent FifoGet(); - -private: - TUsbcDeviceEvent iDeviceEventQueue[KUsbDeviceEventQueueDepth]; - TInt iDeviceQueueHead; - TInt iDeviceQueueTail; - }; - -class TUsbcRequestCallback; // todo?? required only for class below - -/** The USB Device software controller class. - - Implements the platform-independent layer (PIL), and defines the interface to the - platform-specific layer PSL). - - The implementation of the platform-specific layer interfaces with the hardware. -*/ -NONSHARABLE_CLASS(DUsbClientController) : public DBase, - public MUsbOtgPeripheralControlIf, - public UsbShai::MUsbPeripheralPilCallbackIf, - public MControlTransferIf, - public UsbShai::MChargerDetectorObserverIf - { - friend class UsbShai::UsbPeripheralPil; - friend class TUsbHostWrapperEntry; - friend class DUsbcPowerHandler; - friend TUsbcLogicalEndpoint::~TUsbcLogicalEndpoint(); - // - // --- Platform Independent Layer (PIL) --- - // - - -private: - /** - * Two-phase constructor used by the friend classes that receive - * the registration calls for peripheral controllers. - * - * @param aPeripheralControllerIf Reference to the Peripheral - * Controller interface implemented by the registering PSL. - * - * @param aProperties Reference to an object describing the - * static properties of the Peripheral Controller. The PIL - * layer requires that the supplied reference remains valid - * indefinitely, as a Peripheral Controller cannot unregister. - * - * @param aIsOtgPort ETrue if this Peripheral Controller is part - * of an OTG port. EFalse otherwise. - * - * @return Pointer to a new instance or NULL if failed - */ - IMPORT_C static DUsbClientController* Create(UsbShai::MPeripheralControllerIf& aPeripheralControllerIf, - const UsbShai::TPeripheralControllerProperties& aProperties, - TBool aIsOtgPort); - - -public: - - // - // --- The following functions constitute the PIL interface to the LDD --- - // - virtual ~DUsbClientController(); - IMPORT_C void DisableClientStack(); - IMPORT_C void EnableClientStack(); - IMPORT_C TBool IsActive(); - IMPORT_C TInt RegisterClientCallback(TUsbcClientCallback& aCallback); - IMPORT_C static DUsbClientController* UsbcControllerPointer(TInt aUdc=0); - IMPORT_C void EndpointCaps(const DBase* aClientId, TDes8 &aCapsBuf) const; - IMPORT_C void DeviceCaps(const DBase* aClientId, TDes8 &aCapsBuf) const; - IMPORT_C TInt SetInterface(const DBase* aClientId, DThread* aThread, TInt aInterfaceNum, - TUsbcClassInfo& aClass, TDesC8* aString, TInt aTotalEndpointsUsed, - const TUsbcEndpointInfo aEndpointData[], TInt (*aRealEpNumbers)[6], - TUint32 aFeatureWord); - IMPORT_C TInt SetInterface(const DBase* aClientId, DThread* aThread, - TInt aInterfaceNum, TUsbcClassInfo& aClass, - TDesC8* aString, TInt aTotalEndpointsUsed, - const TUsbcEndpointInfoArray aEndpointData, - TInt aRealEpNumbers[], TUint32 aFeatureWord); - IMPORT_C TInt ReleaseInterface(const DBase* aClientId, TInt aInterfaceNum); - IMPORT_C TInt ReEnumerate(); - IMPORT_C TInt PowerUpUdc(); - IMPORT_C TInt UsbConnect(); - IMPORT_C TInt UsbDisconnect(); - IMPORT_C TInt RegisterForStatusChange(TUsbcStatusCallback& aCallback); - IMPORT_C TInt DeRegisterForStatusChange(const DBase* aClientId); - IMPORT_C TInt RegisterForEndpointStatusChange(TUsbcEndpointStatusCallback& aCallback); - IMPORT_C TInt DeRegisterForEndpointStatusChange(const DBase* aClientId); - IMPORT_C TInt GetInterfaceNumber(const DBase* aClientId, TInt& aInterfaceNum) const; - IMPORT_C TInt DeRegisterClient(const DBase* aClientId); - IMPORT_C TInt Ep0PacketSize() const; - IMPORT_C TInt Ep0Stall(const DBase* aClientId); - IMPORT_C void SendEp0StatusPacket(const DBase* aClientId); - IMPORT_C UsbShai::TUsbPeripheralState GetDeviceStatus() const; - IMPORT_C TEndpointState GetEndpointStatus(const DBase* aClientId, TInt aEndpointNum) const; - IMPORT_C TInt SetupReadBuffer(TUsbcRequestCallback& aCallback); - IMPORT_C TInt SetupWriteBuffer(TUsbcRequestCallback& aCallback); - IMPORT_C void CancelReadBuffer(const DBase* aClientId, TInt aRealEndpoint); - IMPORT_C void CancelWriteBuffer(const DBase* aClientId, TInt aRealEndpoint); - IMPORT_C TInt HaltEndpoint(const DBase* aClientId, TInt aEndpointNum); - IMPORT_C TInt ClearHaltEndpoint(const DBase* aClientId, TInt aEndpointNum); - IMPORT_C TInt SetDeviceControl(const DBase* aClientId); - IMPORT_C TInt ReleaseDeviceControl(const DBase* aClientId); - IMPORT_C TUint EndpointZeroMaxPacketSizes() const; - IMPORT_C TInt SetEndpointZeroMaxPacketSize(TInt aMaxPacketSize); - IMPORT_C TInt GetDeviceDescriptor(DThread* aThread, TDes8& aDeviceDescriptor); - IMPORT_C TInt SetDeviceDescriptor(DThread* aThread, const TDes8& aDeviceDescriptor); - IMPORT_C TInt GetDeviceDescriptorSize(DThread* aThread, TDes8& aSize); - IMPORT_C TInt GetConfigurationDescriptor(DThread* aThread, TDes8& aConfigurationDescriptor); - IMPORT_C TInt SetConfigurationDescriptor(DThread* aThread, const TDes8& aConfigurationDescriptor); - IMPORT_C TInt GetConfigurationDescriptorSize(DThread* aThread, TDes8& aSize); - IMPORT_C TInt SetOtgDescriptor(DThread* aThread, const TDesC8& aOtgDesc); - IMPORT_C TInt GetOtgDescriptor(DThread* aThread, TDes8& aOtgDesc) const; - IMPORT_C TInt GetOtgFeatures(DThread* aThread, TDes8& aFeatures) const; - IMPORT_C TInt GetCurrentOtgFeatures(TUint8& aFeatures) const; - IMPORT_C TInt RegisterForOtgFeatureChange(TUsbcOtgFeatureCallback& aCallback); - IMPORT_C TInt DeRegisterForOtgFeatureChange(const DBase* aClientId); - IMPORT_C TInt GetInterfaceDescriptor(DThread* aThread, const DBase* aClientId, TInt aSettingNum, - TDes8& aInterfaceDescriptor); - IMPORT_C TInt SetInterfaceDescriptor(DThread* aThread, const DBase* aClientId, TInt aSettingNum, - const TDes8& aInterfaceDescriptor); - IMPORT_C TInt GetInterfaceDescriptorSize(DThread* aThread, const DBase* aClientId, TInt aSettingNum, - TDes8& aSize); - IMPORT_C TInt GetEndpointDescriptor(DThread* aThread, const DBase* aClientId, TInt aSettingNum, - TInt aEndpointNum, TDes8& aEndpointDescriptor); - IMPORT_C TInt SetEndpointDescriptor(DThread* aThread, const DBase* aClientId, TInt aSettingNum, - TInt aEndpointNum, const TDes8& aEndpointDescriptor); - IMPORT_C TInt GetEndpointDescriptorSize(DThread* aThread, const DBase* aClientId, TInt aSettingNum, - TInt aEndpointNum, TDes8& aSize); - IMPORT_C TInt GetDeviceQualifierDescriptor(DThread* aThread, TDes8& aDeviceQualifierDescriptor); - IMPORT_C TInt SetDeviceQualifierDescriptor(DThread* aThread, const TDes8& aDeviceQualifierDescriptor); - IMPORT_C TInt GetOtherSpeedConfigurationDescriptor(DThread* aThread, TDes8& aConfigurationDescriptor); - IMPORT_C TInt SetOtherSpeedConfigurationDescriptor(DThread* aThread, const TDes8& aConfigurationDescriptor); - IMPORT_C TInt GetCSInterfaceDescriptorBlock(DThread* aThread, const DBase* aClientId, TInt aSettingNum, - TDes8& aInterfaceDescriptor); - IMPORT_C TInt SetCSInterfaceDescriptorBlock(DThread* aThread, const DBase* aClientId, TInt aSettingNum, - const TDes8& aInterfaceDescriptor, TInt aSize); - IMPORT_C TInt GetCSInterfaceDescriptorBlockSize(DThread* aThread, const DBase* aClientId, - TInt aSettingNum, TDes8& aSize); - IMPORT_C TInt GetCSEndpointDescriptorBlock(DThread* aThread, const DBase* aClientId, TInt aSettingNum, - TInt aEndpointNum, TDes8& aEndpointDescriptor); - IMPORT_C TInt SetCSEndpointDescriptorBlock(DThread* aThread, const DBase* aClientId, TInt aSettingNum, - TInt aEndpointNum, const TDes8& aEndpointDescriptor, - TInt aSize); - IMPORT_C TInt GetCSEndpointDescriptorBlockSize(DThread* aThread, const DBase* aClientId, TInt aSettingNum, - TInt aEndpointNum, TDes8& aSize); - IMPORT_C TInt GetStringDescriptorLangId(DThread* aThread, TDes8& aLangId); - IMPORT_C TInt SetStringDescriptorLangId(TUint16 aLangId); - IMPORT_C TInt GetManufacturerStringDescriptor(DThread* aThread, TDes8& aString); - IMPORT_C TInt SetManufacturerStringDescriptor(DThread* aThread, const TDes8& aString); - IMPORT_C TInt RemoveManufacturerStringDescriptor(); - IMPORT_C TInt GetProductStringDescriptor(DThread* aThread, TDes8& aString); - IMPORT_C TInt SetProductStringDescriptor(DThread* aThread, const TDes8& aString); - IMPORT_C TInt RemoveProductStringDescriptor(); - IMPORT_C TInt GetSerialNumberStringDescriptor(DThread* aThread, TDes8& aString); - IMPORT_C TInt SetSerialNumberStringDescriptor(DThread* aThread, const TDes8& aString); - IMPORT_C TInt RemoveSerialNumberStringDescriptor(); - IMPORT_C TInt GetConfigurationStringDescriptor(DThread* aThread, TDes8& aString); - IMPORT_C TInt SetConfigurationStringDescriptor(DThread* aThread, const TDes8& aString); - IMPORT_C TInt RemoveConfigurationStringDescriptor(); - IMPORT_C TInt GetStringDescriptor(DThread* aThread, TUint8 aIndex, TDes8& aString); - IMPORT_C TInt SetStringDescriptor(DThread* aThread, TUint8 aIndex, const TDes8& aString); - IMPORT_C TInt RemoveStringDescriptor(TUint8 aIndex); - IMPORT_C TBool QueryEndpointResource(const DBase* aClientId, TInt aEndpointNum, - TUsbcEndpointResource aResource); - IMPORT_C TInt EndpointPacketSize(const DBase* aClientId, TInt aEndpointNum); - - // Called by LDD - IMPORT_C TDfcQue* DfcQ(TInt aIndex); - IMPORT_C void DumpRegisters(); - IMPORT_C TInt SignalRemoteWakeup(); - IMPORT_C TBool CurrentlyUsingHighSpeed(); - - TInt RegisterUdc(TInt aUdc); - -protected: - - // From base class MUsbPeripheralPilCallbackIf - void EnablePeripheralStack(); - void DisablePeripheralStack(); - void SetOtgObserver(MUsbOtgPeripheralObserverIf* aObserver); - - // Function derived from MUsbPeripheralPilCallbackIf - UsbShai::TControlStage EnquireEp0NextStage(const TUint8* aSetupBuf) const; - TInt Ep0RequestComplete(TInt aRealEndpoint, TInt aCount, TInt aError,UsbShai::TControlPacketType aPktType); - void EndpointRequestComplete(UsbShai::TUsbPeripheralRequest* aCallback); - TInt DeviceEventNotification(TUsbcDeviceEvent aEvent); - void MoveToAddressState(); - TInt ProcessSetConfiguration(const TUsbcSetup& aPacket); - void HandleHnpRequest(TInt aHnpState); - void GetEp0RxBufferInfo(TUint8*& aBuffer, TInt& aBufferLen); - void SetRmWakeupStatusEnabled(TBool aRmEnabled); - UsbShai::TUsbPeripheralState DeviceStatus() const; - TBool Ep0ReceivedNonStdRequest(); - - // Functions derived from MControlTransferIf - // PSL -> PIL - void ProcessDataInPacket(TInt aCount,TInt aErrCode); - void ProcessStatusInPacket(TInt aErrCode); - void ProcessDataOutPacket(TInt aCount,TInt aErrCode); - void ProcessStatusOutPacket(TInt aErrCode); - void ProcessSetupPacket(TInt aCount,TInt aErrCode); - - // Request from PIL -> PSL - TInt ProcessSetupEndpointZeroRead(); - TInt ProcessSetupEndpointZeroWrite(const TUint8* aBuffer, TInt aLength, TBool aZlpReqd=EFalse); - TInt ProcessSendEp0ZeroByteStatusPacket(); - TInt ProcessStallEndpoint(TInt aRealEndpoint); - - // Flow control PIL <--> PSL - void ProcessEp0SetupPacketProceed(); - void ProcessEp0DataPacketProceed(); - - // Functions from MChargerDetectorObserverIf - void NotifyPortType(UsbShai::TPortType aPortType); - // - // - // --- Functions and data members provided by PIL, called by PSL --- - // -private: - struct TUsbPeripheralDescriptorPool - { - TUsbcDeviceDescriptor* iDeviceDesc; - TUsbcConfigDescriptor* iConfigDesc; - TUsbcLangIdDescriptor* iLangId; - TUsbcStringDescriptor* iManufacturer; - TUsbcStringDescriptor* iProduct; - TUsbcStringDescriptor* iSerialNum; - TUsbcStringDescriptor* iConfig; - TUsbcOtgDescriptor* iOtgDesc; - }; - -private: - // Internal functions that used in Construct only - // This function will new a set of descriptors - TBool CreateDescriptors(TUsbPeripheralDescriptorPool& aOutput); - - TBool Initialise(TUsbPeripheralDescriptorPool& aDescPool, - const UsbShai::TUsbPeripheralEndpointCaps* aEndpointCaps, - TInt aTotalEndpoint); - - DUsbClientController(UsbShai::MPeripheralControllerIf& aPeripheralControllerIf, - const UsbShai::TPeripheralControllerProperties& aProperties, - TBool aIsOtgPort); - - TInt Construct(); - - void ProcessStandardRequest(TInt aCount,const TUsbcSetup& aPacket); - void ProcessNonStandardRequest(TInt aCount,const TUsbcSetup& aPacket); - - const DBase* FindNonStandardRequestClient(TUint8 aPacketTypeDestination,const TUsbcSetup& aPacket); - - TInt SetupEp0StateMachine(); - -private: - - /** This info can be used by the PSL before sending ZLPs. - - @publishedPartner @released - */ - TBool iEp0ReceivedNonStdRequest; - - /** True if RMW is currently enabled (set by either PIL or PSL). - - @publishedPartner @released - */ - TBool iRmWakeupStatus_Enabled; - - /** Ep0 incoming (rx) data is placed here (one packet). - - @publishedPartner @released - */ - TUint8 iEp0_RxBuf[KUsbcBufSzControl]; - -private: - - // - // --- Private member functions (used by PIL) --- - // - TInt DeRegisterClientCallback(const DBase* aClientId); - TBool CheckEpAvailability(TInt aEndpointsUsed, const TUsbcEndpointInfoArray& aEndpointData, TInt aIfcNumber) - const; - TUsbcInterface* CreateInterface(const DBase* aClientId, TInt aIfc, TUint32 aFeatureWord); - TInt CreateEndpoints(TUsbcInterface* aIfc, TInt aEndpointsUsed, const TUsbcEndpointInfoArray& aEndpointData, - TInt *aRealEpNumbers); - TInt SetupIfcDescriptor(TUsbcInterface* aIfc, TUsbcClassInfo& aClass, DThread* aThread, TDesC8* aString, - const TUsbcEndpointInfoArray& aEndpointData); - TInt ClientId2InterfaceNumber(const DBase* aClientId) const; - TUsbcInterfaceSet* ClientId2InterfacePointer(const DBase* aClientId) const; - const DBase* InterfaceNumber2ClientId(TInt aIfcSet) const; - TUsbcInterfaceSet* InterfaceNumber2InterfacePointer(TInt aIfcSet) const; - inline const DBase* PEndpoint2ClientId(TInt aRealEndpoint) const; - inline TInt PEndpoint2LEndpoint(TInt aRealEndpoint) const; - TInt ActivateHardwareController(); - void DeActivateHardwareController(); - void DeleteInterfaceSet(TInt aIfcSet); - void DeleteInterface(TInt aIfcSet, TInt aIfc); - void CancelTransferRequests(TInt aRealEndpoint); - void DeleteRequestCallback(const DBase* aClientId, TInt aEndpointNum, UsbShai::TTransferDirection aTransferDir); - void DeleteRequestCallbacks(const DBase* aClientId); - void StatusNotify(UsbShai::TUsbPeripheralState aState, const DBase* aClientId=NULL); - void EpStatusNotify(TInt aRealEndpoint); - void OtgFeaturesNotify(); - void RunClientCallbacks(); - void ProcessDataTransferDone(TUsbcRequestCallback& aRcb); - void NextDeviceState(UsbShai::TUsbPeripheralState aNextState); - TInt ProcessSuspendEvent(); - TInt ProcessSuspendEventProceed(); - TInt ProcessResumeEvent(); - TInt ProcessResetEvent(TBool aPslUpcall=ETrue); - TInt ProcessVbusRisenEvent(); - TInt ProcessVbusFallenEvent(); - - void ProcessGetDeviceStatus(const TUsbcSetup& aPacket); - void ProcessGetInterfaceStatus(const TUsbcSetup& aPacket); - void ProcessGetEndpointStatus(const TUsbcSetup& aPacket); - void ProcessSetClearDevFeature(const TUsbcSetup& aPacket); - void ProcessSetClearIfcFeature(const TUsbcSetup& aPacket); - void ProcessSetClearEpFeature(const TUsbcSetup& aPacket); - void ProcessSetAddress(const TUsbcSetup& aPacket); - void ProcessGetDescriptor(const TUsbcSetup& aPacket); - void ProcessSetDescriptor(const TUsbcSetup& aPacket); - void ProcessGetConfiguration(const TUsbcSetup& aPacket); - void ProcessGetInterface(const TUsbcSetup& aPacket); - void ProcessSetInterface(const TUsbcSetup& aPacket); - void ProcessSynchFrame(const TUsbcSetup& aPacket); - - void ProceedSetDescriptor(); - void ProcessDeviceEventNotification(TUsbcDeviceEvent aEvent); - - void SetClearHaltFeature(TInt aRealEndpoint, TUint8 aRequest); - TInt ClearHaltFeature(TInt aRealEndpoint); - void ChangeConfiguration(TUint16 aValue); - void InterfaceSetup(TUsbcInterface* aIfc); - void InterfaceSetTeardown(TUsbcInterfaceSet* aIfc); - void ChangeInterface(TUsbcInterface* aIfc); - TInt DoForEveryEndpointInUse(TInt (DUsbClientController::*aFunction)(TInt), TInt& aCount); - void EnterFullSpeed(); - void EnterHighSpeed(); - TInt EvaluateOtgConnectFlags(); - inline const TUsbcConfiguration* CurrentConfig() const; - inline TUsbcConfiguration* CurrentConfig(); - inline TBool InterfaceExists(TInt aNumber) const; - inline TBool EndpointExists(TUint aAddress) const; - void Buffer2Setup(const TAny* aBuf, TUsbcSetup& aSetup) const; - inline TUint EpIdx2Addr(TUint aRealEndpoint) const; - inline TUint EpAddr2Idx(TUint aAddress) const; - inline void SetEp0DataOutVars(const DBase* aClientId = NULL); - inline void ResetEp0DataOutVars(); - inline TBool IsInTheStatusList(const TUsbcStatusCallback& aCallback); - inline TBool IsInTheEpStatusList(const TUsbcEndpointStatusCallback& aCallback); - inline TBool IsInTheOtgFeatureList(const TUsbcOtgFeatureCallback& aCallback); - inline TBool IsInTheRequestList(const TUsbcRequestCallback& aCallback); - static void ReconnectTimerCallback(TAny* aPtr); - static void CableStatusTimerCallback(TAny* aPtr); - static void PowerUpDfc(TAny* aPtr); - static void PowerDownDfc(TAny* aPtr); - static void DeviceEventNotifyDfc(TAny* aPtr); - static void ThreadContextFinderDfc(TAny* aPtr); - -private: - - // - // --- Private data members --- - // - - static DUsbClientController* UsbClientController[KUsbcMaxUdcs]; - - TInt iDeviceTotalEndpoints; // number of endpoints reported by PSL - TInt iDeviceUsableEndpoints; // number of endpoints reported to LDD - - UsbShai::TUsbPeripheralState iDeviceState; // states as of USB spec chapter 9.1 - UsbShai::TUsbPeripheralState iDeviceStateB4Suspend; // state before entering suspend state - - TBool iSelfPowered; // true if device is capable of beeing self-powered - TBool iRemoteWakeup; // true if device is capable of signalling rmwakeup - TBool iHardwareActivated; // true if controller silicon is in operating state - TBool iOtgSupport; // true if OTG is supported by this device - TUint8 iOtgFuncMap; // bitmap indicating OTG extension features - TBool iHighSpeed; // true if currently operating at high-speed - - TInt iEp0MaxPacketSize; // currently configured max packet size for Ep0 - const DBase* iEp0ClientId; // see comment at the begin of ps_usbc.cpp - TUint16 iEp0DataReceived; // indicates how many bytes have already been received - TBool iEp0WritePending; // true if a write on ep0 has been set up - TBool iEp0ClientDataTransmitting; // true if ep0's in DATA_IN on behalf of a client - const DBase* iEp0DeviceControl; // Device Ep0 requests are delivered to this LDD - - TUsbcDescriptorPool iDescriptors; // the descriptors as of USB spec chapter 9.5 - TUint8 iCurrentConfig; // bConfigurationValue of current Config (1-based!) - RPointerArray iConfigs; // the root of the modelled USB device - TUsbcPhysicalEndpoint iRealEndpoints[KUsbcEpArraySize]; // array will be filled once at startup - TUint8 iEp0_TxBuf[KUsbcBufSz_Ep0Tx]; // ep0 outgoing (tx) data is placed here -#ifdef USB_SUPPORTS_SET_DESCRIPTOR_REQUEST - TUint8 iEp0_RxCollectionBuf[KUsbcBufSz_Ep0Rx]; // used for (optional) SET_DESCRIPTOR request -#endif - TInt iEp0_RxExtraCount; // number of bytes received but not yet delivered - TBool iEp0_RxExtraData; // true if iEp0_RxExtraCount is valid - TInt iEp0_TxNonStdCount; // number of bytes requested by non-std Ep0 request - - TUsbcRequestCallback* iRequestCallbacks[KUsbcEpArraySize]; // xfer requests; indexed by real ep number - TSglQue iEp0ReadRequestCallbacks; // list of ep0 read requests - TSglQue iClientCallbacks; // registered LDD clients and their callback functions - TSglQue iStatusCallbacks; // list of device state notification requests - TSglQue iEpStatusCallbacks; // list of endpoint state notification requests - TSglQue iOtgCallbacks; // list of OTG feature change requests - - NTimer iReconnectTimer; // implements USB re-enumeration delay - NTimer iCableStatusTimer; // implements USB cable status detection delay - DUsbcPowerHandler* iPowerHandler; // pointer to USB power handler object - TSpinLock iUsbLock; // implement SMP for USB PDD and LDD - NFastMutex iMutex; // To pretect interface set with NFastMutex - UsbShai::MPeripheralControllerIf& iController; // PSL code - - const UsbShai::TPeripheralControllerProperties& iControllerProperties; // Static configuration from PSL - TBool iIsOtgPort; // Is this instance a driver for otg port, - // Set at construction time. - - /** - * Pointer to the currently set OTG Observer, if any. Not owned. - */ - MUsbOtgPeripheralObserverIf* iOtgObserver; // Otg interface which is used to listen event from DeviceEventNotification - - DControlTransferManager* iConTransferMgr; // Usb Control transfer manager, responsible for chaptor9 - - TInt iLastError; // Used by chaptor9 sm. No else. - TBool iSetupPacketPending; // Indicate whether the no-req-callback data is a setup packet - - TUsbPeriDeviceEventQueue iDevEventQueue; // PSL can call DeviceEventNotification(...) at any context, - // but for PIL, we want to serialize the execution of each event - - // The thread context for the DfcQ pass by PSL to us. - NThread* iCommonDfcQThread; - -protected: - TDfc iPowerUpDfc; // queued by power handler upon power-up - TDfc iPowerDownDfc; // queued by power handler upon power-down - TDfc iDeviceEventNotifyDfc; // queued by device event notification - TDfc iThreadContextFinder; // this is used to find which thread does the DfcQ passed by PSL - // is runing. - -private: - TBool iStandby; // toggled by power handler as appropriate - TBool iStackIsActive; // client stack's function is usable - TBool iClientSupportReady; // user-side USB Client support is loaded & active - TBool iUsbResetDeferred; // set when user-side wasn't ready yet - -public: - // FIXME: These used to be filled by the OTG component Dummy DCD - // so that the PIL layer can call it to enable and disable the D+ - // pull-up. This mechanism is no longer used - TInt (*iEnablePullUpOnDPlus)(TAny* aOtgContext); - TInt (*iDisablePullUpOnDPlus)(TAny* aOtgContext); - TAny* iOtgContext; - }; - -/** Simple queue of status changes to be recorded. - Items are fetched by userside when able. -*/ -class TUsbcDeviceStatusQueue - { -public: - TUsbcDeviceStatusQueue(); - void AddStatusToQueue(TUint32 aDeviceStatus); - TInt GetDeviceQueuedStatus(TUint32& aDeviceStatus); - void FlushQueue(); - -private: - TUint32 iDeviceStatusQueue[KUsbDeviceStatusQueueDepth]; - TInt iStatusQueueHead; - }; - -#include - -#endif // __USBCSHARED_H__ diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/usbcshared.inl --- a/usbdrv/peripheral/public/usbcshared.inl Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,571 +0,0 @@ -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32\include\drivers\usbcshared.inl -// Kernel side definitions for the USB Device driver stack (PIL + LDD). -// -// - -/** - @file usbcshared.inl - @internalTechnology -*/ - -#ifndef __USBCSHARED_INL__ -#define __USBCSHARED_INL__ - -// -// --- DUsbClientController (USB PDD) --- -// - -// --- Private member functions, used by controller itself --- - -const DBase* DUsbClientController::PEndpoint2ClientId(TInt aRealEndpoint) const - { - if (iRealEndpoints[aRealEndpoint].iLEndpoint) - return iRealEndpoints[aRealEndpoint].iLEndpoint->iInterface->iInterfaceSet->iClientId; - else - return NULL; - } - - -TInt DUsbClientController::PEndpoint2LEndpoint(TInt aRealEndpoint) const - { - if (iRealEndpoints[aRealEndpoint].iLEndpoint) - return iRealEndpoints[aRealEndpoint].iLEndpoint->iLEndpointNum; - else - return -1; - } - - -const TUsbcConfiguration* DUsbClientController::CurrentConfig() const - { - return (iCurrentConfig ? iConfigs[iCurrentConfig - 1] : NULL); - } - - -TUsbcConfiguration* DUsbClientController::CurrentConfig() - { - return (iCurrentConfig ? iConfigs[iCurrentConfig - 1] : NULL); - } - - -TBool DUsbClientController::InterfaceExists(TInt aNumber) const - { - const TInt num_ifcsets = iConfigs[0]->iInterfaceSets.Count(); - RPointerArray& ifcsets = iConfigs[0]->iInterfaceSets; - for (TInt i = 0; i < num_ifcsets; i++) - { - if (ifcsets[i]->iInterfaceNumber == aNumber) - { - return ETrue; - } - } - return EFalse; - } - - -TBool DUsbClientController::EndpointExists(TUint aAddress) const - { - // Ep0 doesn't have a "logical ep" pointer (there's no virtual endpoint zero); - // that's why this pointer being non-NULL is not a sufficient criterion for - // endpoint-existence. (Apart from that, ep0 always exists.) - const TInt idx = EpAddr2Idx(aAddress); - return ((idx < iDeviceTotalEndpoints) && - ((iRealEndpoints[idx].iLEndpoint != NULL) || - ((aAddress & KUsbEpAddress_Portmask) == 0))); - } - -TUint DUsbClientController::EpIdx2Addr(TUint aRealEndpoint) const - { - return ((aRealEndpoint << 7) & 0x80) | ((aRealEndpoint >> 1) & 0x0f); - } - - -TUint DUsbClientController::EpAddr2Idx(TUint aAddress) const - { - return ((aAddress & 0x80) >> 7) | ((aAddress & 0x0f) << 1); - } - - -void DUsbClientController::SetEp0DataOutVars(const DBase* aClientId) - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::SetEp0DataOutVars()")); - //iSetup = aPacket; - iEp0DataReceived = 0; - iEp0ClientId = aClientId; - } - - -void DUsbClientController::ResetEp0DataOutVars() - { - __KTRACE_OPT(KUSB, Kern::Printf("DUsbClientController::ResetEp0DataOutVars()")); - iEp0DataReceived = 0; - iEp0ClientId = NULL; - } - - -TBool DUsbClientController::IsInTheRequestList(const TUsbcRequestCallback& aCallback) - { - const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); - TSglQueIter iter(iEp0ReadRequestCallbacks); - TUsbcRequestCallback* p; - while ((p = iter++) != NULL) - { - if (p == &aCallback) - { - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return ETrue; - } - } - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return EFalse; - } - - -TBool DUsbClientController::IsInTheStatusList(const TUsbcStatusCallback& aCallback) - { - const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); - TSglQueIter iter(iStatusCallbacks); - TUsbcStatusCallback* p; - while ((p = iter++) != NULL) - { - if (p == &aCallback) - { - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return ETrue; - } - } - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return EFalse; - } - - -TBool DUsbClientController::IsInTheEpStatusList(const TUsbcEndpointStatusCallback& aCallback) - { - const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); - TSglQueIter iter(iEpStatusCallbacks); - TUsbcEndpointStatusCallback* p; - while ((p = iter++) != NULL) - { - if (p == &aCallback) - { - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return ETrue; - } - } - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return EFalse; - } - - -TBool DUsbClientController::IsInTheOtgFeatureList(const TUsbcOtgFeatureCallback& aCallback) - { - const TInt irq = __SPIN_LOCK_IRQSAVE(iUsbLock); - TSglQueIter iter(iOtgCallbacks); - TUsbcOtgFeatureCallback* p; - while ((p = iter++) != NULL) - { - if (p == &aCallback) - { - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return ETrue; - } - } - __SPIN_UNLOCK_IRQRESTORE(iUsbLock, irq); - return EFalse; - } - -// -// --- Misc classes --- -// - -// --- TUsbcClientCallback - -/** Constructor. - */ -TUsbcClientCallback::TUsbcClientCallback(DBase* aOwner, TDfcFn aCallback, TInt aPriority) - : iOwner(aOwner), - iDfc(aCallback, aOwner, aPriority) - {} - - -/** Returns a pointer to the owner of this request. - - @return A pointer to the owner of this request. -*/ -DBase* TUsbcClientCallback::Owner() const - { - return iOwner; - } - - -/** Executes the callback function set by the owner of this request. - - @return KErrNone. -*/ -TInt TUsbcClientCallback::DoCallback() - { - __ASSERT_DEBUG((NKern::CurrentContext() == EThread), Kern::Fault(KUsbPILPanicCat, __LINE__)); - iDfc.Enque(); - return KErrNone; - } - - -/** Cancels the callback function set by the owner of this request. - */ -void TUsbcClientCallback::Cancel() - { - iDfc.Cancel(); - } - - -/** Sets the DFC queue used by the callback function. - @param aDfcQ DFC queue to be set - */ -void TUsbcClientCallback::SetDfcQ(TDfcQue* aDfcQ) - { - iDfc.SetDfcQ(aDfcQ); - } - - -// --- TUsbcEndpointStatusCallback - -/** Constructor. - */ -TUsbcEndpointStatusCallback::TUsbcEndpointStatusCallback(DBase* aOwner, TDfcFn aCallback, - TInt aPriority) - : iOwner(aOwner), - iDfc(aCallback, aOwner, aPriority), - iState(0) - {} - - -/** Sets the state of this request to aState. - - @param aState The new state to be set. -*/ -void TUsbcEndpointStatusCallback::SetState(TUint aState) - { - iState = aState; - } - - -/** Returns the state value of this request. - - @return The state value of this request. -*/ -TUint TUsbcEndpointStatusCallback::State() const - { - return iState; - } - - -/** Returns a pointer to the owner of this request. - - @return A pointer to the owner of this request. -*/ -DBase* TUsbcEndpointStatusCallback::Owner() const - { - return iOwner; - } - - -/** Executes the callback function set by the owner of this request. - - @return KErrNone. -*/ -TInt TUsbcEndpointStatusCallback::DoCallback() - { - if (NKern::CurrentContext() == EThread) - iDfc.Enque(); - else - iDfc.Add(); - return KErrNone; - } - - -/** Cancels the callback function set by the owner of this request. -*/ -void TUsbcEndpointStatusCallback::Cancel() - { - iDfc.Cancel(); - } - - -/** Sets the DFC queue used by the callback function. -*/ -void TUsbcEndpointStatusCallback::SetDfcQ(TDfcQue* aDfcQ) - { - iDfc.SetDfcQ(aDfcQ); - } - - -// --- TUsbcStatusCallback - -/** Constructor. - */ -TUsbcStatusCallback::TUsbcStatusCallback(DBase* aOwner, TDfcFn aCallback, TInt aPriority) - : iOwner(aOwner), - iDfc(aCallback, aOwner, aPriority) - { - ResetState(); - } - - -/** Sets the state of this request to aState (at the first available position - in the state value array). - - @param aState The new state to be set. -*/ -void TUsbcStatusCallback::SetState(UsbShai::TUsbPeripheralState aState) - { - for (TInt i = 0; i < KUsbcDeviceStateRequests; i++) - { - if (iState[i] == UsbShai::EUsbPeripheralNoState) - { - iState[i] = aState; - return; - } - } - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: KUsbcDeviceStateRequests too small (%d)!", - KUsbcDeviceStateRequests)); - } - - -/** Returns the state value of this request at a certain index. - - @param aIndex The index to be used for referencing the state array. - - @return The state value of this request at aIndex. -*/ -UsbShai::TUsbPeripheralState TUsbcStatusCallback::State(TInt aIndex) const - { - if (aIndex >= 0 && aIndex < KUsbcDeviceStateRequests) - { - return iState[aIndex]; - } - else - { - __KTRACE_OPT(KPANIC, Kern::Printf(" Error: aIndex too large (%d)!", aIndex)); - return UsbShai::EUsbPeripheralNoState; - } - } - - -/** Resets the entire state value array of this request. -*/ -void TUsbcStatusCallback::ResetState() - { - for (TInt i = 0; i < KUsbcDeviceStateRequests; ++i) - { - iState[i] = UsbShai::EUsbPeripheralNoState; - } - } - - -/** Returns a pointer to the owner of this request. - - @return A pointer to the owner of this request. -*/ -DBase* TUsbcStatusCallback::Owner() const - { - return iOwner; - } - - -/** Executes the callback function set by the owner of this request. - - @return KErrNone. -*/ -TInt TUsbcStatusCallback::DoCallback() - { - if (NKern::CurrentContext() == EThread) - iDfc.Enque(); - else - iDfc.Add(); - return KErrNone; - } - - -/** Cancels the callback function set by the owner of this request. -*/ -void TUsbcStatusCallback::Cancel() - { - iDfc.Cancel(); - } - - -/** Sets the DFC queue used by the callback function. -*/ -void TUsbcStatusCallback::SetDfcQ(TDfcQue* aDfcQ) - { - iDfc.SetDfcQ(aDfcQ); - } - -// --- TUsbcRequestCallback - -/** Constructor. - */ -TUsbcRequestCallback::TUsbcRequestCallback(const DBase* aOwner, TInt aEndpointNum, TDfcFn aDfcFunc, - TAny* aEndpoint, TDfcQue* aDfcQ, TInt aPriority) - : TUsbPeripheralRequest(-1), - iEndpointNum(aEndpointNum), - iOwner(aOwner), - iDfc(aDfcFunc, aEndpoint, aDfcQ, aPriority) - { - } - - -/** Destructor. - */ -TUsbcRequestCallback::~TUsbcRequestCallback() - { - __KTRACE_OPT(KUSB, Kern::Printf("TUsbcRequestCallback::~TUsbcRequestCallback()")); - iDfc.Cancel(); - } - -/** Sets the transfer direction for this request. - - @param aTransferDir The new transfer direction. -*/ -void TUsbcRequestCallback::SetTransferDirection(UsbShai::TTransferDirection aTransferDir) - { - iTransferDir = aTransferDir; - } - - -/** Returns a pointer to the owner of this request. - - @return A pointer to the owner of this request. -*/ -const DBase* TUsbcRequestCallback::Owner() const - { - return iOwner; - } - - -/** Executes the callback function set by the owner of this request. - - @return KErrNone. -*/ -TInt TUsbcRequestCallback::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 TUsbcRequestCallback::Cancel() - { - iDfc.Cancel(); - } - -// --- TUsbcOtgFeatureCallback - -/** Constructor. - */ -TUsbcOtgFeatureCallback::TUsbcOtgFeatureCallback(DBase* aOwner, TDfcFn aCallback, - TInt aPriority) - : iOwner(aOwner), - iDfc(aCallback, aOwner, aPriority), - iValue(0) - {} - - -/** Returns a pointer to the owner of this request. - @return A pointer to the owner of this request. -*/ -DBase* TUsbcOtgFeatureCallback::Owner() const - { - return iOwner; - } - - -/** Set feature value which is to be notified to client. - @param OTG feature value to be set -*/ -void TUsbcOtgFeatureCallback::SetFeatures(TUint8 aFeatures) - { - iValue = aFeatures; - } - - -/** Set feature value which is to be notified to client. - @return Value of OTG features -*/ -TUint8 TUsbcOtgFeatureCallback::Features() const - { - return iValue; - } - - -/** Set DFC queue. - @param aDfcQ DFC queue to be set -*/ -void TUsbcOtgFeatureCallback::SetDfcQ(TDfcQue* aDfcQ) - { - iDfc.SetDfcQ(aDfcQ); - } - - -/** Executes the callback function set by the owner of this request. - @return KErrNone. -*/ -TInt TUsbcOtgFeatureCallback::DoCallback() - { - if (NKern::CurrentContext() == EThread) - iDfc.Enque(); - else - iDfc.Add(); - return KErrNone; - } - - -/** Cancels the callback function set by the owner of this request. - */ -void TUsbcOtgFeatureCallback::Cancel() - { - iDfc.Cancel(); - } - - -/** Returns a pointer to the currently selected (active) setting of this interface. - - @return A pointer to the currently selected (active) setting of this interface. -*/ -const TUsbcInterface* TUsbcInterfaceSet::CurrentInterface() const - { - return iInterfaces[iCurrentInterface]; - } - - -/** Returns a pointer to the currently selected (active) setting of this interface. - - @return A pointer to the currently selected (active) setting of this interface. -*/ - -TUsbcInterface* TUsbcInterfaceSet::CurrentInterface() - { - return iInterfaces[iCurrentInterface]; - } - -#endif // __USBCSHARED_INL__ - - - diff -r f92a4f87e424 -r 012cc2ee6408 usbdrv/peripheral/public/usbotgperipheralcontrolif.h --- a/usbdrv/peripheral/public/usbotgperipheralcontrolif.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). -// All rights reserved. -// This component and the accompanying materials are made available -// under the terms of the License "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: -// e32\include\drivers\usbcshared.h -// Kernel side definitions for the USB Device driver stack (PIL + LDD). -// -// - -/** - @file usbotgperipheralcontrolif.h - @internalTechnology -*/ - -#ifndef USBOTGPERIPHERALCONTROLIF_H -#define USBOTGPERIPHERALCONTROLIF_H - -#include // For UsbShai::TUsbPeripheralEvent - -/** - * This M-class specifies the observer interface that the OTG state - * machine implements to listen to events of the peripheral stack. - */ -NONSHARABLE_CLASS(MUsbOtgPeripheralObserverIf) - { - public: - /** - * Called by the peripheral stack to report a peripheral event to - * the OTG stack. - * - * @param aEvent An enumeration value specifying the type of event - * that has occurred - */ - virtual void NotifyPeripheralEvent(UsbShai::TUsbPeripheralEvent aEvent) = 0; - }; - - -/** - * This M-class specifies the control interface that the OTG state - * machine uses to control the peripheral stack and register for - * peripheral events. - */ -NONSHARABLE_CLASS(MUsbOtgPeripheralControlIf) - { - public: - /** - * Called by the OTG state machine to enable the peripheral stack. - * When called, the peripheral stack must activate the controller - * and connect to the bus as soon as possible. - */ - virtual void EnablePeripheralStack() = 0; - - /** - * Called by the OTG state machine to disable the peripheral - * stack. When called, the peripheral stack must immediately - * disconnect from the bus and deactivate the controller. - */ - virtual void DisablePeripheralStack() = 0; - - /** - * Called by the OTG state machine to set the peripheral event - * observer. - * - * @param aObserver Pointer to the OTG Observer, or NULL when the - * OTG stack is being shutdown. - */ - virtual void SetOtgObserver(MUsbOtgPeripheralObserverIf* aObserver) = 0; - }; - - -#endif // USBOTGPERIPHERALCONTROLIF_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/conf/usbmanager.confml Binary file usbmgmt/usbmgr/conf/usbmanager.confml has changed diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classcontroller/SRC/CUsbClassControllerIterator.cpp --- a/usbmgmt/usbmgr/device/classcontroller/SRC/CUsbClassControllerIterator.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classcontroller/SRC/CUsbClassControllerIterator.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -24,13 +24,11 @@ #include #include -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbClassControllerIteratorTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "USBSVR"); #endif - - // Panic category only used in debug builds #ifdef _DEBUG _LIT( KUsbCcIteratorPanicCategory, "UsbCcIterator" ); @@ -132,13 +130,10 @@ */ EXPORT_C CUsbClassControllerBase* CUsbClassControllerIterator::Current() { -#ifdef _DEBUG - if(!((iClassControllerIndex >= 0) && (iClassControllerIndex < iClassControllerArray.Count()))) - { - OstTrace1( TRACE_FATAL, CUSBCLASSCONTROLLERITERATOR_CURRENT, "CUsbClassControllerIterator::Current;panic reason=%d", EIndexOutOfRange ); - User::Panic(KUsbCcIteratorPanicCategory, EIndexOutOfRange ); - } -#endif + __ASSERT_DEBUG((iClassControllerIndex >= 0) && + (iClassControllerIndex < iClassControllerArray.Count()), + _USB_PANIC(KUsbCcIteratorPanicCategory, EIndexOutOfRange)); + return iClassControllerArray[iClassControllerIndex]; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classcontroller/SRC/CUsbClassControllerPlugIn.cpp --- a/usbmgmt/usbmgr/device/classcontroller/SRC/CUsbClassControllerPlugIn.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classcontroller/SRC/CUsbClassControllerPlugIn.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -24,11 +24,11 @@ #include #include -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbClassControllerPlugInTraces.h" +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "USBSVR"); #endif - /** * Constructor. @@ -50,7 +50,7 @@ EXPORT_C CUsbClassControllerPlugIn* CUsbClassControllerPlugIn::NewL(TUid aImplementationId, MUsbClassControllerNotify& aOwner) { - OstTraceFunctionEntry0( CUSBCLASSCONTROLLERPLUGIN_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY return (reinterpret_cast(REComSession::CreateImplementationL (aImplementationId, _FOFF(CUsbClassControllerPlugIn, iPrivateEComUID), diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classcontroller/group/UsbClassController.mmp --- a/usbmgmt/usbmgr/device/classcontroller/group/UsbClassController.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classcontroller/group/UsbClassController.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -38,4 +38,4 @@ library euser.lib library ecom.lib -USERINCLUDE ../traces +#include diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classcontroller/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/device/classcontroller/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classcontroller/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/device/classcontroller/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_FATAL=0x81 -[GROUP]TRACE_FLOW=0x8a -[TRACE]TRACE_FATAL[0x81]_CUSBCLASSCONTROLLERITERATOR_CURRENT=0x1 -[TRACE]TRACE_FLOW[0x8A]_CUSBCLASSCONTROLLERPLUGIN_NEWL_ENTRY=0x1 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBCLASSCONTROLLERITERATOR_CURRENT=0x1 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/SRC/CUsbACMClassController.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/SRC/CUsbACMClassController.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/SRC/CUsbACMClassController.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -22,21 +22,22 @@ @file */ +#include "CUsbACMClassController.h" #include #include -#include -#include "CUsbACMClassController.h" +#include #include "UsbmanInternalConstants.h" +#include #include "acmserverconsts.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbACMClassControllerTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ACMCC"); + +// Panic category +_LIT( KAcmCcPanicCategory, "UsbAcmCc" ); + #endif -#ifdef _DEBUG -// Panic category -_LIT( KAcmCcPanicCategory, "UsbAcmCc" ); -#endif /** @@ -66,13 +67,12 @@ */ CUsbACMClassController* CUsbACMClassController::NewL(MUsbClassControllerNotify& aOwner) { - OstTraceFunctionEntry0( CUSBACMCLASSCONTROLLER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY CUsbACMClassController* self = new (ELeave) CUsbACMClassController(aOwner); CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(self); - OstTraceFunctionExit0( CUSBACMCLASSCONTROLLER_NEWL_EXIT ); return self; } @@ -81,7 +81,6 @@ */ CUsbACMClassController::~CUsbACMClassController() { - OstTraceFunctionEntry0( CUSBACMCLASSCONTROLLER_CUSBACMCLASSCONTROLLER_DES_ENTRY ); Cancel(); #ifdef USE_ACM_REGISTRATION_PORT @@ -90,7 +89,6 @@ #else iAcmServer.Close(); #endif // USE_ACM_REGISTRATION_PORT - OstTraceFunctionExit0( CUSBACMCLASSCONTROLLER_CUSBACMCLASSCONTROLLER_DES_EXIT ); } /** @@ -103,8 +101,6 @@ : CUsbClassControllerPlugIn(aOwner, KAcmStartupPriority), iNumberOfAcmFunctions(KDefaultNumberOfAcmFunctions) { - OstTraceFunctionEntry0( CUSBACMCLASSCONTROLLER_CUSBACMCLASSCONTROLLER_CONS_ENTRY ); - OstTraceFunctionExit0( CUSBACMCLASSCONTROLLER_CUSBACMCLASSCONTROLLER_CONS_EXIT ); } /** @@ -112,8 +108,6 @@ */ void CUsbACMClassController::ConstructL() { - OstTraceFunctionEntry0( CUSBACMCLASSCONTROLLER_CONSTRUCTL_ENTRY ); - iNumberOfAcmFunctions = KUsbAcmNumberOfAcmFunctions; iAcmProtocolNum[0] = KUsbAcmProtocolNumAcm1; @@ -124,45 +118,21 @@ // Prepare to use whichever mechanism is enabled to control bringing ACM // functions up and down. - TInt err; #ifdef USE_ACM_REGISTRATION_PORT - - err = iCommServer.Connect(); - if (err < 0) - { - OstTrace1( TRACE_ERROR, CUSBACMCLASSCONTROLLER_CONSTRUCTL, "CUsbACMClassController::ConstructL;leave err=%d", err ); - User::Leave(err); - } - - err = iCommServer.LoadCommModule(KAcmCsyName); - if (err < 0) - { - OstTrace1( TRACE_ERROR, CUSBACMCLASSCONTROLLER_CONSTRUCTL_DUP1, "CUsbACMClassController::ConstructL;leave err=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(iCommServer.Connect()); + LEAVEIFERRORL(iCommServer.LoadCommModule(KAcmCsyName)); TName portName(KAcmSerialName); portName.AppendFormat(_L("::%d"), 666); // Open the registration port in shared mode in case other ACM CCs want to // open it. - err = iComm.Open(iCommServer, portName, ECommShared); - if (err < 0) - { - OstTrace1( TRACE_ERROR, CUSBACMCLASSCONTROLLER_CONSTRUCTL_DUP2, "CUsbACMClassController::ConstructL;leave err=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(iComm.Open(iCommServer, portName, ECommShared)); #else - - err = iAcmServer.Connect(); - if (err < 0) - { - OstTrace1( TRACE_ERROR, CUSBACMCLASSCONTROLLER_CONSTRUCTL_DUP3, "CUsbACMClassController::ConstructL;leave err=%d", err ); - User::Leave(err); - } + + LEAVEIFERRORL(iAcmServer.Connect()); #endif // USE_ACM_REGISTRATION_PORT - OstTraceFunctionExit0( CUSBACMCLASSCONTROLLER_CONSTRUCTL_EXIT ); } /** @@ -173,30 +143,24 @@ */ void CUsbACMClassController::Start(TRequestStatus& aStatus) { - OstTraceFunctionEntry0( CUSBACMCLASSCONTROLLER_START_ENTRY ); + LOG_FUNC; // We should always be idle when this function is called (guaranteed by // CUsbSession). - if (iState != EUsbServiceIdle) - { - OstTrace1( TRACE_FATAL, CUSBACMCLASSCONTROLLER_START, "CUsbACMClassController::Start;iState=%d", (TInt)iState ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmCcPanicCategory, EBadApiCallStart) ); - } + __ASSERT_DEBUG( iState == EUsbServiceIdle, _USB_PANIC(KAcmCcPanicCategory, EBadApiCallStart) ); TRequestStatus* reportStatus = &aStatus; TRAPD(err, DoStartL()); iState = (err == KErrNone) ? EUsbServiceStarted : EUsbServiceIdle; User::RequestComplete(reportStatus, err); - OstTraceFunctionExit0( CUSBACMCLASSCONTROLLER_START_EXIT ); } void CUsbACMClassController::DoStartL() { - OstTraceFunctionEntry0( CUSBACMCLASSCONTROLLER_DOSTARTL_ENTRY ); - + LOG_FUNC iState = EUsbServiceStarting; - OstTrace1( TRACE_NORMAL, CUSBACMCLASSCONTROLLER_DOSTARTL, "CUsbACMClassController::DoStartL;iNumberOfAcmFunctions=%d", iNumberOfAcmFunctions ); + LOGTEXT2(_L8(" iNumberOfAcmFunctions = %d"), iNumberOfAcmFunctions); #ifdef USE_ACM_REGISTRATION_PORT @@ -204,22 +168,21 @@ TUint acmSetting; for (TUint i = 0; i < iNumberOfAcmFunctions; i++) { - OstTrace1( TRACE_NORMAL, CUSBACMCLASSCONTROLLER_DOSTARTL_DUP1, "CUsbACMClassController::DoStartL;iAcmProtocolNum[i]=%u", iAcmProtocolNum[i] ); + LOGTEXT2(_L8(" iAcmProtocolNum[i] = %d"), iAcmProtocolNum[i]); // indicate the number of ACMs to create, and its protocol number (in the 3rd-lowest byte) acmSetting = 1 | (static_cast (iAcmProtocolNum[i]) << 16); TInt err = iComm.SetSignalsToMark(acmSetting); if (err != KErrNone) { - OstTrace1( TRACE_NORMAL, CUSBACMCLASSCONTROLLER_DOSTARTL_DUP2, "CUsbACMClassController::DoStartL;SetSignalsToMark error = %d", err ); + LOGTEXT2(_L8(" SetSignalsToMark error = %d"), err); if (i != 0) { // Must clear any ACMs that have completed. // only other than KErrNone if C32 Server fails (void) iComm.SetSignalsToSpace(i); } - OstTrace1( TRACE_ERROR, CUSBACMCLASSCONTROLLER_DOSTARTL_DUP6, "CUsbACMClassController::DoStartL;leave err=%d", err ); - User::Leave(err); + LEAVEL(err); } } @@ -235,23 +198,20 @@ if ( err != KErrNone ) { - OstTrace1( TRACE_NORMAL, CUSBACMCLASSCONTROLLER_DOSTARTL_DUP3, "CUsbACMClassController::DoStartL;\tFailed to create ACM function. Error: %d", err); - + LOGTEXT2(_L8("\tFailed to create ACM function. Error: %d"), err); if (i != 0) { //Must clear any ACMs that have been completed iAcmServer.DestroyFunctions(i); - OstTrace1( TRACE_NORMAL, CUSBACMCLASSCONTROLLER_DOSTARTL_DUP4, "CUsbACMClassController::DoStartL;\tDestroyed %d Interfaces", i ); + LOGTEXT2(_L8("\tDestroyed %d Interfaces"), i); } - OstTrace1( TRACE_NORMAL, CUSBACMCLASSCONTROLLER_DOSTARTL_DUP7, "CUsbACMClassController::DoStartL; leave Error: %d", err); - User::Leave(err); + LEAVEL(err); } } #endif // USE_ACM_REGISTRATION_PORT - OstTrace1( TRACE_NORMAL, CUSBACMCLASSCONTROLLER_DOSTARTL_DUP5, "CUsbACMClassController::DoStartL;\tCreated %d ACM Interfaces", iNumberOfAcmFunctions ); - OstTraceFunctionExit0( CUSBACMCLASSCONTROLLER_DOSTARTL_EXIT ); + LOGTEXT2(_L8("\tCreated %d ACM Interfaces"), iNumberOfAcmFunctions); } /** @@ -261,21 +221,15 @@ */ void CUsbACMClassController::Stop(TRequestStatus& aStatus) { - OstTraceFunctionEntry0( CUSBACMCLASSCONTROLLER_STOP_ENTRY ); + LOG_FUNC; // We should always be started when this function is called (guaranteed by // CUsbSession). - //User::Panic(KAcmCcPanicCategory, EBadApiCallStop); - if (iState != EUsbServiceStarted) - { - OstTrace1( TRACE_FATAL, CUSBACMCLASSCONTROLLER_STOP, "CUsbACMClassController::Stop;iState=%d", (TInt)iState ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmCcPanicCategory, EBadApiCallStop) ); - } + __ASSERT_DEBUG( iState == EUsbServiceStarted, _USB_PANIC(KAcmCcPanicCategory, EBadApiCallStop) ); TRequestStatus* reportStatus = &aStatus; DoStop(); User::RequestComplete(reportStatus, KErrNone); - OstTraceFunctionExit0( CUSBACMCLASSCONTROLLER_STOP_EXIT ); } /** @@ -285,10 +239,10 @@ */ void CUsbACMClassController::GetDescriptorInfo(TUsbDescriptor& aDescriptorInfo) const { - OstTraceFunctionEntry0( CUSBACMCLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY ); + LOG_FUNC; + aDescriptorInfo.iLength = KAcmDescriptorLength; aDescriptorInfo.iNumInterfaces = KAcmNumberOfInterfacesPerAcmFunction*(iNumberOfAcmFunctions); - OstTraceFunctionExit0( CUSBACMCLASSCONTROLLER_GETDESCRIPTORINFO_EXIT ); } /** @@ -296,16 +250,13 @@ */ void CUsbACMClassController::DoStop() { - OstTraceFunctionEntry0( CUSBACMCLASSCONTROLLER_DOSTOP_ENTRY ); + LOG_FUNC; + if (iState == EUsbServiceStarted) { #ifdef USE_ACM_REGISTRATION_PORT TInt err = iComm.SetSignalsToSpace(iNumberOfAcmFunctions); - if (err != KErrNone) - { - OstTrace1( TRACE_FATAL, CUSBACMCLASSCONTROLLER_DOSTOP_DUP1, "CUsbACMClassController::DoStop;err=%d", err ); - User::Invariant(); - } + __ASSERT_DEBUG(err == KErrNone, User::Invariant()); //the implementation in CRegistrationPort always return KErrNone (void)err; // If there is an error here, USBSVR will just ignore it, but @@ -317,10 +268,11 @@ // Destroy interfaces. Can't do anything with an error here. static_cast(iAcmServer.DestroyFunctions(iNumberOfAcmFunctions)); #endif // USE_ACM_REGISTRATION_PORT - OstTrace1( TRACE_NORMAL, CUSBACMCLASSCONTROLLER_DOSTOP, "CUsbACMClassController::DoStop;\tDestroyed %d Interfaces", iNumberOfAcmFunctions ); + + LOGTEXT2(_L8("\tDestroyed %d Interfaces"), iNumberOfAcmFunctions); + iState = EUsbServiceIdle; } - OstTraceFunctionExit0( CUSBACMCLASSCONTROLLER_DOSTOP_EXIT ); } /** @@ -329,10 +281,7 @@ */ void CUsbACMClassController::RunL() { - OstTraceFunctionEntry0( CUSBACMCLASSCONTROLLER_RUNL_ENTRY ); - OstTrace0( TRACE_FATAL, CUSBACMCLASSCONTROLLER_RUNL, "CUsbACMClassController::RunL;EUnusedFunction" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmCcPanicCategory, EUnusedFunction) ); - OstTraceFunctionExit0( CUSBACMCLASSCONTROLLER_RUNL_EXIT ); + __ASSERT_DEBUG( EFalse, _USB_PANIC(KAcmCcPanicCategory, EUnusedFunction) ); } /** @@ -341,10 +290,7 @@ */ void CUsbACMClassController::DoCancel() { - OstTraceFunctionEntry0( CUSBACMCLASSCONTROLLER_DOCANCEL_ENTRY ); - OstTrace0( TRACE_FATAL, CUSBACMCLASSCONTROLLER_DOCANCEL, "CUsbACMClassController::DoCancel;EUnusedFunction" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmCcPanicCategory, EUnusedFunction) ); - OstTraceFunctionExit0( CUSBACMCLASSCONTROLLER_DOCANCEL_EXIT ); + __ASSERT_DEBUG( EFalse, _USB_PANIC(KAcmCcPanicCategory, EUnusedFunction) ); } /** @@ -356,9 +302,6 @@ */ TInt CUsbACMClassController::RunError(TInt /*aError*/) { - OstTraceFunctionEntry0( CUSBACMCLASSCONTROLLER_RUNERROR_ENTRY ); - OstTrace0( TRACE_FATAL, CUSBACMCLASSCONTROLLER_RUNERROR, "CUsbACMClassController::RunError;EUnusedFunction" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmCcPanicCategory, EUnusedFunction) ); - OstTraceFunctionExit0( CUSBACMCLASSCONTROLLER_RUNERROR_EXIT ); + __ASSERT_DEBUG( EFalse, _USB_PANIC(KAcmCcPanicCategory, EUnusedFunction) ); return KErrNone; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/SRC/CUsbAcmClassImpCollection.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/SRC/CUsbAcmClassImpCollection.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/SRC/CUsbAcmClassImpCollection.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -25,11 +25,6 @@ #include #include #include "CUsbACMClassController.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbAcmClassImpCollectionTraces.h" -#endif - // Define the private interface UIDs const TImplementationProxy UsbCCImplementationTable[] = @@ -39,9 +34,8 @@ EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) { - OstTraceFunctionEntry0( USBACMCLASSIMPCONTROLLER_IMPLEMENTATIONGROUPPROXY_ENTRY ); aTableCount = sizeof(UsbCCImplementationTable) / sizeof(TImplementationProxy); - OstTraceFunctionExit0( USBACMCLASSIMPCONTROLLER_IMPLEMENTATIONGROUPPROXY_EXIT ); + return UsbCCImplementationTable; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/group/AcmClassController.mmp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/group/AcmClassController.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/group/AcmClassController.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -29,4 +29,4 @@ LIBRARY acmserver.lib -#include "AcmClassControllerBase.mmp" \ No newline at end of file +#include "AcmClassControllerBase.mmp" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/group/AcmClassControllerBase.mmp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/group/AcmClassControllerBase.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/group/AcmClassControllerBase.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -30,11 +30,12 @@ USERINCLUDE ../INC USERINCLUDE ../../classimplementation/ecacm/public -USERINCLUDE ../../../../../usbman/server/public -USERINCLUDE ../traces +USERINCLUDE ../../../../../usbman/server/public OS_LAYER_SYSTEMINCLUDE_SYMBIAN LIBRARY euser.lib LIBRARY usbclasscontroller.lib LIBRARY efsrv.lib + +#include diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/group/t_regport_AcmClassController.mmp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/group/t_regport_AcmClassController.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/group/t_regport_AcmClassController.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -33,4 +33,4 @@ LIBRARY c32.lib -#include "AcmClassControllerBase.mmp" \ No newline at end of file +#include "AcmClassControllerBase.mmp" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/group/usbacmconfiguration.hby --- a/usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/group/usbacmconfiguration.hby Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/group/usbacmconfiguration.hby Wed Sep 01 12:35:00 2010 +0100 @@ -19,7 +19,9 @@ #ifndef USBACMCONFIGURATION_HBY #define USBACMCONFIGURATION_HBY -#define USBACM_PATCHDATA_KUSBACMNUMBEROFACMFUNCTIONS 2 + +#define USBACM_PATCHDATA_KUSBACMNUMBEROFACMFUNCTIONS 1 + // USBACM_PATCHDATA_KUSBACMPROTOCOLNUMACM[X] is referring to the Xth ACM *function* // which is accessed by the (X-1)th ACM *port* @@ -27,7 +29,7 @@ #define USBACM_PATCHDATA_KUSBACMPROTOCOLNUMACM1 1 //0x01 - code taken from USBCDC 1.1 Table 17- Hayes compatible modem -#define USBACM_PATCHDATA_KUSBACMPROTOCOLNUMACM2 255 +//#define USBACM_PATCHDATA_KUSBACMPROTOCOLNUMACM2 255 //0xFF - Vendor-specific //#define USBACM_PATCHDATA_KUSBACMPROTOCOLNUMACM3 1 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/device/classdrivers/acm/classcontroller/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_ERROR=0x82 -[GROUP]TRACE_FATAL=0x81 -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_ERROR[0x82]_CUSBACMCLASSCONTROLLER_CONSTRUCTL=0x1 -[TRACE]TRACE_ERROR[0x82]_CUSBACMCLASSCONTROLLER_CONSTRUCTL_DUP1=0x2 -[TRACE]TRACE_ERROR[0x82]_CUSBACMCLASSCONTROLLER_CONSTRUCTL_DUP2=0x3 -[TRACE]TRACE_ERROR[0x82]_CUSBACMCLASSCONTROLLER_CONSTRUCTL_DUP3=0x4 -[TRACE]TRACE_ERROR[0x82]_CUSBACMCLASSCONTROLLER_DOSTARTL_DUP6=0x5 -[TRACE]TRACE_FATAL[0x81]_CUSBACMCLASSCONTROLLER_DOCANCEL=0x5 -[TRACE]TRACE_FATAL[0x81]_CUSBACMCLASSCONTROLLER_DOSTOP_DUP1=0x3 -[TRACE]TRACE_FATAL[0x81]_CUSBACMCLASSCONTROLLER_RUNERROR=0x6 -[TRACE]TRACE_FATAL[0x81]_CUSBACMCLASSCONTROLLER_RUNL=0x4 -[TRACE]TRACE_FATAL[0x81]_CUSBACMCLASSCONTROLLER_START=0x1 -[TRACE]TRACE_FATAL[0x81]_CUSBACMCLASSCONTROLLER_STOP=0x2 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_CONSTRUCTL_ENTRY=0x7 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_CONSTRUCTL_EXIT=0x8 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_CUSBACMCLASSCONTROLLER_CONS_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_CUSBACMCLASSCONTROLLER_CONS_EXIT=0x6 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_CUSBACMCLASSCONTROLLER_DES_ENTRY=0x3 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_CUSBACMCLASSCONTROLLER_DES_EXIT=0x4 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_DOCANCEL_ENTRY=0x15 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_DOCANCEL_EXIT=0x16 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_DOSTARTL_ENTRY=0xb -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_DOSTARTL_EXIT=0xc -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_DOSTOP_ENTRY=0x11 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_DOSTOP_EXIT=0x12 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY=0xf -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_GETDESCRIPTORINFO_EXIT=0x10 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_NEWL_ENTRY=0x1 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_NEWL_EXIT=0x2 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_RUNERROR_ENTRY=0x17 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_RUNERROR_EXIT=0x18 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_RUNL_ENTRY=0x13 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_RUNL_EXIT=0x14 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_START_ENTRY=0x9 -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_START_EXIT=0xa -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_STOP_ENTRY=0xd -[TRACE]TRACE_FLOW[0x8A]_CUSBACMCLASSCONTROLLER_STOP_EXIT=0xe -[TRACE]TRACE_FLOW[0x8A]_USBACMCLASSIMPCONTROLLER_IMPLEMENTATIONGROUPPROXY_ENTRY=0x19 -[TRACE]TRACE_FLOW[0x8A]_USBACMCLASSIMPCONTROLLER_IMPLEMENTATIONGROUPPROXY_EXIT=0x1a -[TRACE]TRACE_NORMAL[0x86]_CUSBACMCLASSCONTROLLER_DOSTARTL=0x1 -[TRACE]TRACE_NORMAL[0x86]_CUSBACMCLASSCONTROLLER_DOSTARTL_DUP1=0x2 -[TRACE]TRACE_NORMAL[0x86]_CUSBACMCLASSCONTROLLER_DOSTARTL_DUP2=0x3 -[TRACE]TRACE_NORMAL[0x86]_CUSBACMCLASSCONTROLLER_DOSTARTL_DUP3=0x4 -[TRACE]TRACE_NORMAL[0x86]_CUSBACMCLASSCONTROLLER_DOSTARTL_DUP4=0x5 -[TRACE]TRACE_NORMAL[0x86]_CUSBACMCLASSCONTROLLER_DOSTARTL_DUP5=0x7 -[TRACE]TRACE_NORMAL[0x86]_CUSBACMCLASSCONTROLLER_DOSTARTL_DUP7=0x6 -[TRACE]TRACE_NORMAL[0x86]_CUSBACMCLASSCONTROLLER_DOSTOP=0x8 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/acmserver/group/acmserver.mmp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/acmserver/group/acmserver.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/acmserver/group/acmserver.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -36,12 +36,12 @@ SOURCE acmserverclient.cpp USERINCLUDE ../inc -USERINCLUDE ../../ecacm/public -USERINCLUDE ../traces - +USERINCLUDE ../../ecacm/public OS_LAYER_SYSTEMINCLUDE_SYMBIAN LIBRARY euser.lib LIBRARY c32.lib +#include + UNPAGED diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/acmserver/src/acmserver.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/acmserver/src/acmserver.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/acmserver/src/acmserver.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -22,18 +22,18 @@ #include #include #include "acmserverimpl.h" +#include #include "acmserverconsts.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "acmserverTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ACMSVRCLI"); #endif +/** Panic category for users of RAcmServer. */ #ifdef _DEBUG -/** Panic category for users of RAcmServer. */ _LIT(KAcmSrvPanicCat, "ACMSVR"); #endif - /** Panic codes for users of RAcmServer. */ enum TAcmServerClientPanic { @@ -58,116 +58,68 @@ EXPORT_C RAcmServer::RAcmServer() : iImpl(NULL) { - OstTraceFunctionEntry0( RACMSERVER_RACMSERVER_CONS_ENTRY ); - - OstTraceFunctionExit0( RACMSERVER_RACMSERVER_CONS_EXIT ); + LOG_FUNC } EXPORT_C RAcmServer::~RAcmServer() { - OstTraceFunctionEntry0( RACMSERVER_RACMSERVER_ENTRY_DES ); - if (iImpl) - { - OstTraceExt1( TRACE_FATAL, RACMSERVER_RACMSERVER_DESTRUCTURE, "RAcmServer::~RAcmServer;iImpl=%p", iImpl ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmSrvPanicCat, EPanicNotClosed) ); - } - OstTraceFunctionExit0( RACMSERVER_RACMSERVER_EXIT_DES ); + LOG_FUNC + + __ASSERT_DEBUG(!iImpl, _USB_PANIC(KAcmSrvPanicCat, EPanicNotClosed)); } EXPORT_C TInt RAcmServer::Connect() { - OstTraceFunctionEntry0( RACMSERVER_CONNECT_ENTRY ); - if (iImpl) - { - OstTraceExt1( TRACE_FATAL, RACMSERVER_CONNECT, "RAcmServer::Connect;iImpl=%p", iImpl ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmSrvPanicCat, EPanicAlreadyConnected) ); - } + LOG_FUNC + + __ASSERT_DEBUG(!iImpl, _USB_PANIC(KAcmSrvPanicCat, EPanicAlreadyConnected)); TRAPD(err, iImpl = CAcmServerImpl::NewL()); - OstTraceFunctionExit0( RACMSERVER_CONNECT_EXIT ); return err; } EXPORT_C void RAcmServer::Close() { - OstTraceFunctionEntry0( RACMSERVER_CLOSE_ENTRY ); - + LOG_FUNC + delete iImpl; iImpl = NULL; - OstTraceFunctionExit0( RACMSERVER_CLOSE_EXIT ); } EXPORT_C TInt RAcmServer::CreateFunctions(const TUint aNoAcms) { - OstTraceFunctionEntry0( RACMSERVER_CREATEFUNCTIONS_ENTRY ); - OstTrace1( TRACE_NORMAL, RACMSERVER_CREATEFUNCTIONS, "RAcmServer::CreateFunctions;aNoAcms=%d", aNoAcms ); - - if (!iImpl) - { - OstTrace0( TRACE_FATAL, RACMSERVER_CREATEFUNCTIONS_DUP2, "RAcmServer::CreateFunctions;EPanicNotConnected" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmSrvPanicCat, EPanicNotConnected) ); - } + LOG_FUNC + LOGTEXT2(_L8("\taNoAcms = %d"), aNoAcms); - if (!aNoAcms) - { - OstTrace0( TRACE_FATAL, RACMSERVER_CREATEFUNCTIONS_DUP1, "RAcmServer::CreateFunctions;EPanicCantInstantiateZeroAcms" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmSrvPanicCat, EPanicCantInstantiateZeroAcms) ); - } + __ASSERT_DEBUG(iImpl, _USB_PANIC(KAcmSrvPanicCat, EPanicNotConnected)); + __ASSERT_DEBUG(aNoAcms, _USB_PANIC(KAcmSrvPanicCat, EPanicCantInstantiateZeroAcms)); return iImpl->CreateFunctions(aNoAcms, KDefaultAcmProtocolNum, KControlIfcName, KDataIfcName); } EXPORT_C TInt RAcmServer::CreateFunctions(const TUint aNoAcms, const TUint8 aProtocolNum) { - OstTraceFunctionEntry0( RACMSERVER_CREATEFUNCTIONS_TUINT_TUINT8_ENTRY ); - OstTraceExt2( TRACE_NORMAL, RACMSERVER_CREATEFUNCTIONS_TUINT_TUINT8, "RAcmServer::CreateFunctions;aNoAcms=%d;aProtocolNum=%d", aNoAcms, aProtocolNum ); + LOG_FUNC + LOGTEXT3(_L8("\taNoAcms = %d, aProtocolNum = %d"), aNoAcms, aProtocolNum); - if (!iImpl) - { - OstTrace0( TRACE_FATAL, RACMSERVER_CREATEFUNCTIONS_TUINT_TUINT8_DUP1, "RAcmServer::CreateFunctions;EPanicNotConnected" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmSrvPanicCat, EPanicNotConnected) ); - } - - if (!aNoAcms) - { - OstTrace0( TRACE_FATAL, RACMSERVER_CREATEFUNCTIONS_TUINT_TUINT8_DUP2, "RAcmServer::CreateFunctions;EPanicCantInstantiateZeroAcms" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmSrvPanicCat, EPanicCantInstantiateZeroAcms) ); - } + __ASSERT_DEBUG(iImpl, _USB_PANIC(KAcmSrvPanicCat, EPanicNotConnected)); + __ASSERT_DEBUG(aNoAcms, _USB_PANIC(KAcmSrvPanicCat, EPanicCantInstantiateZeroAcms)); return iImpl->CreateFunctions(aNoAcms, aProtocolNum, KControlIfcName, KDataIfcName); } EXPORT_C TInt RAcmServer::CreateFunctions(const TUint aNoAcms, const TUint8 aProtocolNum, const TDesC& aAcmControlIfcName, const TDesC& aAcmDataIfcName) { - OstTraceFunctionEntry0( RACMSERVER_CREATEFUNCTIONS_TUINT_TUINT8_TDESCREF_TDESCREF_ENTRY ); - - if (!iImpl) - { - OstTrace0( TRACE_FATAL, RACMSERVER_CREATEFUNCTIONS_TUINT_TUINT8_TDESCREF_TDESCREF, "RAcmServer::CreateFunctions;EPanicNotConnected" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmSrvPanicCat, EPanicNotConnected) ); - } + LOG_FUNC - if (!aNoAcms) - { - OstTrace0( TRACE_FATAL, RACMSERVER_CREATEFUNCTIONS_TUINT_TUINT8_TDESCREF_TDESCREF_DUP1, "RAcmServer::CreateFunctions;EPanicCantInstantiateZeroAcms" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmSrvPanicCat, EPanicCantInstantiateZeroAcms) ); - } + __ASSERT_DEBUG(iImpl, _USB_PANIC(KAcmSrvPanicCat, EPanicNotConnected)); + __ASSERT_DEBUG(aNoAcms, _USB_PANIC(KAcmSrvPanicCat, EPanicCantInstantiateZeroAcms)); return iImpl->CreateFunctions(aNoAcms, aProtocolNum, aAcmControlIfcName, aAcmDataIfcName); } EXPORT_C TInt RAcmServer::DestroyFunctions(const TUint aNoAcms) { - OstTraceFunctionEntry0( RACMSERVER_DESTROYFUNCTIONS_ENTRY ); - OstTrace1( TRACE_NORMAL, RACMSERVER_DESTROYFUNCTIONS, "RAcmServer::DestroyFunctions;aNoAcms=%d", aNoAcms ); + LOG_FUNC + LOGTEXT2(_L8("\taNoAcms = %d"), aNoAcms); - if (!iImpl) - { - OstTrace0( TRACE_FATAL, RACMSERVER_DESTROYFUNCTIONS_DUP1, "RAcmServer::CreateFunctions;EPanicNotConnected" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmSrvPanicCat, EPanicNotConnected) ); - } - - if (!aNoAcms) - { - OstTrace0( TRACE_FATAL, RACMSERVER_DESTROYFUNCTIONS_DUP2, "RAcmServer::CreateFunctions;EPanicCantDestroyZeroAcms" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmSrvPanicCat, EPanicCantInstantiateZeroAcms) ); - } - + __ASSERT_DEBUG(iImpl, _USB_PANIC(KAcmSrvPanicCat, EPanicNotConnected)); + __ASSERT_DEBUG(aNoAcms, _USB_PANIC(KAcmSrvPanicCat, EPanicCantDestroyZeroAcms)); return iImpl->DestroyFunctions(aNoAcms); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/acmserver/src/acmserverclient.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/acmserver/src/acmserverclient.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/acmserver/src/acmserverclient.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -20,28 +20,25 @@ */ #include -#include #include "acmserverclient.h" #include "acmserverconsts.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "acmserverclientTraces.h" +#include +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ACMSVRCLI"); #endif /** Constructor */ RAcmServerClient::RAcmServerClient() { - OstTraceFunctionEntry0( RACMSERVERCLIENT_RACMSERVERCLIENT_CONS_ENTRY ); - - OstTraceFunctionExit0( RACMSERVERCLIENT_RACMSERVERCLIENT_CONS_EXIT ); + LOG_FUNC } /** Destructor */ RAcmServerClient::~RAcmServerClient() { - OstTraceFunctionEntry0( RACMSERVERCLIENT_RACMSERVERCLIENT_DES_ENTRY); - - OstTraceFunctionExit0( RACMSERVERCLIENT_RACMSERVERCLIENT_ENTRY_DES_EXIT ); + LOG_FUNC } /** @@ -50,8 +47,7 @@ */ TVersion RAcmServerClient::Version() const { - OstTraceFunctionEntry0( RACMSERVERCLIENT_VERSION_ENTRY ); - + LOG_FUNC return TVersion( KAcmSrvMajorVersionNumber, KAcmSrvMinorVersionNumber, @@ -66,17 +62,17 @@ */ TInt RAcmServerClient::Connect() { - OstTraceFunctionEntry0( RACMSERVERCLIENT_CONNECT_ENTRY ); - + LOG_FUNC return CreateSession(KAcmServerName, Version(), 1); } TInt RAcmServerClient::CreateFunctions(const TUint aNoAcms, const TUint8 aProtocolNum, const TDesC& aAcmControlIfcName, const TDesC& aAcmDataIfcName) { - OstTraceFunctionEntry0( RACMSERVERCLIENT_CREATEFUNCTIONS_ENTRY ); - OstTraceExt4( TRACE_NORMAL, RACMSERVERCLIENT_CREATEFUNCTIONS, "RAcmServerClient::CreateFunctions;aNoAcms=%d;aProtocolNum=%d;aAcmControlIfcName=%S;aAcmDataIfcName=%S", aNoAcms, aProtocolNum, aAcmControlIfcName, aAcmDataIfcName ); - + LOG_FUNC + LOGTEXT5(_L("\taNoAcms = %d, aProtocolNum = %d, Control Ifc Name = %S, Data Ifc Name = %S"), + aNoAcms, aProtocolNum, &aAcmControlIfcName, &aAcmDataIfcName); + TIpcArgs args; args.Set(0, aNoAcms); args.Set(1, aProtocolNum); @@ -87,7 +83,8 @@ TInt RAcmServerClient::DestroyFunctions(const TUint aNoAcms) { - OstTraceFunctionEntry0( RACMSERVERCLIENT_DESTROYFUNCTIONS_ENTRY ); - OstTrace1( TRACE_NORMAL, RACMSERVERCLIENT_DESTROYFUNCTIONS, "RAcmServerClient::DestroyFunctions;aNoAcms=%d", aNoAcms ); + LOG_FUNC + LOGTEXT2(_L8("\taNoAcms = %d"), aNoAcms); + return SendReceive(EAcmDestroyAcmFunctions, TIpcArgs(aNoAcms)); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/acmserver/src/acmserverimpl.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/acmserver/src/acmserverimpl.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/acmserver/src/acmserverimpl.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -20,29 +20,27 @@ */ #include +#include "acmserverimpl.h" +#include #include -#include "acmserverimpl.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "acmserverimplTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ACMSVRCLI"); #endif /** Constructor */ CAcmServerImpl::CAcmServerImpl() { - OstTraceFunctionEntry0( CACMSERVERIMPL_CACMSERVERIMPL_CONS_ENTRY ); - - OstTraceFunctionExit0( CACMSERVERIMPL_CACMSERVERIMPL_CONS_EXIT ); + LOG_FUNC } /** Destructor */ CAcmServerImpl::~CAcmServerImpl() { - OstTraceFunctionEntry0( CACMSERVERIMPL_CACMSERVERIMPL_DES_ENTRY); - + LOG_FUNC + iCommServ.Close(); iAcmServerClient.Close(); - OstTraceFunctionExit0( CACMSERVERIMPL_CACMSERVERIMPL_ENTRY_DES_EXIT ); } /** @@ -51,61 +49,41 @@ */ CAcmServerImpl* CAcmServerImpl::NewL() { - OstTraceFunctionEntry0( CACMSERVERIMPL_NEWL_ENTRY ); - + LOG_STATIC_FUNC_ENTRY + CAcmServerImpl* self = new(ELeave) CAcmServerImpl; CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(self); - OstTraceFunctionExit0( CACMSERVERIMPL_NEWL_EXIT ); return self; } void CAcmServerImpl::ConstructL() { - OstTraceFunctionEntry0( CACMSERVERIMPL_CONSTRUCTL_ENTRY ); - + LOG_FUNC // In order to connect a session, the ECACM CSY must be loaded (it // contains the server). - TInt err; - err = iCommServ.Connect(); - if (err < 0) - { - OstTrace1( TRACE_ERROR, CACMSERVERIMPL_CONSTRUCTL, "CAcmServerImpl::ConstructL;err=%d", err ); - User::Leave(err); - } - - err = iCommServ.LoadCommModule(KAcmCsyName); - if (err < 0) - { - OstTrace1( TRACE_ERROR, CACMSERVERIMPL_CONSTRUCTL_DUP1, "CAcmServerImpl::ConstructL;err=%d", err ); - User::Leave(err); - } - + LEAVEIFERRORL(iCommServ.Connect()); + LEAVEIFERRORL(iCommServ.LoadCommModule(KAcmCsyName)); // NB RCommServ::Close undoes LoadCommModule. - err = iAcmServerClient.Connect(); - if (err < 0) - { - OstTrace1( TRACE_ERROR, CACMSERVERIMPL_CONSTRUCTL_DUP2, "CAcmServerImpl::ConstructL;err=%d", err ); - User::Leave(err); - } - + LEAVEIFERRORL(iAcmServerClient.Connect()); // iCommServ is eventually cleaned up in our destructor. It must be held // open at least as long as our session on the ACM server, otherwise // there's a risk the ACM server will be pulled from under our feet. - OstTraceFunctionExit0( CACMSERVERIMPL_CONSTRUCTL_EXIT ); } TInt CAcmServerImpl::CreateFunctions(const TUint aNoAcms, const TUint8 aProtocolNum, const TDesC& aAcmControlIfcName, const TDesC& aAcmDataIfcName) { - OstTraceFunctionEntry0( CACMSERVERIMPL_CREATEFUNCTIONS_ENTRY ); + LOG_FUNC + return iAcmServerClient.CreateFunctions(aNoAcms, aProtocolNum, aAcmControlIfcName, aAcmDataIfcName); } TInt CAcmServerImpl::DestroyFunctions(const TUint aNoAcms) { - OstTraceFunctionEntry0( CACMSERVERIMPL_DESTROYFUNCTIONS_ENTRY ); - OstTrace1( TRACE_NORMAL, CACMSERVERIMPL_DESTROYFUNCTIONS, "CAcmServerImpl::DestroyFunctions;aNoAcms=%d", aNoAcms ); + LOG_FUNC + LOGTEXT2(_L8("\taNoAcms = %d"), aNoAcms); + return iAcmServerClient.DestroyFunctions(aNoAcms); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/acmserver/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/acmserver/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/acmserver/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/acmserver/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_ERROR=0x82 -[GROUP]TRACE_FATAL=0x81 -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_ERROR[0x82]_CACMSERVERIMPL_CONSTRUCTL=0x1 -[TRACE]TRACE_ERROR[0x82]_CACMSERVERIMPL_CONSTRUCTL_DUP1=0x2 -[TRACE]TRACE_ERROR[0x82]_CACMSERVERIMPL_CONSTRUCTL_DUP2=0x3 -[TRACE]TRACE_FATAL[0x81]_RACMSERVER_CONNECT=0x2 -[TRACE]TRACE_FATAL[0x81]_RACMSERVER_CREATEFUNCTIONS_DUP1=0x4 -[TRACE]TRACE_FATAL[0x81]_RACMSERVER_CREATEFUNCTIONS_DUP2=0x3 -[TRACE]TRACE_FATAL[0x81]_RACMSERVER_CREATEFUNCTIONS_TUINT_TUINT8_DUP1=0x5 -[TRACE]TRACE_FATAL[0x81]_RACMSERVER_CREATEFUNCTIONS_TUINT_TUINT8_DUP2=0x6 -[TRACE]TRACE_FATAL[0x81]_RACMSERVER_CREATEFUNCTIONS_TUINT_TUINT8_TDESCREF_TDESCREF=0x7 -[TRACE]TRACE_FATAL[0x81]_RACMSERVER_CREATEFUNCTIONS_TUINT_TUINT8_TDESCREF_TDESCREF_DUP1=0x8 -[TRACE]TRACE_FATAL[0x81]_RACMSERVER_DESTROYFUNCTIONS_DUP1=0x9 -[TRACE]TRACE_FATAL[0x81]_RACMSERVER_DESTROYFUNCTIONS_DUP2=0xa -[TRACE]TRACE_FATAL[0x81]_RACMSERVER_RACMSERVER_DESTRUCTURE=0x1 -[TRACE]TRACE_FLOW[0x8A]_CACMSERVERIMPL_CACMSERVERIMPL_CONS_ENTRY=0x15 -[TRACE]TRACE_FLOW[0x8A]_CACMSERVERIMPL_CACMSERVERIMPL_CONS_EXIT=0x16 -[TRACE]TRACE_FLOW[0x8A]_CACMSERVERIMPL_CACMSERVERIMPL_DES_ENTRY=0x17 -[TRACE]TRACE_FLOW[0x8A]_CACMSERVERIMPL_CACMSERVERIMPL_ENTRY_DES_EXIT=0x18 -[TRACE]TRACE_FLOW[0x8A]_CACMSERVERIMPL_CONSTRUCTL_ENTRY=0x1b -[TRACE]TRACE_FLOW[0x8A]_CACMSERVERIMPL_CONSTRUCTL_EXIT=0x1c -[TRACE]TRACE_FLOW[0x8A]_CACMSERVERIMPL_CREATEFUNCTIONS_ENTRY=0x1d -[TRACE]TRACE_FLOW[0x8A]_CACMSERVERIMPL_DESTROYFUNCTIONS_ENTRY=0x1e -[TRACE]TRACE_FLOW[0x8A]_CACMSERVERIMPL_NEWL_ENTRY=0x19 -[TRACE]TRACE_FLOW[0x8A]_CACMSERVERIMPL_NEWL_EXIT=0x1a -[TRACE]TRACE_FLOW[0x8A]_RACMSERVERCLIENT_CONNECT_ENTRY=0x12 -[TRACE]TRACE_FLOW[0x8A]_RACMSERVERCLIENT_CREATEFUNCTIONS_ENTRY=0x13 -[TRACE]TRACE_FLOW[0x8A]_RACMSERVERCLIENT_DESTROYFUNCTIONS_ENTRY=0x14 -[TRACE]TRACE_FLOW[0x8A]_RACMSERVERCLIENT_RACMSERVERCLIENT_CONS_ENTRY=0xd -[TRACE]TRACE_FLOW[0x8A]_RACMSERVERCLIENT_RACMSERVERCLIENT_CONS_EXIT=0xe -[TRACE]TRACE_FLOW[0x8A]_RACMSERVERCLIENT_RACMSERVERCLIENT_DES_ENTRY=0xf -[TRACE]TRACE_FLOW[0x8A]_RACMSERVERCLIENT_RACMSERVERCLIENT_ENTRY_DES_EXIT=0x10 -[TRACE]TRACE_FLOW[0x8A]_RACMSERVERCLIENT_VERSION_ENTRY=0x11 -[TRACE]TRACE_FLOW[0x8A]_RACMSERVER_CLOSE_ENTRY=0x7 -[TRACE]TRACE_FLOW[0x8A]_RACMSERVER_CLOSE_EXIT=0x8 -[TRACE]TRACE_FLOW[0x8A]_RACMSERVER_CONNECT_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x8A]_RACMSERVER_CONNECT_EXIT=0x6 -[TRACE]TRACE_FLOW[0x8A]_RACMSERVER_CREATEFUNCTIONS_ENTRY=0x9 -[TRACE]TRACE_FLOW[0x8A]_RACMSERVER_CREATEFUNCTIONS_TUINT_TUINT8_ENTRY=0xa -[TRACE]TRACE_FLOW[0x8A]_RACMSERVER_CREATEFUNCTIONS_TUINT_TUINT8_TDESCREF_TDESCREF_ENTRY=0xb -[TRACE]TRACE_FLOW[0x8A]_RACMSERVER_DESTROYFUNCTIONS_ENTRY=0xc -[TRACE]TRACE_FLOW[0x8A]_RACMSERVER_RACMSERVER_CONS_ENTRY=0x1 -[TRACE]TRACE_FLOW[0x8A]_RACMSERVER_RACMSERVER_CONS_EXIT=0x2 -[TRACE]TRACE_FLOW[0x8A]_RACMSERVER_RACMSERVER_ENTRY_DES=0x3 -[TRACE]TRACE_FLOW[0x8A]_RACMSERVER_RACMSERVER_EXIT_DES=0x4 -[TRACE]TRACE_NORMAL[0x86]_CACMSERVERIMPL_DESTROYFUNCTIONS=0x6 -[TRACE]TRACE_NORMAL[0x86]_RACMSERVERCLIENT_CREATEFUNCTIONS=0x4 -[TRACE]TRACE_NORMAL[0x86]_RACMSERVERCLIENT_DESTROYFUNCTIONS=0x5 -[TRACE]TRACE_NORMAL[0x86]_RACMSERVER_CREATEFUNCTIONS=0x1 -[TRACE]TRACE_NORMAL[0x86]_RACMSERVER_CREATEFUNCTIONS_TUINT_TUINT8=0x2 -[TRACE]TRACE_NORMAL[0x86]_RACMSERVER_DESTROYFUNCTIONS=0x3 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/group/ECACM.MMP --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/group/ECACM.MMP Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/group/ECACM.MMP Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -60,7 +60,6 @@ USERINCLUDE ../inc USERINCLUDE ../public -USERINCLUDE ../traces OS_LAYER_SYSTEMINCLUDE_SYMBIAN @@ -68,7 +67,8 @@ LIBRARY c32.lib LIBRARY efsrv.lib +#include + VENDORID 0x70000001 UNPAGED - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/AcmPort.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/AcmPort.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/AcmPort.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -16,15 +16,16 @@ */ #include +#include #include "AcmPort.h" #include "AcmPortFactory.h" #include "AcmUtils.h" #include "AcmWriter.h" #include "AcmReader.h" #include "AcmPanic.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "AcmPortTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif const TUint KCapsRate=( KCapsBps50 @@ -93,13 +94,12 @@ * @return Ownership of a newly created CAcmPort object */ { - OstTraceFunctionEntry0( CACMPORT_NEWL_ENTRY ); - + LOG_STATIC_FUNC_ENTRY + CAcmPort* self = new(ELeave) CAcmPort(aUnit, aFactory); CleanupClosePushL(*self); self->ConstructL(); CleanupStack::Pop(); - OstTraceFunctionExit0( CACMPORT_NEWL_EXIT ); return self; } @@ -109,20 +109,12 @@ * port. */ { - OstTraceFunctionEntry0( CACMPORT_CONSTRUCTL_ENTRY ); - iReader = CAcmReader::NewL(*this, KDefaultBufferSize); iWriter = CAcmWriter::NewL(*this, KDefaultBufferSize); TName name; - TInt err; name.Num(iUnit); - err = SetName(&name); - if (err < 0) - { - OstTrace1( TRACE_FATAL, CACMPORT_CONSTRUCTL, "CAcmPort::ConstructL;err=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(SetName(&name)); iCommServerConfig.iBufFlags = 0; iCommServerConfig.iBufSize = iReader->BufSize(); @@ -141,7 +133,6 @@ iCommConfig.iParityErrorChar= 0; iCommConfig.iSIREnable = ESIRDisable; iCommConfig.iSIRSettings = 0; - OstTraceFunctionExit0( CACMPORT_CONSTRUCTL_EXIT ); } CAcmPort::CAcmPort(const TUint aUnit, MAcmPortObserver& aObserver) @@ -156,8 +147,6 @@ * @param aUnit The port number. */ { - OstTraceFunctionEntry0( CACMPORT_CACMPORT_CONS_ENTRY ); - OstTraceFunctionExit0( CACMPORT_CACMPORT_DES_EXIT ); } void CAcmPort::StartRead(const TAny* aClientBuffer, TInt aLength) @@ -168,30 +157,26 @@ * @param aLength number of bytes to read */ { - OstTraceFunctionEntry0( CACMPORT_STARTREAD_ENTRY ); - OstTraceExt2( TRACE_NORMAL, CACMPORT_STARTREAD, "CAcmPort::StartRead;aClientBuffer=%p;aLength=%d", aClientBuffer, aLength ); + LOG_LINE + LOG_FUNC + LOGTEXT3(_L8("\taClientBuffer=0x%08x, aLength=%d"), + aClientBuffer, aLength); if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_STARTREAD_DUP1, "CAcmPort::StartRead;\t***access denied" ); + LOGTEXT(_L8("\t***access denied")); ReadCompleted(KErrAccessDenied); - OstTraceFunctionExit0( CACMPORT_STARTREAD_EXIT ); return; } // Analyse the request and call the relevant API on the data reader. NB We // do not pass requests for zero bytes to the data reader. They are an // RComm oddity we should handle here. - if (!iReader) - { - OstTraceExt1( TRACE_FATAL, CACMPORT_STARTREAD_DUP3, "CAcmPort::StartRead;iReader=%p", iReader ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iReader, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); if(iReader->IsNotifyDataAvailableQueryPending()) { ReadCompleted(KErrInUse); - OstTraceFunctionExit0( CACMPORT_STARTREAD_EXIT_DUP1 ); return; } @@ -207,10 +192,9 @@ { // Obscure RComm API feature- complete zero-length Read immediately, // to indicate that the hardware is powered up. - OstTrace0( TRACE_NORMAL, CACMPORT_STARTREAD_DUP2, "CAcmPort::StartRead;\tcompleting immediately with KErrNone" ); + LOGTEXT(_L8("\tcompleting immediately with KErrNone")); ReadCompleted(KErrNone); } - OstTraceFunctionExit0( CACMPORT_STARTREAD_EXIT_DUP2 ); } void CAcmPort::ReadCancel() @@ -218,21 +202,17 @@ * Downcall from C32. Cancel a read. */ { - OstTraceFunctionEntry0( CACMPORT_READCANCEL_ENTRY ); + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_READCANCEL, "CAcmPort::ReadCancel;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_READCANCEL_EXIT ); + LOGTEXT(_L8("\t***access denied")); return; } - if (!iReader) - { - OstTraceExt1( TRACE_FATAL, CACMPORT_READCANCEL_DUP1, "CAcmPort::ReadCancel;iReader=%p", iReader ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iReader, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iReader->ReadCancel(); - OstTraceFunctionExit0( CACMPORT_READCANCEL_EXIT_DUP1 ); } TInt CAcmPort::QueryReceiveBuffer(TInt& aLength) const @@ -243,23 +223,18 @@ * @return Error. */ { - OstTraceFunctionEntry0( CACMPORT_QUERYRECEIVEBUFFER_ENTRY ); + LOG_LINE + LOG_FUNC if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_QUERYRECEIVEBUFFER, "CAcmPort::QueryReceiveBuffer;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_QUERYRECEIVEBUFFER_EXIT ); + LOGTEXT(_L8("\t***access denied")); return KErrAccessDenied; } - if (!iReader) - { - OstTraceExt1( TRACE_FATAL, CACMPORT_QUERYRECEIVEBUFFER_DUP2, "CAcmPort::QueryReceiveBuffer;iReader=%p", iReader ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iReader, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); aLength = static_cast(iReader->BufLen()); - OstTrace1( TRACE_NORMAL, CACMPORT_QUERYRECEIVEBUFFER_DUP1, "CAcmPort::QueryReceiveBuffer;aLength=%d", aLength ); - OstTraceFunctionExit0( CACMPORT_QUERYRECEIVEBUFFER_EXIT_DUP1 ); + LOGTEXT2(_L8("\tlength=%d"), aLength); return KErrNone; } @@ -270,32 +245,24 @@ * @param aFlags Flags indicating which buffer(s) to reset. */ { - OstTraceFunctionEntry0( CACMPORT_RESETBUFFERS_ENTRY ); - OstTrace1( TRACE_NORMAL, CACMPORT_RESETBUFFERS, "CAcmPort::ResetBuffers;aFlags=%d", aFlags ); + LOG_LINE + LOGTEXT2(_L8(">>CAcmPort::ResetBuffers aFlags = %d"), aFlags); if ( aFlags & KCommResetRx ) { - OstTrace0( TRACE_NORMAL, CACMPORT_RESETBUFFERS_DUP1, "CAcmPort::ResetBuffers;\tresetting Rx buffer" ); - if (!iReader) - { - OstTraceExt1( TRACE_FATAL, CACMPORT_RESETBUFFERS_DUP3, "CAcmPort::ResetBuffers;iReader=%p", iReader ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + LOGTEXT(_L8("\tresetting Rx buffer")); + __ASSERT_DEBUG(iReader, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iReader->ResetBuffer(); } if ( aFlags & KCommResetTx ) { - OstTrace0( TRACE_NORMAL, CACMPORT_RESETBUFFERS_DUP2, "CAcmPort::ResetBuffers;\tresetting Tx buffer" ); - if (!iWriter) - { - OstTraceExt1( TRACE_FATAL, CACMPORT_RESETBUFFERS_DUP4, "CAcmPort::ResetBuffers;iWriter=%p", iWriter ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + LOGTEXT(_L8("\tresetting Tx buffer")); + __ASSERT_DEBUG(iWriter, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iWriter->ResetBuffer(); } - OstTraceFunctionExit0( CACMPORT_RESETBUFFERS_EXIT ); + LOGTEXT(_L8("<Write(aClientBuffer, static_cast(aLength)); - OstTraceFunctionExit0( CACMPORT_STARTWRITE_EXIT_DUP2 ); } void CAcmPort::WriteCancel() @@ -342,22 +306,17 @@ * Downcall from C32. Cancel a pending write */ { - OstTraceFunctionEntry0( CACMPORT_WRITECANCEL_ENTRY ); + LOG_LINE + LOG_FUNC if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_WRITECANCEL, "CAcmPort::WriteCancel;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_WRITECANCEL_EXIT ); + LOGTEXT(_L8("\t***access denied")); return; } - if (!iWriter) - { - OstTraceExt1( TRACE_FATAL,CACMPORT_WRITECANCEL_DUP1, "CAcmPort::WriteCancel;iWriter=%p", iWriter ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iWriter, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iWriter->WriteCancel(); - OstTraceFunctionExit0( CACMPORT_WRITECANCEL_EXIT_DUP1 ); } void CAcmPort::Break(TInt aTime) @@ -369,13 +328,13 @@ * @param aTime Length of break in microseconds */ { - OstTraceFunctionEntry0( CACMPORT_BREAK_ENTRY ); - OstTrace1( TRACE_NORMAL, CACMPORT_BREAK, "CAcmPort::Break;\taTime=%d (microseconds)", aTime ); + LOG_LINE + LOG_FUNC + LOGTEXT2(_L8("\taTime=%d (microseconds)"), aTime); if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_BREAK_DUP1, "CAcmPort::Break;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_BREAK_EXIT ); + LOGTEXT(_L8("\t***access denied")); return; } @@ -387,16 +346,15 @@ TInt err = iAcm->BreakRequest(CBreakController::EDevice, CBreakController::ETiming, TTimeIntervalMicroSeconds32(aTime)); - OstTrace1( TRACE_NORMAL, CACMPORT_BREAK_DUP2, "CAcmPort::Break;\tBreakRequest = %d", err ); + LOGTEXT2(_L8("\tBreakRequest = %d"), err); // Note that the break controller may refuse our request if a host-driven // break is outstanding. if ( err ) { - OstTrace1( TRACE_NORMAL, CACMPORT_BREAK_DUP3, "CAcmPort::Break;\tcalling BreakCompleted with %d", err ); + LOGTEXT2(_L8("\tcalling BreakCompleted with %d"), err); iBreak = EFalse; BreakCompleted(err); } - OstTraceFunctionExit0( CACMPORT_BREAK_EXIT_DUP1 ); } void CAcmPort::BreakCancel() @@ -404,20 +362,22 @@ * Downcall from C32. Cancel a pending break. */ { - OstTraceFunctionEntry0( CACMPORT_BREAKCANCEL_ENTRY ); + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_BREAKCANCEL, "CAcmPort::BreakCancel;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_BREAKCANCEL_EXIT ); + LOGTEXT(_L8("\t***access denied")); return; } iCancellingBreak = ETrue; + TInt err = iAcm->BreakRequest(CBreakController::EDevice, CBreakController::EInactive); // Note that the device cannot turn off a break if there's a host-driven // break in progress. - OstTrace1( TRACE_NORMAL, CACMPORT_BREAKCANCEL_DUP1, "CAcmPort::BreakCancel;\tBreakRequest = %d", err ); + LOGTEXT2(_L8("\tBreakRequest = %d"), err); if ( err ) { iCancellingBreak = EFalse; @@ -426,7 +386,6 @@ // Whether BreakOff worked or not, reset our flag saying we're no longer // interested in any subsequent completion anyway. iBreak = EFalse; - OstTraceFunctionExit0( CACMPORT_BREAKCANCEL_EXIT_DUP1 ); } TInt CAcmPort::GetConfig(TDes8& aDes) const @@ -437,39 +396,43 @@ * @return Error. */ { - OstTraceFunctionEntry0( CACMPORT_GETCONFIG_ENTRY ); + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_GETCONFIG, "CAcmPort::GetConfig;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_GETCONFIG_EXIT ); + LOGTEXT(_L8("\t***access denied")); return KErrAccessDenied; } if ( aDes.Length() < static_cast(sizeof(TCommConfigV01)) ) { - OstTrace0( TRACE_NORMAL, CACMPORT_GETCONFIG_DUP12, "CAcmPort::GetConfig;\t***not supported" ); - OstTraceFunctionExit0( CACMPORT_GETCONFIG_EXIT_DUP1 ); + LOGTEXT(_L8("\t***not supported")); return KErrNotSupported; } TCommConfig commConfigPckg; TCommConfigV01& commConfig = commConfigPckg(); commConfig = iCommConfig; + aDes.Copy(commConfigPckg); - - OstTrace1( TRACE_NORMAL, CACMPORT_GETCONFIG_DUP1, "CAcmPort::GetConfig;\tiCommConfig.iRate=%d", iCommConfig.iRate ); - OstTrace1( TRACE_NORMAL, CACMPORT_GETCONFIG_DUP2, "CAcmPort::GetConfig;\tiCommConfig.iDataBits = %d", iCommConfig.iDataBits ); - OstTrace1( TRACE_NORMAL, CACMPORT_GETCONFIG_DUP3, "CAcmPort::GetConfig;\tiCommConfig.iStopBits = %d", iCommConfig.iStopBits ); - OstTrace1( TRACE_NORMAL, CACMPORT_GETCONFIG_DUP4, "CAcmPort::GetConfig;\tiCommConfig.iParity = %d", iCommConfig.iParity ); - OstTrace1( TRACE_NORMAL, CACMPORT_GETCONFIG_DUP5, "CAcmPort::GetConfig;\tiCommConfig.iHandshake = %d", iCommConfig.iHandshake ); - OstTrace1( TRACE_NORMAL, CACMPORT_GETCONFIG_DUP6, "CAcmPort::GetConfig;\tiCommConfig.iParityError = %d", iCommConfig.iParityError ); - OstTrace1( TRACE_NORMAL, CACMPORT_GETCONFIG_DUP7, "CAcmPort::GetConfig;\tiCommConfig.iFifo = %d", iCommConfig.iFifo ); - OstTrace1( TRACE_NORMAL, CACMPORT_GETCONFIG_DUP8, "CAcmPort::GetConfig;\tiCommConfig.iSpecialRate = %d", iCommConfig.iSpecialRate ); - OstTrace1( TRACE_NORMAL, CACMPORT_GETCONFIG_DUP9, "CAcmPort::GetConfig;\tiCommConfig.iTerminatorCount = %d", iCommConfig.iTerminatorCount ); - OstTrace1( TRACE_NORMAL, CACMPORT_GETCONFIG_DUP10, "CAcmPort::GetConfig;\tiCommConfig.iSIREnable = %d", iCommConfig.iSIREnable ); - OstTrace1( TRACE_NORMAL, CACMPORT_GETCONFIG_DUP11, "CAcmPort::GetConfig;\tiCommConfig.iSIRSettings = %d", iCommConfig.iSIRSettings ); - OstTraceFunctionExit0( CACMPORT_GETCONFIG_EXIT_DUP2 ); + LOGTEXT2(_L8("\tiCommConfig.iRate = %d"), iCommConfig.iRate); + LOGTEXT2(_L8("\tiCommConfig.iDataBits = %d"), iCommConfig.iDataBits); + LOGTEXT2(_L8("\tiCommConfig.iStopBits = %d"), iCommConfig.iStopBits); + LOGTEXT2(_L8("\tiCommConfig.iParity = %d"), iCommConfig.iParity); + LOGTEXT2(_L8("\tiCommConfig.iHandshake = %d"), iCommConfig.iHandshake); + LOGTEXT2(_L8("\tiCommConfig.iParityError = %d"), + iCommConfig.iParityError); + LOGTEXT2(_L8("\tiCommConfig.iFifo = %d"), iCommConfig.iFifo); + LOGTEXT2(_L8("\tiCommConfig.iSpecialRate = %d"), + iCommConfig.iSpecialRate); + LOGTEXT2(_L8("\tiCommConfig.iTerminatorCount = %d"), + iCommConfig.iTerminatorCount); + LOGTEXT2(_L8("\tiCommConfig.iSIREnable = %d"), iCommConfig.iSIREnable); + LOGTEXT2(_L8("\tiCommConfig.iSIRSettings = %d"), + iCommConfig.iSIRSettings); + return KErrNone; } @@ -481,20 +444,24 @@ * @return Error */ { - OstTraceFunctionEntry0( CACMPORT_SETCONFIG_ENTRY ); + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_SETCONFIG, "CAcmPort::SetConfig;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_SETCONFIG_EXIT ); + LOGTEXT(_L8("\t***access denied")); return KErrAccessDenied; } - OstTraceExt3( TRACE_NORMAL, CACMPORT_SETCONFIG_DUP1, "CAcmPort::SetConfig;\tlength of argument=%d;TCommConfigV01=%d;TCommConfigV02=%d", aDes.Length(), (TInt)sizeof(TCommConfigV01), (TInt)sizeof(TCommConfigV02) ); - + LOGTEXT4(_L8("\tlength of argument %d, TCommConfigV01 %d, " + "TCommConfigV02 %d"), + aDes.Length(), + (TInt)sizeof(TCommConfigV01), + (TInt)sizeof(TCommConfigV02)); + if ( aDes.Length() < static_cast(sizeof(TCommConfigV01)) ) { - OstTrace0( TRACE_NORMAL, CACMPORT_SETCONFIG_DUP2, "CAcmPort::SetConfig;\t***not supported" ); - OstTraceFunctionExit0( CACMPORT_SETCONFIG_EXIT_DUP1 ); + LOGTEXT(_L8("\t***not supported")); return KErrNotSupported; } @@ -502,17 +469,18 @@ configPckg.Copy(aDes); TCommConfigV01& config = configPckg(); - OstTrace1( TRACE_DUMP, CACMPORT_SETCONFIG_DUP3, "CAcmPort::SetConfig;\tconfig.iRate=%d", config.iRate ); - OstTrace1( TRACE_DUMP, CACMPORT_SETCONFIG_DUP4, "CAcmPort::SetConfig;\tconfig.iDataBits=%d", config.iDataBits ); - OstTrace1( TRACE_DUMP, CACMPORT_SETCONFIG_DUP5, "CAcmPort::SetConfig;\tconfig.iStopBits=%d", config.iStopBits ); - OstTrace1( TRACE_DUMP, CACMPORT_SETCONFIG_DUP6, "CAcmPort::SetConfig;\tconfig.iParity=%d", config.iParity ); - OstTrace1( TRACE_DUMP, CACMPORT_SETCONFIG_DUP7, "CAcmPort::SetConfig;\tconfig.iHandshake=%d", config.iHandshake ); - OstTrace1( TRACE_DUMP, CACMPORT_SETCONFIG_DUP8, "CAcmPort::SetConfig;\tconfig.iParityError=%d", config.iParityError ); - OstTrace1( TRACE_DUMP, CACMPORT_SETCONFIG_DUP9, "CAcmPort::SetConfig;\tconfig.iFifo=%d", config.iFifo ); - OstTrace1( TRACE_DUMP, CACMPORT_SETCONFIG_DUP10, "CAcmPort::SetConfig;\tconfig.iSpecialRate=%d", config.iSpecialRate ); - OstTrace1( TRACE_DUMP, CACMPORT_SETCONFIG_DUP11, "CAcmPort::SetConfig;\tconfig.iTerminatorCount=%d", config.iTerminatorCount ); - OstTrace1( TRACE_DUMP, CACMPORT_SETCONFIG_DUP12, "CAcmPort::SetConfig;\tconfig.iSIREnable=%d", config.iSIREnable ); - OstTrace1( TRACE_DUMP, CACMPORT_SETCONFIG_DUP13, "CAcmPort::SetConfig;\tconfig.iSIRSettings=%d", config.iSIRSettings ); + LOGTEXT2(_L8("\tiCommConfig.iRate = %d"), config.iRate); + LOGTEXT2(_L8("\tiCommConfig.iDataBits = %d"), config.iDataBits); + LOGTEXT2(_L8("\tiCommConfig.iStopBits = %d"), config.iStopBits); + LOGTEXT2(_L8("\tiCommConfig.iParity = %d"), config.iParity); + LOGTEXT2(_L8("\tiCommConfig.iHandshake = %d"), config.iHandshake); + LOGTEXT2(_L8("\tiCommConfig.iParityError = %d"), config.iParityError); + LOGTEXT2(_L8("\tiCommConfig.iFifo = %d"), config.iFifo); + LOGTEXT2(_L8("\tiCommConfig.iSpecialRate = %d"), config.iSpecialRate); + LOGTEXT2(_L8("\tiCommConfig.iTerminatorCount = %d"), + config.iTerminatorCount); + LOGTEXT2(_L8("\tiCommConfig.iSIREnable = %d"), config.iSIREnable); + LOGTEXT2(_L8("\tiCommConfig.iSIRSettings = %d"), config.iSIRSettings); // Tell the reader object about the new terminators. Pass the whole config // struct by reference for ease. @@ -525,7 +493,6 @@ config.iHandshake); iCommConfig = config; - OstTraceFunctionExit0( CACMPORT_SETCONFIG_EXIT_DUP2 ); return KErrNone; } @@ -543,14 +510,12 @@ * @param aHandshake New handshake setting */ { - OstTraceFunctionEntry0( CACMPORT_HANDLECONFIGNOTIFICATION_ENTRY ); - - OstTrace0( TRACE_DUMP, CACMPORT_HANDLECONFIGNOTIFICATION, "CAcmPort::HandleConfigNotification;>>CAcmPort::HandleConfigNotification" ); - OstTrace1( TRACE_DUMP, CACMPORT_HANDLECONFIGNOTIFICATION_DUP1, "CAcmPort::HandleConfigNotification;aRate=%d", aRate ); - OstTrace1( TRACE_DUMP, CACMPORT_HANDLECONFIGNOTIFICATION_DUP2, "CAcmPort::HandleConfigNotification;aDataBits=%d", aDataBits ); - OstTrace1( TRACE_DUMP, CACMPORT_HANDLECONFIGNOTIFICATION_DUP3, "CAcmPort::HandleConfigNotification;aStopBits=%d", aStopBits ); - OstTrace1( TRACE_DUMP, CACMPORT_HANDLECONFIGNOTIFICATION_DUP4, "CAcmPort::HandleConfigNotification;aParity=%d", aParity ); - OstTrace1( TRACE_DUMP, CACMPORT_HANDLECONFIGNOTIFICATION_DUP5, "CAcmPort::HandleConfigNotification;aHandshake=%d", aHandshake ); + LOGTEXT(_L8(">>CAcmPort::HandleConfigNotification")); + LOGTEXT2(_L8("\taRate = %d"), aRate); + LOGTEXT2(_L8("\taDataBits = %d"), aDataBits); + LOGTEXT2(_L8("\taStopBits = %d"), aStopBits); + LOGTEXT2(_L8("\taParity = %d"), aParity); + LOGTEXT2(_L8("\taHandshake = %d"), aHandshake); iCommNotification.iChangedMembers = 0; @@ -586,12 +551,12 @@ if ( iCommNotification.iChangedMembers ) { - OstTrace0( TRACE_NORMAL, CACMPORT_HANDLECONFIGNOTIFICATION_DUP6, "CAcmPort::HandleConfigNotification;\tcalling ConfigChangeCompleted with KErrNone" ); + LOGTEXT(_L8("\tcalling ConfigChangeCompleted with KErrNone")); ConfigChangeCompleted(iCommNotificationDes,KErrNone); iNotifyConfigChange = EFalse; } - OstTraceFunctionExit0( CACMPORT_HANDLECONFIGNOTIFICATION_EXIT ); + LOGTEXT(_L8("<(sizeof(TCommServerConfigV01)) ) { - OstTrace0( TRACE_NORMAL, CACMPORT_SETSERVERCONFIG_DUP1, "CAcmPort::SetServerConfig;\t***not supported" ); - OstTraceFunctionExit0( CACMPORT_SETSERVERCONFIG_EXIT_DUP1 ); + LOGTEXT(_L8("\t***not supported")); return KErrNotSupported; } @@ -623,8 +588,7 @@ if ( serverConfig.iBufFlags != KCommBufferFull ) { - OstTrace0( TRACE_NORMAL, CACMPORT_SETSERVERCONFIG_DUP2, "CAcmPort::SetServerConfig;\t***not supported" ); - OstTraceFunctionExit0( CACMPORT_SETSERVERCONFIG_EXIT_DUP2 ); + LOGTEXT(_L8("\t***not supported")); return KErrNotSupported; } @@ -634,14 +598,12 @@ { // Failure- the buffer lengths will have been left as they were, so // just return error. - OstTrace1( TRACE_NORMAL, CACMPORT_SETSERVERCONFIG_DUP3, "CAcmPort::SetServerConfig;\t***DoSetBufferLengths=%d", err ); - OstTraceFunctionExit0( CACMPORT_SETSERVERCONFIG_EXIT_DUP3 ); + LOGTEXT2(_L8("\t***DoSetBufferLengths=%d"), err); return err; } // Changed buffer sizes OK. Note that new config. iCommServerConfig = serverConfig; - OstTraceFunctionExit0( CACMPORT_SETSERVERCONFIG_EXIT_DUP4 ); return KErrNone; } @@ -653,18 +615,18 @@ * @return Error. */ { - OstTraceFunctionEntry0( CACMPORT_GETSERVERCONFIG_ENTRY ); + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_GETSERVERCONFIG, "CAcmPort::GetServerConfig;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_GETSERVERCONFIG_EXIT ); + LOGTEXT(_L8("\t***access denied")); return KErrAccessDenied; } if ( aDes.Length() < static_cast(sizeof(TCommServerConfigV01)) ) { - OstTrace0( TRACE_NORMAL, CACMPORT_GETSERVERCONFIG_DUP1, "CAcmPort::GetServerConfig;\t***not supported" ); - OstTraceFunctionExit0( CACMPORT_GETSERVERCONFIG_EXIT_DUP1 ); + LOGTEXT(_L8("\t***not supported")); return KErrNotSupported; } @@ -673,7 +635,6 @@ TCommServerConfigV01& serverConfig = (*serverConfigPckg)(); serverConfig = iCommServerConfig; - OstTraceFunctionExit0( CACMPORT_GETSERVERCONFIG_EXIT_DUP2 ); return KErrNone; } @@ -685,12 +646,12 @@ * @return Error. */ { - OstTraceFunctionEntry0( CACMPORT_GETCAPS_ENTRY ); - + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_GETCAPS, "CAcmPort::GetCaps;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_GETCAPS_EXIT ); + LOGTEXT(_L8("\t***access denied")); return KErrAccessDenied; } @@ -720,15 +681,13 @@ break; default: { - OstTrace0( TRACE_NORMAL, CACMPORT_GETCAPS_DUP1, "CAcmPort::GetCaps;\t***bad argument" ); - OstTraceFunctionExit0( CACMPORT_GETCAPS_EXIT_DUP1 ); + LOGTEXT(_L8("\t***bad argument")); return KErrArgument; } } aDes.Copy(capsPckg.Left(aDes.Length())); - OstTraceFunctionExit0( CACMPORT_GETCAPS_EXIT_DUP2 ); return KErrNone; } @@ -740,18 +699,19 @@ * @return Error. */ { - OstTraceFunctionEntry0( CACMPORT_GETSIGNALS_ENTRY ); + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_GETSIGNALS, "CAcmPort::GetSignals;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_GETSIGNALS_EXIT ); + LOGTEXT(_L8("\t***access denied")); return KErrAccessDenied; } aSignals = ConvertSignals(iSignals); - OstTraceExt2( TRACE_NORMAL, CACMPORT_GETSIGNALS_DUP1, "CAcmPort::GetSignals;iSignals=%x;aSignals=%x", iSignals, (TUint32)aSignals ); - OstTraceFunctionExit0( CACMPORT_GETSIGNALS_EXIT_DUP1 ); + LOGTEXT3(_L8("iSignals=0x%x, aSignals=0x%x"), + iSignals, aSignals); return KErrNone; } @@ -763,11 +723,12 @@ * @return Error. */ { - OstTraceFunctionEntry0( CACMPORT_SETSIGNALSTOMARK_ENTRY ); + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_SETSIGNALSTOMARK, "CAcmPort::SetSignalsToMark;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_SETSIGNALSTOMARK_EXIT ); + LOGTEXT(_L8("\t***access denied")); return KErrAccessDenied; } @@ -775,13 +736,12 @@ TInt err = SetSignals(newSignals); if ( err ) { - OstTrace1( TRACE_NORMAL, CACMPORT_SETSIGNALSTOMARK_DUP1, "CAcmPort::SetSignalsToMark;***SetSignals = %d", err ); - OstTraceFunctionExit0( CACMPORT_SETSIGNALSTOMARK_EXIT_DUP1 ); + LOGTEXT2(_L8("***SetSignals = %d"), err); return err; } - OstTraceExt2( TRACE_NORMAL, CACMPORT_SETSIGNALSTOMARK_DUP2, "CAcmPort::SetSignalsToMark;iSignals=%x;aSignals=%x", iSignals, (TUint32)aSignals ); - OstTraceFunctionExit0( CACMPORT_SETSIGNALSTOMARK_EXIT_DUP2 ); + LOGTEXT3(_L8("iSignals=0x%x, aSignals=0x%x"), + iSignals, aSignals); return KErrNone; } @@ -793,11 +753,12 @@ * @return Error. */ { - OstTraceFunctionEntry0( CACMPORT_SETSIGNALSTOSPACE_ENTRY ); + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_SETSIGNALSTOSPACE, "CAcmPort::SetSignalsToSpace;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_SETSIGNALSTOSPACE_EXIT ); + LOGTEXT(_L8("\t***access denied")); return KErrAccessDenied; } @@ -805,13 +766,12 @@ TInt err = SetSignals(newSignals); if ( err ) { - OstTrace1( TRACE_NORMAL, CACMPORT_SETSIGNALSTOSPACE_DUP1, "CAcmPort::SetSignalsToSpace;***SetSignals = %d", err ); - OstTraceFunctionExit0( CACMPORT_SETSIGNALSTOSPACE_EXIT_DUP1 ); + LOGTEXT2(_L8("***SetSignals = %d"), err); return err; } - OstTraceExt2( TRACE_NORMAL, CACMPORT_SETSIGNALSTOSPACE_DUP2, "CAcmPort::SetSignalsToSpace;iSignals=%x;aSignals=%x", iSignals, (TUint32)aSignals ); - OstTraceFunctionExit0( CACMPORT_SETSIGNALSTOSPACE_EXIT_DUP2 ); + LOGTEXT3(_L8("iSignals=0x%x, aSignals=0x%x"), + iSignals, aSignals); return KErrNone; } @@ -825,24 +785,23 @@ * @return Error. */ { - OstTraceFunctionEntry0( CACMPORT_SETSIGNALS_ENTRY ); + LOG_FUNC TBool ring =((aNewSignals & KSignalRNG)==KSignalRNG); TBool dsr =((aNewSignals & KSignalDSR)==KSignalDSR); TBool dcd =((aNewSignals & KSignalDCD)==KSignalDCD); + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_SETSIGNALS, "CAcmPort::SetSignals;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_SETSIGNALS_EXIT ); + LOGTEXT(_L8("\t***access denied")); return KErrAccessDenied; } TInt err = iAcm->SendSerialState(ring,dsr,dcd); if ( err ) { - OstTrace1( TRACE_NORMAL, CACMPORT_SETSIGNALS_DUP1, "CAcmPort::SetSignals;\t***SendSerialState = %d- returning", err ); - OstTraceFunctionExit0( CACMPORT_SETSIGNALS_EXIT_DUP1 ); + LOGTEXT2(_L8("\t***SendSerialState = %d- returning"), err); return err; } @@ -872,7 +831,7 @@ } // Report correctly mapped signals that client asked for - OstTrace0( TRACE_NORMAL, CACMPORT_SETSIGNALS_DUP2, "CAcmPort::SetSignals;\tcalling SignalChangeCompleted with KErrNone" ); + LOGTEXT(_L8("\tcalling SignalChangeCompleted with KErrNone")); TUint32 signals = ConvertSignals ( changedSignalsMask | ( aNewSignals & iNotifySignalMask ) ); SignalChangeCompleted ( signals, KErrNone ); iNotifySignalChange = EFalse; @@ -881,7 +840,7 @@ // Store new signals in iSignals iSignals = aNewSignals; - OstTraceFunctionExit0( CACMPORT_SETSIGNALS_EXIT_DUP2 ); + return KErrNone; } @@ -900,9 +859,10 @@ * role. */ { - OstTraceFunctionEntry0( CACMPORT_CONVERTANDFILTERSIGNALS_ENTRY ); - + LOG_FUNC + TUint32 signals = 0; + // note that this never allows the client to use this method // to diddle the BREAK state @@ -934,7 +894,6 @@ | KSignalRNG); } - OstTraceFunctionExit0( CACMPORT_CONVERTANDFILTERSIGNALS_EXIT ); return signals; } @@ -957,8 +916,8 @@ * port is. */ { - OstTraceFunctionEntry0( CACMPORT_CONVERTSIGNALS_ENTRY ); - + LOG_FUNC + // Swap signals around if the client is expecting DTE signalling if ( iRole == ECommRoleDTE ) { @@ -1006,7 +965,6 @@ aSignals = ( aSignals & ~KSwapSignals ) | swappedSignals; } - OstTraceFunctionExit0( CACMPORT_CONVERTSIGNALS_EXIT ); return aSignals; } @@ -1021,23 +979,18 @@ * @return Error. */ { - OstTraceFunctionEntry0( CACMPORT_GETRECEIVEBUFFERLENGTH_ENTRY ); - + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_GETRECEIVEBUFFERLENGTH, "CAcmPort::GetReceiveBufferLength;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_GETRECEIVEBUFFERLENGTH_EXIT ); + LOGTEXT(_L8("\t***access denied")); return KErrAccessDenied; } - if (!iReader) - { - OstTraceExt1( TRACE_FATAL, CACMPORT_GETRECEIVEBUFFERLENGTH_DUP2, "CAcmPort::GetReceiveBufferLength;iReader=%p", iReader ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iReader, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); aLength = static_cast(iReader->BufSize()); - OstTrace1( TRACE_NORMAL, CACMPORT_GETRECEIVEBUFFERLENGTH_DUP1, "CAcmPort::GetReceiveBufferLength;aLength=%d", aLength ); - OstTraceFunctionExit0( CACMPORT_GETRECEIVEBUFFERLENGTH_EXIT_DUP1 ); + LOGTEXT2(_L8("\tlength=%d"), aLength); return KErrNone; } @@ -1050,14 +1003,10 @@ * @return Error. */ { - OstTraceFunctionEntry0( CACMPORT_DOSETBUFFERLENGTHS_ENTRY ); - OstTrace1( TRACE_NORMAL, CACMPORT_DOSETBUFFERLENGTHS, "CAcmPort::DoSetBufferLengths;aLength=%d", aLength ); + LOG_FUNC + LOGTEXT2(_L8("\taLength=%d"), aLength); - if (!iReader) - { - OstTraceExt1( TRACE_FATAL, CACMPORT_DOSETBUFFERLENGTHS_DUP5, "CAcmPort::DoSetBufferLengths;iReader=%p", iReader ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iReader, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); // Sart trying to resize buffers. Start with the reader. // Before we start though, set some stuff up we may need later (see // comments below). @@ -1068,8 +1017,8 @@ // If we can't allocate the dummy buffer, we can't guarantee that we // can roll back this API safely if it fails halfway through. So abort // the entire operation. - OstTrace0( TRACE_NORMAL, CACMPORT_DOSETBUFFERLENGTHS_DUP1, "CAcmPort::DoSetBufferLengths;\t***failed to allocate dummy buffer- returning KErrNoMemory" ); - OstTraceFunctionExit0( CACMPORT_DOSETBUFFERLENGTHS_EXIT ); + LOGTEXT(_L8("\t***failed to allocate dummy buffer- " + "returning KErrNoMemory")); return KErrNoMemory; } @@ -1080,17 +1029,12 @@ // (i.e. at its old size). This is a safe failure case- simply // clean up and return the error to the client. delete dummyBuffer; - OstTrace1( TRACE_NORMAL, CACMPORT_DOSETBUFFERLENGTHS_DUP2, "CAcmPort::DoSetBufferLengths;\t***SetBufSize on reader failed with %d", ret ); - OstTraceFunctionExit0( CACMPORT_DOSETBUFFERLENGTHS_EXIT_DUP1 ); + LOGTEXT2(_L8("\t***SetBufSize on reader failed with %d"), ret); return ret; } // OK, the Rx buffer has been resized, now for the Tx buffer... - if (!iWriter) - { - OstTraceExt1( TRACE_FATAL, CACMPORT_DOSETBUFFERLENGTHS_DUP6, "CAcmPort::DoSetBufferLengths;iWriter=%p", iWriter ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iWriter, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); ret = iWriter->SetBufSize(aLength); if ( ret ) { @@ -1099,25 +1043,20 @@ // buffer back to the old size. To make sure that this will work, free // the dummy buffer we initially allocated. delete dummyBuffer; - OstTrace1( TRACE_NORMAL, CACMPORT_DOSETBUFFERLENGTHS_DUP3, "CAcmPort::DoSetBufferLengths;\t***SetBufSize on writer failed with %d", ret ); + LOGTEXT2(_L8("\t***SetBufSize on writer failed with %d"), ret); TInt err = iReader->SetBufSize(oldSize); - if (err) - { - OstTrace1( TRACE_FATAL, CACMPORT_DOSETBUFFERLENGTHS_DUP7, "CAcmPort::DoSetBufferLengths;err=%d", err ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(!err, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); static_cast(err); // Now both buffers are at the size they started at, and the // request failed with error code 'ret'. - OstTraceFunctionExit0( CACMPORT_DOSETBUFFERLENGTHS_EXIT_DUP2 ); return ret; } // We seem to have successfully resized both buffers... clean up and // return. delete dummyBuffer; - OstTrace0( TRACE_NORMAL, CACMPORT_DOSETBUFFERLENGTHS_DUP4, "CAcmPort::DoSetBufferLengths;\treturning KErrNone" ); - OstTraceFunctionExit0( CACMPORT_DOSETBUFFERLENGTHS_EXIT_DUP3 ); + + LOGTEXT(_L8("\treturning KErrNone")); return KErrNone; } @@ -1131,18 +1070,19 @@ * @return Error. */ { - OstTraceFunctionEntry0( CACMPORT_SETRECEIVEBUFFERLENGTH_ENTRY ); - OstTrace1( TRACE_NORMAL, CACMPORT_SETRECEIVEBUFFERLENGTH, "CAcmPort::SetReceiveBufferLength;aLength=%d", aLength ); + LOG_LINE + LOG_FUNC + LOGTEXT2(_L8("\taLength=%d"), aLength); + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_SETRECEIVEBUFFERLENGTH_DUP1, "CAcmPort::SetReceiveBufferLength;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_SETRECEIVEBUFFERLENGTH_EXIT ); + LOGTEXT(_L8("\t***access denied")); return KErrAccessDenied; } TInt ret = DoSetBufferLengths(static_cast(aLength)); - OstTrace1( TRACE_NORMAL, CACMPORT_SETRECEIVEBUFFERLENGTH_DUP2, "CAcmPort::SetReceiveBufferLength;\tDoSetBufferLengths = return value = %d", ret ); - OstTraceFunctionExit0( CACMPORT_SETRECEIVEBUFFERLENGTH_EXIT_DUP1 ); + LOGTEXT2(_L8("\tDoSetBufferLengths=%d"), ret); + LOGTEXT2(_L8("\treturning %d"), ret); return ret; } @@ -1151,9 +1091,9 @@ * Downcall from C32. Destruct - we must (eventually) call delete this */ { - OstTraceFunctionEntry0( CACMPORT_DESTRUCT_ENTRY ); + LOG_FUNC + delete this; - OstTraceFunctionExit0( CACMPORT_DESTRUCT_EXIT ); } void CAcmPort::FreeMemory() @@ -1162,8 +1102,8 @@ * Implemented to do nothing. */ { - OstTraceFunctionEntry0( CACMPORT_FREEMEMORY_ENTRY ); - OstTraceFunctionExit0( CACMPORT_FREEMEMORY_EXIT ); + LOG_LINE + LOG_FUNC } void CAcmPort::NotifyDataAvailable() @@ -1171,22 +1111,18 @@ * Downcall from C32. Notify client when data is available. */ { - OstTraceFunctionEntry0( CACMPORT_NOTIFYDATAAVAILABLE_ENTRY ); + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_NOTIFYDATAAVAILABLE, "CAcmPort::NotifyDataAvailable;\t***access denied" ); + LOGTEXT(_L8("\t***access denied")); NotifyDataAvailableCompleted(KErrAccessDenied); - OstTraceFunctionExit0( CACMPORT_NOTIFYDATAAVAILABLE_EXIT ); return; } - - if (!iReader) - { - OstTraceExt1( TRACE_FATAL, CACMPORT_NOTIFYDATAAVAILABLE_DUP1, "CAcmPort::NotifyDataAvailable;iReader=%p", iReader ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iReader, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); + iReader->NotifyDataAvailable(); - OstTraceFunctionExit0( CACMPORT_NOTIFYDATAAVAILABLE_EXIT_DUP1 ); } void CAcmPort::NotifyDataAvailableCancel() @@ -1195,22 +1131,17 @@ * that C32 actually completes the client's request for us. */ { - OstTraceFunctionEntry0( CACMPORT_NOTIFYDATAAVAILABLECANCEL_ENTRY ); - + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_NOTIFYDATAAVAILABLECANCEL, "CAcmPort::NotifyDataAvailableCancel;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_NOTIFYDATAAVAILABLECANCEL_EXIT ); + LOGTEXT(_L8("\t***access denied")); return; } + __ASSERT_DEBUG(iReader, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); - if (!iReader) - { - OstTraceExt1( TRACE_FATAL, CACMPORT_NOTIFYDATAAVAILABLECANCEL_DUP1, "CAcmPort::NotifyDataAvailableCancel;iReader=%p", iReader ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } iReader->NotifyDataAvailableCancel(); - OstTraceFunctionExit0( CACMPORT_NOTIFYDATAAVAILABLECANCEL_EXIT_DUP1 ); } TInt CAcmPort::GetFlowControlStatus(TFlowControl& /*aFlowControl*/) @@ -1221,17 +1152,16 @@ * @return Error. */ { - OstTraceFunctionEntry0( CACMPORT_GETFLOWCONTROLSTATUS_ENTRY ); - + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_GETFLOWCONTROLSTATUS, "CAcmPort::GetFlowControlStatus;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_GETFLOWCONTROLSTATUS_EXIT ); + LOGTEXT(_L8("\t***access denied")); return KErrAccessDenied; } - OstTrace0( TRACE_NORMAL, CACMPORT_GETFLOWCONTROLSTATUS_DUP1, "CAcmPort::GetFlowControlStatus;\t***not supported" ); - OstTraceFunctionExit0( CACMPORT_GETFLOWCONTROLSTATUS_EXIT_DUP1 ); + LOGTEXT(_L8("\t***not supported")); return KErrNotSupported; } @@ -1243,19 +1173,18 @@ * it's not very useful. */ { - OstTraceFunctionEntry0( CACMPORT_NOTIFYOUTPUTEMPTY_ENTRY ); - + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_NOTIFYOUTPUTEMPTY, "CAcmPort::NotifyOutputEmpty;\t***access denied" ); + LOGTEXT(_L8("\t***access denied")); NotifyOutputEmptyCompleted(KErrAccessDenied); - OstTraceFunctionExit0( CACMPORT_NOTIFYOUTPUTEMPTY_EXIT ); return; } - OstTrace0( TRACE_NORMAL, CACMPORT_NOTIFYOUTPUTEMPTY_DUP1, "CAcmPort::NotifyOutputEmpty;\t***not supported" ); + LOGTEXT(_L8("\t***not supported")); NotifyOutputEmptyCompleted(KErrNotSupported); - OstTraceFunctionExit0( CACMPORT_NOTIFYOUTPUTEMPTY_EXIT_DUP1 ); } void CAcmPort::NotifyOutputEmptyCancel() @@ -1265,8 +1194,8 @@ * us. */ { - OstTraceFunctionEntry0( CACMPORT_NOTIFYOUTPUTEMPTYCANCEL_ENTRY ); - OstTraceFunctionExit0( CACMPORT_NOTIFYOUTPUTEMPTYCANCEL_EXIT ); + LOG_LINE + LOG_FUNC } void CAcmPort::NotifyBreak() @@ -1275,25 +1204,21 @@ * line. */ { - OstTraceFunctionEntry0( CACMPORT_NOTIFYBREAK_ENTRY ); - + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_NOTIFYBREAK, "CAcmPort::NotifyBreak;\t***access denied" ); + LOGTEXT(_L8("\t***access denied")); BreakNotifyCompleted(KErrAccessDenied); - OstTraceFunctionExit0( CACMPORT_NOTIFYBREAK_EXIT ); return; } // C32 protects us against this. - if (iNotifyBreak) - { - OstTrace1( TRACE_FATAL, CACMPORT_NOTIFYBREAK_DUP1, "CAcmPort::NotifyBreak;iNotifyBreak=%d", (TInt)iNotifyBreak ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(!iNotifyBreak, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iNotifyBreak = ETrue; - OstTraceFunctionExit0( CACMPORT_NOTIFYBREAK_EXIT_DUP1 ); } void CAcmPort::NotifyBreakCancel() @@ -1302,16 +1227,16 @@ * Note that C32 actually completes the client's request for us. */ { - OstTraceFunctionEntry0( CACMPORT_NOTIFYBREAKCANCEL_ENTRY ); + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_NOTIFYBREAKCANCEL, "CAcmPort::NotifyBreakCancel;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_NOTIFYBREAKCANCEL_EXIT ); + LOGTEXT(_L8("\t***access denied")); return; } iNotifyBreak = EFalse; - OstTraceFunctionExit0( CACMPORT_NOTIFYBREAKCANCEL_EXIT_DUP1 ); } void CAcmPort::BreakRequestCompleted() @@ -1322,17 +1247,17 @@ * This is implemented to complete the RComm client's Break request. */ { - OstTraceFunctionEntry0( CACMPORT_BREAKREQUESTCOMPLETED_ENTRY ); - + LOG_FUNC if ( !iCancellingBreak ) { - OstTrace0( TRACE_NORMAL, CACMPORT_BREAKREQUESTCOMPLETED, "CAcmPort::BreakRequestCompleted;\tcalling BreakCompleted with KErrNone" ); + LOGTEXT(_L8("\tcalling BreakCompleted with KErrNone")); BreakCompleted(KErrNone); } else { - OstTrace0( TRACE_NORMAL, CACMPORT_BREAKREQUESTCOMPLETED_DUP1, "CAcmPort::BreakRequestCompleted;\tbreak is being cancelled-letting C32 complete the request" ); + LOGTEXT(_L8("\tbreak is being cancelled- " + "letting C32 complete the request")); } // In the event of an RComm::BreakCancel, this function is called // sychronously with CAcmPort::BreakCancel, and C32 will complete the @@ -1340,7 +1265,6 @@ // only need to complete it if there isn't a cancel going on. iBreak = EFalse; iCancellingBreak = EFalse; - OstTraceFunctionExit0( CACMPORT_BREAKREQUESTCOMPLETED_EXIT ); } void CAcmPort::BreakStateChange() @@ -1353,7 +1277,8 @@ * NotifySignalChange requests, and complete NotifyBreak requests. */ { - OstTraceFunctionEntry0( CACMPORT_BREAKSTATECHANGE_ENTRY ); + LOG_FUNC + // TODO: what if no iAcm? // Take a copy of the current signal state for comparison later @@ -1363,12 +1288,12 @@ // it and apply the appropriate flag state to the local iSignals if ( iAcm && iAcm->BreakActive() ) { - OstTrace0( TRACE_NORMAL, CACMPORT_BREAKSTATECHANGE, "CAcmPort::BreakStateChange;\tbreak is active" ); + LOGTEXT(_L8("\tbreak is active")); iSignals |= KSignalBreak; } else { - OstTrace0( TRACE_NORMAL, CACMPORT_BREAKSTATECHANGE_DUP1, "CAcmPort::BreakStateChange;\tbreak is inactive" ); + LOGTEXT(_L8("\tbreak is inactive")); iSignals &= ~KSignalBreak; } @@ -1377,7 +1302,7 @@ // out of the break-active condition... if ( iNotifyBreak && !iBreak ) { - OstTrace0( TRACE_NORMAL, CACMPORT_BREAKSTATECHANGE_DUP2, "CAcmPort::BreakStateChange;\tcalling BreakNotifyCompleted with KErrNone" ); + LOGTEXT(_L8("\tcalling BreakNotifyCompleted with KErrNone")); BreakNotifyCompleted(KErrNone); iNotifyBreak = EFalse; } @@ -1388,12 +1313,11 @@ && ( ( iNotifySignalMask & ( iSignals ^ oldSignals ) ) != 0 ) ) { // Report correctly mapped signals that client asked for - OstTrace0( TRACE_NORMAL, CACMPORT_BREAKSTATECHANGE_DUP3, "CAcmPort::BreakStateChange;\tcalling SignalChangeCompleted with KErrNone" ); + LOGTEXT(_L8("\tcalling SignalChangeCompleted with KErrNone")); TUint32 signals = ConvertSignals ( KBreakChanged | ( iSignals & iNotifySignalMask ) ); SignalChangeCompleted( signals, KErrNone); iNotifySignalChange = EFalse; } - OstTraceFunctionExit0( CACMPORT_BREAKSTATECHANGE_EXIT ); } void CAcmPort::NotifyFlowControlChange() @@ -1402,19 +1326,18 @@ * Note that this is not supported. */ { - OstTraceFunctionEntry0( CACMPORT_NOTIFYFLOWCONTROLCHANGE_ENTRY ); - + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_NOTIFYFLOWCONTROLCHANGE, "CAcmPort::NotifyFlowControlChange;\t***access denied" ); + LOGTEXT(_L8("\t***access denied")); FlowControlChangeCompleted(EFlowControlOn, KErrAccessDenied); - OstTraceFunctionExit0( CACMPORT_NOTIFYFLOWCONTROLCHANGE_EXIT ); return; } - OstTrace0( TRACE_NORMAL, CACMPORT_NOTIFYFLOWCONTROLCHANGE_DUP1, "CAcmPort::NotifyFlowControlChange;\t***not supported" ); + LOGTEXT(_L8("\t***not supported")); FlowControlChangeCompleted(EFlowControlOn,KErrNotSupported); - OstTraceFunctionExit0( CACMPORT_NOTIFYFLOWCONTROLCHANGE_EXIT_DUP1 ); } void CAcmPort::NotifyFlowControlChangeCancel() @@ -1424,8 +1347,8 @@ * request for us. */ { - OstTraceFunctionEntry0( CACMPORT_NOTIFYFLOWCONTROLCHANGECANCEL_ENTRY ); - OstTraceFunctionExit0( CACMPORT_NOTIFYFLOWCONTROLCHANGECANCEL_EXIT ); + LOG_LINE + LOG_FUNC } void CAcmPort::NotifyConfigChange() @@ -1434,26 +1357,25 @@ * configuration. */ { - OstTraceFunctionEntry0( CACMPORT_NOTIFYCONFIGCHANGE_ENTRY ); - + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_NOTIFYCONFIGCHANGE, "CAcmPort::NotifyConfigChange;\t***access denied" ); + LOGTEXT(_L8("\t***access denied")); ConfigChangeCompleted(iCommNotificationDes, KErrAccessDenied); - OstTraceFunctionExit0( CACMPORT_NOTIFYCONFIGCHANGE_EXIT ); return; } if ( iNotifyConfigChange ) { - OstTrace0( TRACE_NORMAL, CACMPORT_NOTIFYCONFIGCHANGE_DUP1, "CAcmPort::NotifyConfigChange;\t***in use" ); + LOGTEXT(_L8("\t***in use")); ConfigChangeCompleted(iCommNotificationDes,KErrInUse); } else { iNotifyConfigChange = ETrue; } - OstTraceFunctionExit0( CACMPORT_NOTIFYCONFIGCHANGE_EXIT_DUP1 ); } void CAcmPort::NotifyConfigChangeCancel() @@ -1463,17 +1385,16 @@ * client's request for us. */ { - OstTraceFunctionEntry0( CACMPORT_NOTIFYCONFIGCHANGECANCEL_ENTRY ); - + LOG_LINE + LOG_FUNC + if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_NOTIFYCONFIGCHANGECANCEL, "CAcmPort::NotifyConfigChangeCancel;\t***access denied" ); - OstTraceFunctionExit0( CACMPORT_NOTIFYCONFIGCHANGECANCEL_EXIT ); + LOGTEXT(_L8("\t***access denied")); return; } iNotifyConfigChange = EFalse; - OstTraceFunctionExit0( CACMPORT_NOTIFYCONFIGCHANGECANCEL_EXIT_DUP1 ); } void CAcmPort::HostConfigChange(const TCommConfigV01& aConfig) @@ -1483,7 +1404,8 @@ * @param aConfig New configuration data. */ { - OstTraceFunctionEntry0( CACMPORT_HOSTCONFIGCHANGE_ENTRY ); + LOG_FUNC + HandleConfigNotification(aConfig.iRate, aConfig.iDataBits, aConfig.iParity, @@ -1493,7 +1415,6 @@ iCommConfig.iDataBits = aConfig.iDataBits; iCommConfig.iParity = aConfig.iParity; iCommConfig.iStopBits = aConfig.iStopBits; - OstTraceFunctionExit0( CACMPORT_HOSTCONFIGCHANGE_EXIT ); } void CAcmPort::NotifySignalChange(TUint aSignalMask) @@ -1501,18 +1422,20 @@ * Downcall from C32. Notify a client of a change to the signal lines. */ { - OstTraceFunctionEntry0( CACMPORT_NOTIFYSIGNALCHANGE_ENTRY ); - OstTrace1( TRACE_NORMAL, CACMPORT_NOTIFYSIGNALCHANGE, "CAcmPort::NotifySignalChange;>>CAcmPort::NotifySignalChange aSignalMask=0x%08x", aSignalMask ); + LOG_LINE + LOGTEXT2(_L8(">>CAcmPort::NotifySignalChange aSignalMask=0x%08x"), + aSignalMask); + if ( iNotifySignalChange ) { if ( !iAcm ) { - OstTrace0( TRACE_NORMAL, CACMPORT_NOTIFYSIGNALCHANGE_DUP1, "CAcmPort::NotifySignalChange;\t***access denied" ); + LOGTEXT(_L8("\t***access denied")); SignalChangeCompleted(0, KErrAccessDenied); } else { - OstTrace0( TRACE_NORMAL, CACMPORT_NOTIFYSIGNALCHANGE_DUP2, "CAcmPort::NotifySignalChange;\t***in use" ); + LOGTEXT(_L8("\t***in use")); SignalChangeCompleted(0, KErrInUse); } } @@ -1524,8 +1447,7 @@ iNotifySignalMask = ConvertSignals(aSignalMask); } - OstTrace0( TRACE_NORMAL, CACMPORT_NOTIFYSIGNALCHANGE_DUP3, "CAcmPort::NotifySignalChange;<>CAcmPort::HostSignalChange aDtr=%d, aRts=%d", aDtr, aRts ); - + LOGTEXT3(_L8(">>CAcmPort::HostSignalChange aDtr=%d, aRts=%d"), aDtr, aRts); + // Take a copy of the current signal state for comparison later TUint32 oldSignals = iSignals; @@ -1586,7 +1506,8 @@ { // Create bitfield of changed signals that client is interested in TUint32 changedSignals = ( iSignals ^ oldSignals ) & iNotifySignalMask; - OstTraceExt4( TRACE_NORMAL, CACMPORT_HOSTSIGNALCHANGE_DUP1, "CAcmPort::HostSignalChange;iSignals=%x;oldSignals=%x;changedSignals=%x;iNotifySignalMask=%x", iSignals, oldSignals, changedSignals, (TUint32)iNotifySignalMask ); + LOGTEXT5(_L8("\tiSignals=%x, oldSignals=%x, changedSignals=%x, iNotifySignalMask=%x") + ,iSignals, oldSignals, changedSignals, iNotifySignalMask); if ( changedSignals != 0 ) { // Mark which signals have changed @@ -1599,18 +1520,17 @@ { changedSignalsMask |= KRTSChanged; } - - OstTrace1( TRACE_NORMAL, CACMPORT_HOSTSIGNALCHANGE_DUP2, "CAcmPort::HostSignalChange;changedSignalsMask=%x", changedSignalsMask ); + LOGTEXT2(_L8("\tchangedSignalsMask=%x"), changedSignalsMask); + // Report correctly mapped signals that client asked for TUint32 signals = ConvertSignals ( changedSignalsMask | ( iSignals & iNotifySignalMask ) ); - OstTrace1( TRACE_NORMAL, CACMPORT_HOSTSIGNALCHANGE_DUP3, "CAcmPort::HostSignalChange;signals=%x", signals ); + LOGTEXT2(_L8("\tcalling SignalChangeCompleted with KErrNone, signals=%x"), signals); SignalChangeCompleted( signals, KErrNone); iNotifySignalChange = EFalse; } } - OstTrace0( TRACE_NORMAL, CACMPORT_HOSTSIGNALCHANGE_DUP4, "CAcmPort::HostSignalChange;<>CAcmPort::SetRole aRole=%d", aRole ); + LOG_LINE + LOGTEXT2(_L8(">>CAcmPort::SetRole aRole=%d"), aRole); + TInt ret = KErrNone; - if ( !iAcm ) { ret = KErrAccessDenied; @@ -1657,8 +1576,7 @@ iRole = aRole; } - OstTrace1( TRACE_NORMAL, CACMPORT_SETROLE_DUP1, "CAcmPort::SetRole;<>CAcmPort::SetAcm aAcm = 0x%08x", aAcm ); - OstTrace1( TRACE_NORMAL, CACMPORT_SETACM_DUP3, "CAcmPort::SetAcm;iAcm=0x%08x", iAcm ); - + LOGTEXT3(_L8(">>CAcmPort::SetAcm aAcm = 0x%08x, iAcm = 0x%08x"), aAcm, iAcm); if ( !aAcm ) { // Cancel any outstanding operations on the reader and writer. - if (!iReader) - { - OstTraceExt1( TRACE_FATAL, CACMPORT_SETACM_DUP4, "CAcmPort::SetAcm;iReader=%p", iReader ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iReader, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iReader->ReadCancel(); - if (!iWriter) - { - OstTraceExt1( TRACE_FATAL, CACMPORT_SETACM_DUP5, "CAcmPort::SetAcm;iWriter=%p", iWriter ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iWriter, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iWriter->WriteCancel(); // Complete any outstanding requests - OstTrace0( TRACE_NORMAL, CACMPORT_SETACM_DUP1, "CAcmPort::SetAcm;\tcompleting outstanding requests with KErrAccessDenied" ); + LOGTEXT(_L8("\tcompleting outstanding requests with KErrAccessDenied")); SignalChangeCompleted(iSignals,KErrAccessDenied); ReadCompleted(KErrAccessDenied); WriteCompleted(KErrAccessDenied); @@ -1710,19 +1617,15 @@ } else { - if (iAcm) - { - OstTraceExt1( TRACE_FATAL, CACMPORT_SETACM_DUP6, "CAcmPort::SetAcm;iAcm=%p", iAcm ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(!iAcm, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); aAcm->SetCallback(this); // Set the port as the observer of break events. aAcm->SetBreakCallback(this); } iAcm = aAcm; - OstTrace0( TRACE_NORMAL, CACMPORT_SETACM_DUP2, "CAcmPort::SetAcm;<SetCallback(NULL); } - OstTrace0( TRACE_NORMAL, CACMPORT_CACMPORT_DESTRUCTRURE_DUP1, "CAcmPort::~CAcmPort;\tcalling AcmPortClosed on observer" ); + LOGTEXT(_L8("\tcalling AcmPortClosed on observer")); iObserver.AcmPortClosed(iUnit); - OstTraceFunctionExit0( CACMPORT_CACMPORT_DESTRUCTRURE_EXIT ); } // diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/AcmPortFactory.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/AcmPortFactory.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/AcmPortFactory.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -15,20 +15,20 @@ * */ -#include #include "AcmPortFactory.h" #include "AcmUtils.h" +#include #include "AcmPort.h" #include "AcmPanic.h" #include "acmserver.h" #include "CdcAcmClass.h" +#include #include "c32comm_internal.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "AcmPortFactoryTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif - // Do not move this into a header file. It must be kept private to the CSY. It // is the secret information that enables the old (registration port) // mechanism allowing the USB Manager to set up ACM interfaces. @@ -41,12 +41,12 @@ * @return Ownership of a newly created CAcmPortFactory object */ { - OstTraceFunctionEntry0( CACMPORTFACTORY_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY + CAcmPortFactory* self = new(ELeave) CAcmPortFactory; CleanupClosePushL(*self); self->ConstructL(); CleanupStack::Pop(); - OstTraceFunctionExit0( CACMPORTFACTORY_NEWL_EXIT ); return self; } @@ -55,14 +55,12 @@ * Constructor. */ { - OstTraceFunctionEntry0( CACMPORTFACTORY_CACMPORTFACTORY_ENTRY ); iVersion = TVersion( KEC32MajorVersionNumber, KEC32MinorVersionNumber, KEC32BuildVersionNumber); iConfigBuf().iAcmConfigVersion = 1; iOwned = EFalse; - OstTraceFunctionExit0( CACMPORTFACTORY_CACMPORTFACTORY_EXIT ); } void CAcmPortFactory::ConstructL() @@ -70,58 +68,29 @@ * Second phase constructor. */ { - OstTraceFunctionEntry0( CACMPORTFACTORY_CONSTRUCTL_ENTRY ); - TInt aReason = SetName(&KAcmSerialName); - if (aReason < 0) - { - OstTrace1( TRACE_NORMAL, CACMPORTFACTORY_CONSTRUCTL, "CAcmPortFactory::ConstructL;aReason=%d", aReason ); - User::Leave(aReason); - } - + LEAVEIFERRORL(SetName(&KAcmSerialName)); iAcmServer = CAcmServer::NewL(*this); TInt err = RProperty::Define(KUidSystemCategory, KAcmKey, RProperty::EByteArray, TPublishedAcmConfigs::KAcmMaxFunctions); if(err == KErrAlreadyExists) { - aReason = iAcmProperty.Attach(KUidSystemCategory, KAcmKey, EOwnerThread); - if (aReason < 0) - { - OstTrace1( TRACE_NORMAL, CACMPORTFACTORY_CONSTRUCTL_DUP1, "CAcmPortFactory::ConstructL;aReason=%d", aReason ); - User::Leave(aReason); - } - + LEAVEIFERRORL(iAcmProperty.Attach(KUidSystemCategory, KAcmKey, EOwnerThread)); //Since the P&S data already exists we need to retrieve it - aReason = iAcmProperty.Get(iConfigBuf); - if (aReason < 0) - { - OstTrace1( TRACE_NORMAL, CACMPORTFACTORY_CONSTRUCTL_DUP2, "CAcmPortFactory::ConstructL;aReason=%d", aReason ); - User::Leave(aReason); - } + LEAVEIFERRORL(iAcmProperty.Get(iConfigBuf)); } else if(err == KErrNone) { //A blank iConfigBuf already exists at this point to we don't need to do anything to it //before publishing the P&S data - aReason = iAcmProperty.Attach(KUidSystemCategory, KAcmKey, EOwnerThread); - if (aReason < 0) - { - OstTrace1( TRACE_NORMAL, CACMPORTFACTORY_CONSTRUCTL_DUP3, "CAcmPortFactory::ConstructL;aReason=%d", aReason ); - User::Leave(aReason); - } + LEAVEIFERRORL(iAcmProperty.Attach(KUidSystemCategory, KAcmKey, EOwnerThread)); PublishAcmConfig(); iOwned = ETrue; } else { - if (err < 0) - { - OstTrace1( TRACE_NORMAL, CACMPORTFACTORY_CONSTRUCTL_DUP4, "CAcmPortFactory::ConstructL;err=%d", err ); - User::Leave(err); - } - //Here will always leave, but a log will be created at least. + LEAVEIFERRORL(err); //This will always leave, but a log will be created at least. } - OstTraceFunctionExit0( CACMPORTFACTORY_CONSTRUCTL_EXIT ); } /** @@ -132,14 +101,7 @@ { // Update the publish and subscribe info TInt err = iAcmProperty.Set(iConfigBuf); - if (err != KErrNone) - { - OstTraceExt3( TRACE_NORMAL, CACMPORTFACTORY_PUBLISHACMCONFIG, - "CAcmPortFactory::PublishAcmConfig;code=%d;name=%S;line = %d", - (TInt)EPanicInternalError, KAcmPanicCat, (TInt)__LINE__); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } - + __ASSERT_DEBUG(err == KErrNone, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); (void)err; } @@ -153,7 +115,8 @@ */ //return the security policy for the given port number, aPort. { - OstTraceFunctionEntry0( CACMPORTFACTORY_PORTPLATSECCAPABILITY_ENTRY ); + LOG_FUNC + TSecurityPolicy securityPolicy; if ( aPort == KRegistrationPortUnit ) { @@ -163,7 +126,6 @@ { securityPolicy = TSecurityPolicy(ECapabilityLocalServices); } - OstTraceFunctionExit0( CACMPORTFACTORY_PORTPLATSECCAPABILITY_EXIT ); return securityPolicy; } @@ -174,8 +136,9 @@ * @param aUnit The port number of the closing port. */ { - OstTraceFunctionEntry0( CACMPORTFACTORY_ACMPORTCLOSED_ENTRY ); - OstTrace1( TRACE_NORMAL, CACMPORTFACTORY_ACMPORTCLOSED, "CAcmPortFactory::AcmPortClosed;aUnit=%d", aUnit ); + LOG_FUNC + LOGTEXT2(_L8("\taUnit = %d"), aUnit); + // I would assert that the calling port is stored in our array, but if we // ran out of memory during CAcmPort::NewL, this function would be called // from the port's destructor, but the slot in the port array would still @@ -188,7 +151,6 @@ #ifdef _DEBUG LogPortsAndFunctions(); #endif - OstTraceFunctionExit0( CACMPORTFACTORY_ACMPORTCLOSED_EXIT ); } CAcmPortFactory::~CAcmPortFactory() @@ -196,7 +158,8 @@ * Destructor. */ { - OstTraceFunctionEntry0( DUP1_CACMPORTFACTORY_CACMPORTFACTORY_ENTRY ); + LOG_FUNC + // Delete ACM instances. We could assert that the ACM Class Controller has // caused them all to be destroyed, but if we do that, and USBSVR panics // while it's Started, it will result in C32 panicking too, which is @@ -217,7 +180,6 @@ } delete iAcmServer; - OstTraceFunctionExit0( DUP1_CACMPORTFACTORY_CACMPORTFACTORY_EXIT ); } CPort* CAcmPortFactory::NewPortL(const TUint aUnit) @@ -227,9 +189,11 @@ * @param aUnit Port unit number */ { - OstTraceFunctionEntry0( CACMPORTFACTORY_NEWPORTL_ENTRY ); - OstTrace1( TRACE_NORMAL, CACMPORTFACTORY_NEWPORTL, "CAcmPortFactory::NewPortL;aUnit=%d", aUnit ); + LOG_LINE + LOGTEXT2(_L8(">>CAcmPortFactory::NewPortL aUnit=%d"), aUnit); + CPort* port = NULL; + TUint lowerLimit = KAcmLowUnit; // This non-const TUint avoids compiler remarks (low-level warnings) for the following comparisons.. // ACM ports if ( (aUnit >= lowerLimit) && aUnit < static_cast( iAcmClassArray.Count()) + KAcmLowUnit) @@ -240,12 +204,7 @@ const TUint index = aUnit - KAcmLowUnit; if ( iAcmPortArray[index] ) { - if (KErrInUse < 0) - { - OstTrace1( TRACE_ERROR, CACMPORTFACTORY_NEWPORTL_DUP2, "CAcmPortFactory::NewPortL;KErrInUse=%d", KErrInUse ); - User::Leave(KErrInUse); - } - // TODO: is this ever executed? + LEAVEIFERRORL(KErrInUse); // TODO: is this ever executed? } iAcmPortArray[index] = CAcmPort::NewL(aUnit, *this); iAcmPortArray[index]->SetAcm( iAcmClassArray[index]); @@ -258,18 +217,14 @@ } else { - if (KErrAccessDenied < 0) - { - OstTrace1( TRACE_ERROR, CACMPORTFACTORY_NEWPORTL_DUP3, "CAcmPortFactory::NewPortL;KErrAccessDenied=%d", KErrAccessDenied ); - User::Leave(KErrAccessDenied); - } + LEAVEIFERRORL(KErrAccessDenied); } #ifdef _DEBUG LogPortsAndFunctions(); #endif - OstTrace1( TRACE_NORMAL, CACMPORTFACTORY_NEWPORTL_DUP1, "CAcmPortFactory::NewPortL;port=0x%08x", port ); - OstTraceFunctionExit0( CACMPORTFACTORY_NEWPORTL_EXIT ); + + LOGTEXT2(_L8("<>CAcmPortFactory::DestroyFunctions aNoAcms = %d"), aNoAcms); + #ifdef _DEBUG CheckAcmArray(); #endif @@ -315,8 +270,8 @@ CheckAcmArray(); LogPortsAndFunctions(); #endif - OstTrace0( TRACE_NORMAL, CACMPORTFACTORY_DESTROYFUNCTIONS_DUP1, "CAcmPortFactory::DestroyFunctions;<( iAcmClassArray.Count()) ; ii++ ) { - if (!iAcmClassArray[ii]) - { - OstTraceExt2( TRACE_NORMAL, CACMPORTFACTORY_CHECKACMARRAY, "CAcmPortFactory::CheckAcmArray;code=%d;name=%S", (TInt)EPanicInternalError, KAcmPanicCat); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG( iAcmClassArray[ii], _USB_PANIC(KAcmPanicCat, EPanicInternalError)); } - OstTraceFunctionExit0( CACMPORTFACTORY_CHECKACMARRAY_EXIT ); } TInt CAcmPortFactory::CreateFunctions(const TUint aNoAcms, const TUint8 aProtocolNum, const TDesC16& aAcmControlIfcName, const TDesC16& aAcmDataIfcName) @@ -347,8 +298,8 @@ * @param aAcmDataIfcName Data Interface Name or a null descriptor */ { - OstTraceFunctionEntry0( CACMPORTFACTORY_CREATEFUNCTIONS_ENTRY ); - OstTraceExt4( TRACE_NORMAL, CACMPORTFACTORY_CREATEFUNCTIONS, "CAcmPortFactory::CreateFunctions;aNoAcms=%d;aProtocolNum=%d;aAcmControlIfcName=%S;aAcmDataIfcName=%S", (TInt)aNoAcms, (TInt)aProtocolNum, aAcmControlIfcName, aAcmDataIfcName ); + LOGTEXT5(_L("\taNoAcms = %d, aProtocolNum = %d, Control Ifc Name = %S, Data Ifc Name = %S"), + aNoAcms, aProtocolNum, &aAcmControlIfcName, &aAcmDataIfcName); #ifdef _DEBUG CheckAcmArray(); @@ -359,7 +310,7 @@ // Create the ACM class instances. for ( TUint ii = 0 ; ii < aNoAcms ; ii++ ) { - OstTrace1( TRACE_NORMAL, CACMPORTFACTORY_CREATEFUNCTIONS_DUP1, "CAcmPortFactory::CreateFunctions;\tabout to create ACM instance %d", ii ); + LOGTEXT2(_L8("\tabout to create ACM instance %d"), ii); TRAP(ret, CreateFunctionL(aProtocolNum, aAcmControlIfcName, aAcmDataIfcName)); if ( ret != KErrNone ) { @@ -377,8 +328,7 @@ LogPortsAndFunctions(); #endif - OstTrace1( TRACE_NORMAL, CACMPORTFACTORY_CREATEFUNCTIONS_DUP2, "CAcmPortFactory::CreateFunctions;ret=%d", ret ); - OstTraceFunctionExit0( CACMPORTFACTORY_CREATEFUNCTIONS_EXIT ); + LOGTEXT2(_L8("<SetAcm(acm); } @@ -439,7 +373,6 @@ iConfigBuf().iAcmCount++; //don't update the p&s data here, do it in CreateFunctions after the construction of //all the requested functions - OstTraceFunctionExit0( CACMPORTFACTORY_CREATEFUNCTIONL_EXIT ); } void CAcmPortFactory::Info(TSerialInfo& aSerialInfo) @@ -449,17 +382,16 @@ * @param aSerialInfo where info will be written to */ { - OstTraceFunctionEntry0( CACMPORTFACTORY_INFO_ENTRY ); // NB Our TSerialInfo does not advertise the existence of the registration // port. - + LOG_FUNC + _LIT(KSerialDescription, "USB Serial Port Emulation via ACM"); aSerialInfo.iDescription = KSerialDescription; aSerialInfo.iName = KAcmSerialName; aSerialInfo.iLowUnit = KAcmLowUnit; aSerialInfo.iHighUnit = (iAcmPortArray.Count()==0) ? 0 : (iAcmPortArray.Count()-1); // See comments in AcmInterface.h - OstTraceFunctionExit0( CACMPORTFACTORY_INFO_EXIT ); } void CAcmPortFactory::LogPortsAndFunctions() @@ -479,24 +411,18 @@ * port open/closed history of the CSY. */ { - OstTraceFunctionEntry0( CACMPORTFACTORY_LOGPORTSANDFUNCTIONS_ENTRY ); TUint ii; // Log ACM functions and corresponding ports. for ( ii = 0 ; ii < static_cast( iAcmClassArray.Count()) ; ii++ ) { - OstTraceExt4( TRACE_NORMAL, CACMPORTFACTORY_LOGPORTSANDFUNCTIONS, - "CAcmPortFactory::LogPortsAndFunctions;\t iAcmClassArray[%d] = %p, iAcmPortArray[%d] = %p", - (TInt)ii, iAcmClassArray[ii], (TInt)ii, iAcmPortArray[ii] ); + LOGTEXT5(_L8("\t iAcmClassArray[%d] = 0x%08x, iAcmPortArray[%d] = 0x%08x"), ii, iAcmClassArray[ii], ii, iAcmPortArray[ii]); } // Log any ports extending beyond where we currently have ACM interfaces. for ( ; ii < static_cast(iAcmPortArray.Count()) ; ii++ ) { - OstTraceExt3( TRACE_NORMAL, CACMPORTFACTORY_LOGPORTSANDFUNCTIONS_DUP1, - "CAcmPortFactory::LogPortsAndFunctions;\t iAcmClassArray[%d] = , iAcmPortArray[%d] = %p", - (TInt)ii, (TInt)ii, iAcmPortArray[ii] ); + LOGTEXT4(_L8("\t iAcmClassArray[%d] = , iAcmPortArray[%d] = 0x%08x"), ii, ii, iAcmPortArray[ii]); } - OstTraceFunctionExit0( CACMPORTFACTORY_LOGPORTSANDFUNCTIONS_EXIT ); } // diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/AcmReader.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/AcmReader.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/AcmReader.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2003-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" @@ -23,12 +23,12 @@ #include "CdcAcmClass.h" #include "AcmPanic.h" #include "AcmPort.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "AcmReaderTraces.h" +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif - CAcmReader* CAcmReader::NewL(CAcmPort& aPort, TUint aBufSize) /** @@ -39,12 +39,12 @@ * @return Ownership of a new CAcmReader. */ { - OstTraceFunctionEntry0( CACMREADER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY + CAcmReader* self = new(ELeave) CAcmReader(aPort, aBufSize); CleanupStack::PushL(self); self->ConstructL(); CLEANUPSTACK_POP(self); - OstTraceFunctionExit0( CACMREADER_NEWL_EXIT ); return self; } @@ -53,10 +53,11 @@ * Destructor. */ { - OstTraceFunctionEntry0( CACMREADER_CACMREADER_DES_ENTRY ); + LOG_FUNC + ReadCancel(); + delete iBuffer; - OstTraceFunctionExit0( CACMREADER_CACMREADER_DES_EXIT ); } CAcmReader::CAcmReader(CAcmPort& aPort, @@ -71,8 +72,6 @@ iInBuf(NULL,0,0), iPort(aPort) { - OstTraceFunctionEntry0( CACMREADER_CACMREADER_CONS_ENTRY ); - OstTraceFunctionExit0( CACMREADER_CACMREADER_CONS_EXIT ); } void CAcmReader::ConstructL() @@ -80,16 +79,9 @@ * 2nd-phase construction. */ { - OstTraceFunctionEntry0( CACMREADER_CONSTRUCTL_ENTRY ); // Create iBuffer. - OstTrace0( TRACE_NORMAL, CACMREADER_CONSTRUCTL, "CAcmReader::ConstructL;\tabout to create iBuffer" ); - TInt err = SetBufSize(iBufSize); - if (err < 0) - { - OstTrace1( TRACE_ERROR, CACMREADER_CONSTRUCTL_DUP1, "CAcmReader::ConstructL;err=%d", err ); - User::Leave(err); - } - OstTraceFunctionExit0( CACMREADER_CONSTRUCTL_EXIT ); + LOGTEXT(_L8("\tabout to create iBuffer")); + LEAVEIFERRORL(SetBufSize(iBufSize)); } void CAcmReader::Read(const TAny* aClientBuffer, TUint aMaxLen) @@ -100,8 +92,9 @@ * @param aMaxLen Maximum length to read. */ { - OstTraceFunctionEntry0( CACMREADER_READ_ENTRY ); - OstTraceExt2( TRACE_NORMAL, CACMREADER_READ, "CAcmReader::Read;\taClientBuffer=%p, aMaxLen=%d", aClientBuffer, (TInt)aMaxLen ); + LOG_FUNC + LOGTEXT3(_L8("\taClientBuffer=0x%08x, aMaxLen=%d"), + aClientBuffer, aMaxLen); // Check we're open to requests and make a note of interesting data. // including iLengthToGo @@ -119,7 +112,6 @@ { ReadWithTerminators(); } - OstTraceFunctionExit0( CACMREADER_READ_EXIT ); } void CAcmReader::ReadWithoutTerminators() @@ -127,22 +119,18 @@ * Process a read request given that no terminator characters are set. */ { - OstTraceFunctionEntry0( CACMREADER_READWITHOUTTERMINATORS_ENTRY ); + LOG_FUNC + // Can we complete immediately from the buffer? const TUint bufLen = BufLen(); - OstTraceExt2( TRACE_NORMAL, CACMREADER_READWITHOUTTERMINATORS, - "CAcmReader::ReadWithoutTerminators;\thave %d bytes in buffer;\tLength to go is %d bytes", - (TInt)bufLen, (TInt)iLengthToGo ); + LOGTEXT2(_L8("\thave %d bytes in buffer"), bufLen); + LOGTEXT2(_L8("\tLength to go is %d bytes"), iLengthToGo); if ( iLengthToGo <= bufLen ) { - OstTrace1( TRACE_NORMAL, CACMREADER_READWITHOUTTERMINATORS_DUP1, - "CAcmReader::ReadWithoutTerminators;\tcompleting " - "request immediately from buffer with %d bytes", - (TInt)iLengthToGo ); - + LOGTEXT2(_L8("\tcompleting request immediately from buffer with %d " + "bytes"), iLengthToGo); WriteBackData(iLengthToGo); CompleteRequest(KErrNone); - OstTraceFunctionExit0( CACMREADER_READWITHOUTTERMINATORS_EXIT ); return; } @@ -150,17 +138,14 @@ // back as much as we have, and issue a Read for more. if ( bufLen ) { - OstTrace1( TRACE_NORMAL, CACMREADER_READWITHOUTTERMINATORS_DUP2, - "CAcmReader::ReadWithoutTerminators;\twriting back %d bytes", (TInt)bufLen ); + LOGTEXT2(_L8("\twriting back %d bytes"), bufLen); // Write back as much data as we've got already. WriteBackData(bufLen); } // Issue a read for the data we still need. - OstTrace1( TRACE_NORMAL, CACMREADER_READWITHOUTTERMINATORS_DUP3, - "CAcmReader::ReadWithoutTerminators;iLengthToGo=%d", (TInt)iLengthToGo ); + LOGTEXT2(_L8("\tRequesting read - require %d bytes"),iLengthToGo); IssueRead(); - OstTraceFunctionExit0( CACMREADER_READWITHOUTTERMINATORS_EXIT_DUP1 ); } void CAcmReader::ReadWithTerminators() @@ -168,24 +153,23 @@ * Process a read request given that terminator characters are set. */ { - OstTraceFunctionEntry0( CACMREADER_READWITHTERMINATORS_ENTRY ); + LOG_FUNC + // Can we complete immediately from the buffer? Search the buffer we have // for any terminators. If found, complete back to the client. If not // found, start issuing ReadOneOrMores until we either find one or run out // of client buffer. const TUint bufLen = BufLen(); - OstTrace1( TRACE_NORMAL, CACMREADER_READWITHTERMINATORS, "CAcmReader::ReadWithTerminators;bufLen=%d", (TInt)bufLen ); + LOGTEXT2(_L8("\tbufLen = %d"), bufLen); if ( bufLen ) { CheckForBufferedTerminatorsAndProceed(); - OstTraceFunctionExit0( CACMREADER_READWITHTERMINATORS_EXIT ); return; } // There's no buffered data. Get some. IssueReadOneOrMore(); - OstTraceFunctionExit0( CACMREADER_READWITHTERMINATORS_EXIT_DUP1 ); } void CAcmReader::ReadOneOrMore(const TAny* aClientBuffer, TUint aMaxLen) @@ -197,31 +181,31 @@ * @param aMaxLen Maximum length to read. */ { - OstTraceFunctionEntry0( CACMREADER_READONEORMORE_ENTRY ); - OstTraceExt2( TRACE_NORMAL, CACMREADER_READONEORMORE, - "CAcmReader::ReadOneOrMore;aClientBuffer=%p;aMaxLen=%d", aClientBuffer, (TInt)aMaxLen ); + LOG_FUNC + LOGTEXT3(_L8("\taClientBuffer=0x%08x, aMaxLen=%d"), + aClientBuffer, aMaxLen); + // Check we're open to requests and make a note of interesting data. CheckNewRequest(aClientBuffer, aMaxLen); + iCurrentRequest.iRequestType = EReadOneOrMore; - + // Check to see if there's anything in our buffer- if there is, we can // complete immediately. const TUint bufLen = BufLen(); - OstTrace1( TRACE_NORMAL, CACMREADER_READONEORMORE_DUP1, "CAcmReader::ReadOneOrMore;bufLen=%d", (TInt)bufLen ); + LOGTEXT2(_L8("\tbufLen = %d"), bufLen); if ( bufLen ) { // Complete request with what's in the buffer - OstTrace1( TRACE_FLOW, CACMREADER_READONEORMORE_DUP2, - "CAcmReader::ReadOneOrMore;\tcompleting request immediately from buffer with %d bytes", (TInt)bufLen ); + LOGTEXT2(_L8("\tcompleting request immediately from buffer with %d " + "bytes"), bufLen); WriteBackData(bufLen); CompleteRequest(KErrNone); - OstTraceFunctionExit0( CACMREADER_READONEORMORE_EXIT ); return; } // Get some more data. IssueReadOneOrMore(); - OstTraceFunctionExit0( CACMREADER_READONEORMORE_EXIT_DUP1 ); } void CAcmReader::NotifyDataAvailable() @@ -229,17 +213,15 @@ * NotifyDataAvailable API. If a request is pending completes the client with KErrInUse. */ { - OstTraceFunctionEntry0( CACMREADER_NOTIFYDATAAVAILABLE_ENTRY ); + LOG_FUNC if(iCurrentRequest.iClientPtr) // a request is pending { iPort.NotifyDataAvailableCompleted(KErrInUse); - OstTraceFunctionExit0( CACMREADER_NOTIFYDATAAVAILABLE_EXIT ); return; } iCurrentRequest.iClientPtr = iBuffer; iCurrentRequest.iRequestType = ENotifyDataAvailable; iPort.Acm()->NotifyDataAvailable(*this); - OstTraceFunctionExit0( CACMREADER_NOTIFYDATAAVAILABLE_EXIT_DUP1 ); } void CAcmReader::NotifyDataAvailableCancel() @@ -248,21 +230,19 @@ * */ { - OstTraceFunctionEntry0( CACMREADER_NOTIFYDATAAVAILABLECANCEL_ENTRY ); + LOG_FUNC if (ENotifyDataAvailable == iCurrentRequest.iRequestType) { // Cancel any outstanding request on the LDD. if (iPort.Acm()) { - OstTrace0( TRACE_NORMAL, CACMREADER_NOTIFYDATAAVAILABLECANCEL, - "CAcmReader::NotifyDataAvailableCancel;\tiPort.Acm() exists- calling NotifyDataAvailableCancel() on it" ); + LOGTEXT(_L8("\tiPort.Acm() exists- calling NotifyDataAvailableCancel() on it")); iPort.Acm()->NotifyDataAvailableCancel(); } // Reset our flag to say there's no current outstanding request. What's // already in our buffer can stay there. iCurrentRequest.iClientPtr = NULL; } - OstTraceFunctionExit0( CACMREADER_NOTIFYDATAAVAILABLECANCEL_EXIT ); } void CAcmReader::ReadCancel() @@ -270,14 +250,14 @@ * Cancel API. Cancels any outstanding (Read or ReadOneOrMore) request. */ { - OstTraceFunctionEntry0( CACMREADER_READCANCEL_ENTRY ); + LOG_FUNC + if (ENotifyDataAvailable != iCurrentRequest.iRequestType) { // Cancel any outstanding request on the LDD. if (iPort.Acm()) { - OstTrace0( TRACE_NORMAL, CACMREADER_READCANCEL, - "CAcmReader::ReadCancel;\tiPort.Acm() exists- calling ReadCancel on it" ); + LOGTEXT(_L8("\tiPort.Acm() exists- calling ReadCancel on it")); iPort.Acm()->ReadCancel(); } @@ -285,7 +265,6 @@ // already in our buffer can stay there. iCurrentRequest.iClientPtr = NULL; } - OstTraceFunctionExit0( CACMREADER_READCANCEL_EXIT ); } TUint CAcmReader::BufLen() const @@ -296,22 +275,21 @@ * @return Length of data in buffer. */ { - OstTraceFunctionEntry0( CACMREADER_BUFLEN_ENTRY ); - OstTrace0( TRACE_NORMAL, CACMREADER_BUFLEN, "CAcmReader::BufLen;>>CAcmReader::BufLen" ); + LOGTEXT(_L8(">>CAcmReader::BufLen")); + TUint len = 0; if ( BufWrap() ) { - OstTrace0( TRACE_NORMAL, CACMREADER_BUFLEN_DUP1, "CAcmReader::BufLen;\tbuf wrapped" ); + LOGTEXT(_L8("\tbuf wrapped")); len = iBufSize - ( iOutPtr - iInPtr ); } else { - OstTrace0( TRACE_NORMAL, CACMREADER_BUFLEN_DUP2, "CAcmReader::BufLen;\tbuf not wrapped" ); + LOGTEXT(_L8("\tbuf not wrapped")); len = iInPtr - iOutPtr; } - OstTrace1( TRACE_NORMAL, CACMREADER_BUFLEN_DUP3, "CAcmReader::BufLen;len=%d", (TInt)len ); - OstTraceFunctionExit0( CACMREADER_BUFLEN_EXIT ); + LOGTEXT2(_L8("<(KConfigMaxTerminators) ; ii++ ) { iTerminator[ii] = aConfig.iTerminator[ii]; - OstTrace1( TRACE_NORMAL, CACMREADER_SETTERMINATORS_DUP1, - "CAcmReader::SetTerminators;\t\t%d", iTerminator[ii]); + LOGTEXT2(_L8("\t\t%d"), iTerminator[ii]); } - OstTraceFunctionExit0( CACMREADER_SETTERMINATORS_EXIT ); } void CAcmReader::ReadCompleted(TInt aError) @@ -414,20 +376,18 @@ * @param aError Error. */ { - OstTraceFunctionEntry0( CACMREADER_READCOMPLETED_ENTRY ); - OstTrace1( TRACE_NORMAL, CACMREADER_READCOMPLETED, - "CAcmReader::ReadCompleted;>>CAcmReader::ReadCompleted aError=%d", aError ); + LOGTEXT2(_L8(">>CAcmReader::ReadCompleted aError=%d"), aError); const TUint justRead = static_cast(iInBuf.Length()); - OstTraceExt2( TRACE_NORMAL, CACMREADER_READCOMPLETED_DUP1, - "CAcmReader::ReadCompleted;\tiInBuf length=%d, iLengthToGo=%d", (TInt)justRead, (TInt)iLengthToGo ); + LOGTEXT3(_L8("\tiInBuf length=%d, iLengthToGo=%d"), + justRead, + iLengthToGo); // This protects against a regression in the LDD- read requests shouldn't // ever complete with zero bytes and KErrNone. if ( justRead == 0 && aError == KErrNone ) { - OstTrace0( TRACE_FATAL, CACMREADER_READCOMPLETED_DUP3, "CAcmReader::ReadCompleted;ustRead == 0 && aError == KErrNone" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); + _USB_PANIC(KAcmPanicCat, EPanicInternalError); } // The new data will have been added to our buffer. Move iInPtr up by the @@ -441,7 +401,6 @@ // multi-stage Read the client will get any data already written back // to them with IPCWrite. CompleteRequest(aError); - OstTraceFunctionExit0( CACMREADER_READCOMPLETED_EXIT ); return; } @@ -449,8 +408,8 @@ // it will also complete the request if we've given the client enough data // or will reissue another read if not ReadWithoutTerminators(); - OstTrace0( TRACE_NORMAL, CACMREADER_READCOMPLETED_DUP2, "CAcmReader::ReadCompleted;<>CAcmReader::ReadOneOrMoreCompleted aError=%d", aError ); + LOGTEXT2(_L8(">>CAcmReader::ReadOneOrMoreCompleted aError=%d"), aError); const TUint justRead = static_cast(iInBuf.Length()); - OstTrace1( TRACE_NORMAL, CACMREADER_READONEORMORECOMPLETED_DUP1, - "CAcmReader::ReadOneOrMoreCompleted;\tjustRead = %d", (TInt)justRead ); + LOGTEXT2(_L8("\tjustRead = %d"), justRead); // The new data will have been added to our buffer. Move iInPtr // up by the length just read. iInPtr += justRead; + if ( aError ) { // If the ReadOneOrMore failed, we complete back to the client and // don't do anything more. The client will get any data already // written back to them with IPCWrite. CompleteRequest(aError); - OstTraceFunctionExit0( CACMREADER_READONEORMORECOMPLETED_EXIT ); return; } @@ -488,10 +444,8 @@ // data. if ( justRead == 0 ) { - OstTrace0( TRACE_NORMAL, CACMREADER_READONEORMORECOMPLETED_DUP2, - "CAcmReader::ReadOneOrMoreCompleted;\twe appear to have a ZLP- reissuing ReadOneOrMore" ); + LOGTEXT(_L8("\twe appear to have a ZLP- reissuing ReadOneOrMore")); IssueReadOneOrMore(); - OstTraceFunctionExit0( CACMREADER_READONEORMORECOMPLETED_EXIT_DUP1 ); return; } @@ -500,8 +454,8 @@ // Complete the client's request with as much data as we can. NB // Opinion may be divided over whether to do this, or complete with // just 1 byte. We implement the more generous approach. - OstTrace1( TRACE_NORMAL, CACMREADER_READONEORMORECOMPLETED_DUP3, - "CAcmReader::ReadOneOrMoreCompleted;\tcurrent request is ReadOneOrMore- completing with %d bytes", (TInt)justRead ); + LOGTEXT2(_L8("\tcurrent request is ReadOneOrMore- completing with " + "%d bytes"), justRead); WriteBackData(justRead); CompleteRequest(KErrNone); } @@ -511,33 +465,28 @@ // ReadOneOrMore, we only request LDD::ReadOneOrMore in this case.) // Process the buffer for terminators. - OstTrace0( TRACE_NORMAL, CACMREADER_READONEORMORECOMPLETED_DUP4, - "CAcmReader::ReadOneOrMoreCompleted;\tcurrent request is Read with terminators" ); + LOGTEXT(_L8("\tcurrent request is Read with terminators")); CheckForBufferedTerminatorsAndProceed(); } - OstTrace0( TRACE_NORMAL, CACMREADER_READONEORMORECOMPLETED_DUP5, - "CAcmReader::ReadOneOrMoreCompleted;<>CAcmReader::NotifyDataAvailableCompleted aError=%d"), aError); + // If the NotifyDataAvailable request failed, we complete back // to the client and don't do anything more. - CompleteRequest(aError); - OstTrace0( TRACE_NORMAL, CACMREADER_NOTIFYDATAAVAILABLECOMPLETED_DUP2, "< 0, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); + __ASSERT_DEBUG(aMaxLen <= static_cast(KMaxTInt), + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); - if (aMaxLen > static_cast(KMaxTInt)) - { - OstTrace0( TRACE_FATAL, CACMREADER_CHECKNEWREQUEST_DUP1, "CAcmReader::CheckNewRequest;aMaxLen > static_cast(KMaxTInt)" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } // Check we have no outstanding request already. if ( iCurrentRequest.iClientPtr )// just panic in case of concurrent Read or ReadOneOrMore queries. { // in case of NotifyDataAvailable queries, we already have completed the client with KErrInUse. // This code is kept for legacy purpose. That justifies the existence of IsNotifyDataAvailableQueryPending - OstTraceExt1( TRACE_FATAL, CACMREADER_CHECKNEWREQUEST_DUP3, - "CAcmReader::CheckNewRequest;iCurrentRequest.iClientPtr=%p", iCurrentRequest.iClientPtr ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); + _USB_PANIC(KAcmPanicCat, EPanicInternalError); } // Sanity check on what C32 gave us. - if (!aClientBuffer) - { - OstTrace0( TRACE_FATAL, CACMREADER_CHECKNEWREQUEST_DUP2, "CAcmReader::CheckNewRequest;aClientBuffer = NULL" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(aClientBuffer, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); // Make a note of interesting data. iCurrentRequest.iClientPtr = aClientBuffer; iLengthToGo = aMaxLen; iOffsetIntoClientsMemory = 0; - OstTraceFunctionExit0( CACMREADER_CHECKNEWREQUEST_EXIT ); } void CAcmReader::CheckForBufferedTerminatorsAndProceed() @@ -613,29 +544,23 @@ * amount if not. */ { - OstTraceFunctionEntry0( CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED_ENTRY ); - + LOG_FUNC + TInt ret = FindTerminator(); - OstTrace1( TRACE_NORMAL, CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED_DUP6, - "CAcmReader::CheckForBufferedTerminatorsAndProceed;\tFindTerminator = %d", ret ); - + LOGTEXT2(_L8("\tFindTerminator = %d"), ret); if ( ret < KErrNone ) { - OstTrace0( TRACE_NORMAL, CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED, - "CAcmReader::CheckForBufferedTerminatorsAndProceed;\tno terminator found" ); - + LOGTEXT(_L8("\tno terminator found")); const TUint bufLen = BufLen(); - OstTrace1( TRACE_NORMAL, CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED_DUP1, - "CAcmReader::CheckForBufferedTerminatorsAndProceed;\tbufLen = %d", (TInt)bufLen ); - + LOGTEXT2(_L8("\tbufLen = %d"), bufLen); // No terminator was found. Does the buffer already exceed the // client's descriptor? if ( bufLen >= iLengthToGo ) { // Yes- complete as much data to the client as their // descriptor can handle. - OstTrace1( TRACE_NORMAL, CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED_DUP2, - "CAcmReader::CheckForBufferedTerminatorsAndProceed;iLengthToGo=%d", (TInt)iLengthToGo ); + LOGTEXT2(_L8("\tbuffer >= client descriptor- " + "writing back %d bytes"), iLengthToGo); WriteBackData(iLengthToGo); CompleteRequest(KErrNone); } @@ -649,15 +574,13 @@ } else { - OstTrace0( TRACE_NORMAL, CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED_DUP3, - "CAcmReader::CheckForBufferedTerminatorsAndProceed;\tterminator found!" ); + LOGTEXT(_L8("\tterminator found!")); // Will the terminator position fit within the client's descriptor? if ( static_cast(ret) <= iLengthToGo ) { // Yes- complete (up to the terminator) back to the client. - OstTrace1( TRACE_NORMAL, CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED_DUP4, - "CAcmReader::CheckForBufferedTerminatorsAndProceed;\tterminator will fit " - "in client's descriptor- writing back %d bytes ", (TInt)ret ); + LOGTEXT2(_L8("\tterminator will fit in client's descriptor- " + "writing back %d bytes"), ret); WriteBackData(static_cast(ret)); CompleteRequest(KErrNone); } @@ -665,14 +588,12 @@ { // No- complete as much data to the client as their descriptor can // handle. - OstTrace1( TRACE_NORMAL, CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED_DUP5, - "CAcmReader::CheckForBufferedTerminatorsAndProceed; " - "\tterminator won't fit in client's descriptor- writing back %d bytes", (TInt)iLengthToGo ); + LOGTEXT2(_L8("\tterminator won't fit in client's descriptor- " + "writing back %d bytes"), iLengthToGo); WriteBackData(iLengthToGo); CompleteRequest(KErrNone); } } - OstTraceFunctionExit0( CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED_EXIT ); } void CAcmReader::WriteBackData(TUint aLength) @@ -687,44 +608,36 @@ * @param aLength Amount of data to write back. */ { - OstTraceFunctionEntry0( CACMREADER_WRITEBACKDATA_ENTRY ); - OstTrace1( TRACE_DUMP, CACMREADER_WRITEBACKDATA, "CAcmReader::WriteBackData;aLength=%d", (TInt)aLength ); - OstTrace1( TRACE_DUMP, CACMREADER_WRITEBACKDATA_DUP1, "CAcmReader::WriteBackData;\tBufLen() = %d", (TInt)BufLen() ); + LOGTEXT2(_L8("CAcmReader::WriteBackData aLength = %d"), aLength); + LOGTEXT2(_L8("\tBufLen() = %d"), BufLen()); - if (aLength > BufLen()) - { - OstTrace0( TRACE_FATAL, CACMREADER_WRITEBACKDATA_DUP15, "CAcmReader::WriteBackData;aLength > BufLen()" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + LOGTEXT2(_L8("\tBufLen() = %d"), BufLen()); + + __ASSERT_DEBUG(aLength <= BufLen(), + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); const TUint lenBeforeWrap = iBufStart + iBufSize - iOutPtr; - OstTrace1( TRACE_DUMP, CACMREADER_WRITEBACKDATA_DUP2, "CAcmReader::WriteBackData;\tiOutPtr=%d", (TInt)(iOutPtr - iBufStart) ); - OstTrace1( TRACE_DUMP, CACMREADER_WRITEBACKDATA_DUP3, "CAcmReader::WriteBackData;\tiInPtr=%d", (TInt)(iInPtr - iBufStart) ); - OstTrace1( TRACE_DUMP, CACMREADER_WRITEBACKDATA_DUP4, "CAcmReader::WriteBackData;\tiOffsetIntoClientsMemory=%d", (TInt)iOffsetIntoClientsMemory ); - OstTrace1( TRACE_DUMP, CACMREADER_WRITEBACKDATA_DUP5, "CAcmReader::WriteBackData;\tlenBeforeWrap=%d", (TInt)lenBeforeWrap ); + LOGTEXT2(_L8("\tiOutPtr=%d"), iOutPtr - iBufStart); + LOGTEXT2(_L8("\tiInPtr=%d"), iInPtr - iBufStart); + LOGTEXT2(_L8("\tiOffsetIntoClientsMemory=%d"), iOffsetIntoClientsMemory); + LOGTEXT2(_L8("\tlenBeforeWrap=%d"), lenBeforeWrap); if ( aLength > lenBeforeWrap ) { // We'll have to do this in two stages... - OstTrace0( TRACE_NORMAL, CACMREADER_WRITEBACKDATA_DUP6, "CAcmReader::WriteBackData;\twriting back in two stages" ); - if (!BufWrap()) - { - OstTrace0( TRACE_FATAL, CACMREADER_WRITEBACKDATA_DUP16, "CAcmReader::WriteBackData;BufWrap() is NULL" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + LOGTEXT(_L8("\twriting back in two stages")); + + __ASSERT_DEBUG(BufWrap(), + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); // Stage 1... TPtrC8 ptrBeforeWrap(iOutPtr, lenBeforeWrap); TInt err = iPort.IPCWrite(iCurrentRequest.iClientPtr, ptrBeforeWrap, iOffsetIntoClientsMemory); - OstTrace1( TRACE_NORMAL, CACMREADER_WRITEBACKDATA_DUP7, "CAcmReader::WriteBackData;\tIPCWrite = %d", (TInt)err ); - if (err) - { - OstTrace1( TRACE_FATAL, CACMREADER_WRITEBACKDATA_DUP17, "CAcmReader::WriteBackData;err=%d", err ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + LOGTEXT2(_L8("\tIPCWrite = %d"), err); + __ASSERT_DEBUG(!err, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); static_cast(err); iOffsetIntoClientsMemory += lenBeforeWrap; @@ -734,54 +647,39 @@ err = iPort.IPCWrite(iCurrentRequest.iClientPtr, ptrAfterWrap, iOffsetIntoClientsMemory); - OstTrace1( TRACE_NORMAL, CACMREADER_WRITEBACKDATA_DUP8, "CAcmReader::WriteBackData;\tIPCWrite = %d", (TInt)err ); - if (err) - { - OstTrace1( TRACE_FATAL, CACMREADER_WRITEBACKDATA_DUP18, "CAcmReader::WriteBackData;err=%d", err ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + LOGTEXT2(_L8("\tIPCWrite = %d"), err); + __ASSERT_DEBUG(!err, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iOffsetIntoClientsMemory += seg2Len; // and set the pointers to show that we've consumed the data... iOutPtr = iBufStart + seg2Len; - OstTrace0( TRACE_NORMAL, CACMREADER_WRITEBACKDATA_DUP9, "CAcmReader::WriteBackData;\twrite in two segments completed" ); + LOGTEXT(_L8("\twrite in two segments completed")); } else // We can do it in one go... { - OstTrace0( TRACE_NORMAL, CACMREADER_WRITEBACKDATA_DUP10, "CAcmReader::WriteBackData;\twriting in one segment" ); + LOGTEXT(_L8("\twriting in one segment")); TPtrC8 ptr(iOutPtr, aLength); TInt err = iPort.IPCWrite(iCurrentRequest.iClientPtr, ptr, iOffsetIntoClientsMemory); - OstTrace1( TRACE_NORMAL, CACMREADER_WRITEBACKDATA_DUP11, "CAcmReader::WriteBackData;\tIPCWrite = %d", (TInt)err ); - if (err) - { - OstTrace1( TRACE_FATAL, CACMREADER_WRITEBACKDATA_DUP19, "CAcmReader::WriteBackData;err=%d", err ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + LOGTEXT2(_L8("\tIPCWrite = %d"), err); + __ASSERT_DEBUG(!err, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); static_cast(err); iOffsetIntoClientsMemory += aLength; // Set the pointers to show that we've consumed the data... iOutPtr += aLength; - OstTrace0( TRACE_NORMAL, CACMREADER_WRITEBACKDATA_DUP12, "CAcmReader::WriteBackData;\twrite in one segments completed" ); + LOGTEXT(_L8("\twrite in one segment completed")); } - OstTrace1( TRACE_NORMAL, CACMREADER_WRITEBACKDATA_DUP13, - "CAcmReader::WriteBackData;\tiOutPtr=%d", (TInt)(iOutPtr - iBufStart) ); - OstTrace1( TRACE_NORMAL, CACMREADER_WRITEBACKDATA_DUP14, - "CAcmReader::WriteBackData;\tiOffsetIntoClientsMemory=%d", (TInt)iOffsetIntoClientsMemory ); + LOGTEXT2(_L8("\tiOutPtr=%d"), iOutPtr - iBufStart); + LOGTEXT2(_L8("\tiOffsetIntoClientsMemory=%d"), iOffsetIntoClientsMemory); // Adjust iLengthToGo - if (iLengthToGo < aLength) - { - OstTraceExt2( TRACE_FATAL, CACMREADER_WRITEBACKDATA_DUP20, - "CAcmReader::WriteBackData;iLengthToGo=%d;aLength=%d", (TInt)iLengthToGo, (TInt)aLength ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iLengthToGo >= aLength, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iLengthToGo -= aLength; - OstTraceFunctionExit0( CACMREADER_WRITEBACKDATA_EXIT ); } void CAcmReader::CompleteRequest(TInt aError) @@ -793,24 +691,21 @@ * @param aError The error code to complete with. */ { - OstTraceFunctionEntry0( CACMREADER_COMPLETEREQUEST_ENTRY ); - OstTrace1( TRACE_NORMAL, CACMREADER_COMPLETEREQUEST, "CAcmReader::CompleteRequest;aError=%d", (TInt)aError ); + LOGTEXT2(_L8("CAcmReader::CompleteRequest aError=%d"), aError); // Set our flag to say that we no longer have an outstanding request. iCurrentRequest.iClientPtr = NULL; + if(ENotifyDataAvailable==iCurrentRequest.iRequestType) { - OstTrace1( TRACE_NORMAL, CACMREADER_COMPLETEREQUEST_DUP1, - "CAcmReader::CompleteRequest;\tcalling NotifyDataAvailableCompleted with error %d", aError ); + LOGTEXT2(_L8("\tcalling NotifyDataAvailableCompleted with error %d"), aError); iPort.NotifyDataAvailableCompleted(aError); } else // read and readoneormore { - OstTrace1( TRACE_NORMAL, CACMREADER_COMPLETEREQUEST_DUP2, - "CAcmReader::CompleteRequest;\tcalling ReadCompleted with error %d", aError ); + LOGTEXT2(_L8("\tcalling ReadCompleted with error %d"), aError); iPort.ReadCompleted(aError); } - OstTraceFunctionExit0( CACMREADER_COMPLETEREQUEST_EXIT ); } void CAcmReader::IssueRead() @@ -822,27 +717,25 @@ * buffer being wrapped and the consequent risk of overwriting. */ { - OstTraceFunctionEntry0( CACMREADER_ISSUEREAD_ENTRY ); + LOG_FUNC + CheckBufferEmptyAndResetPtrs(); - OstTrace1( TRACE_DUMP, CACMREADER_ISSUEREAD, "CAcmReader::IssueRead;iBufSize=%d", (TInt)iBufSize ); - OstTrace1( TRACE_DUMP, CACMREADER_ISSUEREAD_DUP1, "CAcmReader::IssueRead;\tiInPtr = %d", (TInt)(iInPtr - iBufStart) ); + LOGTEXT2(_L8("\tiBufSize = %d"), iBufSize); + LOGTEXT2(_L8("\tiInPtr = %d"), iInPtr - iBufStart); + const TUint lenBeforeWrap = iBufStart + iBufSize - iInPtr; - OstTrace1( TRACE_DUMP, CACMREADER_ISSUEREAD_DUP2, "CAcmReader::IssueRead;\tiLengthToGo = %d", (TInt)iLengthToGo ); - OstTrace1( TRACE_DUMP, CACMREADER_ISSUEREAD_DUP3, "CAcmReader::IssueRead;\tlenBeforeWrap = %d", (TInt)lenBeforeWrap ); + LOGTEXT2(_L8("\tiLengthToGo = %d"), iLengthToGo); + LOGTEXT2(_L8("\tlenBeforeWrap = %d"), lenBeforeWrap); const TUint limit = Min(static_cast(iLengthToGo), static_cast(lenBeforeWrap)); - OstTrace1( TRACE_DUMP, CACMREADER_ISSUEREAD_DUP4, "CAcmReader::IssueRead;\tissuing read for %d bytes", (TInt)limit ); + LOGTEXT2(_L8("\tissuing read for %d bytes"), limit); iInBuf.Set(iInPtr, 0, limit); - if (!iPort.Acm()) - { - OstTrace0( TRACE_FATAL, CACMREADER_ISSUEREAD_DUP5, "CAcmReader::IssueRead;iPort.Acm() is null" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iPort.Acm(), + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iPort.Acm()->Read(*this, iInBuf, limit); - OstTraceFunctionExit0( CACMREADER_ISSUEREAD_EXIT ); } void CAcmReader::IssueReadOneOrMore() @@ -854,29 +747,25 @@ * buffer being wrapped and the consequent risk of overwriting. */ { - OstTraceFunctionEntry0( CACMREADER_ISSUEREADONEORMORE_ENTRY ); + LOG_FUNC + CheckBufferEmptyAndResetPtrs(); - OstTrace1( TRACE_DUMP, CACMREADER_ISSUEREADONEORMORE, "CAcmReader::IssueReadOneOrMore;iBufSize=%d", (TInt)iBufSize ); - OstTrace1( TRACE_DUMP, CACMREADER_ISSUEREADONEORMORE_DUP1, - "CAcmReader::IssueReadOneOrMore;\tiInPtr = %d",(TInt)(iInPtr - iBufStart) ); + LOGTEXT2(_L8("\tiBufSize = %d"), iBufSize); + LOGTEXT2(_L8("\tiInPtr = %d"), iInPtr - iBufStart); + const TUint lenBeforeWrap = iBufStart + iBufSize - iInPtr; - OstTrace1( TRACE_DUMP, CACMREADER_ISSUEREADONEORMORE_DUP2, "CAcmReader::IssueReadOneOrMore;iLengthToGo=%d", (TInt)iLengthToGo ); - OstTrace1( TRACE_DUMP, CACMREADER_ISSUEREADONEORMORE_DUP3, "CAcmReader::IssueReadOneOrMore;lenBeforeWrap=%d", (TInt)lenBeforeWrap ); + LOGTEXT2(_L8("\tiLengthToGo = %d"), iLengthToGo); + LOGTEXT2(_L8("\tlenBeforeWrap = %d"), lenBeforeWrap); const TUint limit1 = Min(static_cast(lenBeforeWrap), iLengthToGo); - OstTrace1( TRACE_DUMP, CACMREADER_ISSUEREADONEORMORE_DUP4, - "CAcmReader::IssueReadOneOrMore;\tissuing read one or more for %d bytes", (TInt)limit1 ); - + + LOGTEXT2(_L8("\tissuing read one or more for %d bytes"), limit1); iInBuf.Set(iInPtr, 0, limit1); - if (!iPort.Acm()) - { - OstTrace0( TRACE_FATAL, CACMREADER_ISSUEREADONEORMORE_DUP5, "CAcmReader::IssueReadOneOrMore;iPort.Acm() is null" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iPort.Acm(), + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iPort.Acm()->ReadOneOrMore(*this, iInBuf, limit1); - OstTraceFunctionExit0( CACMREADER_ISSUEREADONEORMORE_EXIT ); } TInt CAcmReader::FindTerminator() const @@ -891,8 +780,8 @@ * account. If negative: error. */ { - OstTraceFunctionEntry0( CACMREADER_FINDTERMINATOR_ENTRY ); - + LOGTEXT(_L8(">>CAcmReader::FindTerminator")); + TInt pos = 0; TInt ret = KErrNone; if ( !BufWrap() ) @@ -927,14 +816,10 @@ } // Check we're returning what we said we would. - if (ret == KErrNone) - { - OstTrace0( TRACE_FATAL, CACMREADER_FINDTERMINATOR_DUP1, "CAcmReader::FindTerminator;ret == KErrNone" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(ret != KErrNone, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); - OstTrace1( TRACE_NORMAL, CACMREADER_FINDTERMINATOR, "CAcmReader::FindTerminator;ret=%d", ret ); - OstTraceFunctionExit0( CACMREADER_FINDTERMINATOR_EXIT ); + LOGTEXT2(_L8("< #include "AcmWriter.h" #include "AcmPort.h" #include "AcmPanic.h" #include "AcmUtils.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "AcmWriterTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif CAcmWriter* CAcmWriter::NewL(CAcmPort& aPort, @@ -34,12 +35,12 @@ * @return Ownership of a newly created CAcmWriter object */ { - OstTraceFunctionEntry0( CACMWRITER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY + CAcmWriter* self = new(ELeave) CAcmWriter(aPort, aBufSize); CleanupStack::PushL(self); self->ConstructL(); CLEANUPSTACK_POP(self); - OstTraceFunctionExit0( CACMWRITER_NEWL_EXIT ); return self; } @@ -48,10 +49,11 @@ * Destructor. */ { - OstTraceFunctionEntry0( CACMWRITER_CACMWRITER_DES_ENTRY ); + LOG_FUNC + WriteCancel(); + delete iBuffer; - OstTraceFunctionExit0( CACMWRITER_CACMWRITER_DES_EXIT ); } void CAcmWriter::Write(const TAny* aClientBuffer, TUint aLength) @@ -62,8 +64,8 @@ * @param aLength Number of bytes to write */ { - OstTraceFunctionEntry0( CACMWRITER_WRITE_ENTRY ); - OstTraceExt2( TRACE_NORMAL, CACMWRITER_WRITE, "CAcmWriter::Write;aClientBuffer=%p;aLength=%d", aClientBuffer, (TInt)aLength ); + LOGTEXT3(_L8("CAcmWriter::Write aClientBuffer=0x%08x, aLength=%d"), + aClientBuffer, aLength); // Check we're open to requests and make a note of interesting data. CheckNewRequest(aClientBuffer, aLength); @@ -76,7 +78,6 @@ ReadDataFromClient(); // ...and write as much as we've got to the LDD IssueWrite(); - OstTraceFunctionExit0( CACMWRITER_WRITE_EXIT ); } void CAcmWriter::WriteCancel() @@ -84,18 +85,18 @@ * Cancel a write. */ { - OstTraceFunctionEntry0( CACMWRITER_WRITECANCEL_ENTRY ); + LOG_FUNC + // Cancel any outstanding request on the LDD. if ( iPort.Acm() ) { - OstTrace0( TRACE_NORMAL, CACMWRITER_WRITECANCEL, "CAcmWriter::WriteCancel;\tiPort.Acm() exists- calling WriteCancel on it" ); + LOGTEXT(_L8("\tiPort.Acm() exists- calling WriteCancel on it")); iPort.Acm()->WriteCancel(); } // Reset our flag to say there's no current outstanding request. What's // already in our buffer can stay there. iCurrentRequest.iClientPtr = NULL; - OstTraceFunctionExit0( CACMWRITER_WRITECANCEL_EXIT ); } void CAcmWriter::ResetBuffer() @@ -103,20 +104,15 @@ * Called by the port to clear the buffer. */ { - OstTraceFunctionEntry0( CACMWRITER_RESETBUFFER_ENTRY ); - // A request is outstanding- C32 should protect against this. + LOG_FUNC - if (iCurrentRequest.iClientPtr != NULL) - { - OstTrace1( TRACE_FATAL, CACMWRITER_RESETBUFFER, - "CAcmWriter::ResetBuffer;EPanicInternalError=%d", - (TInt)EPanicInternalError ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + // A request is outstanding- C32 should protect against this. + __ASSERT_DEBUG(!iCurrentRequest.iClientPtr, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); + // Don't have anything to do. There are no pointers to reset. This // function may in the future (if we support KConfigWriteBufferedComplete) // do work, so leave the above assertion in. - OstTraceFunctionExit0( CACMWRITER_RESETBUFFER_EXIT ); } TInt CAcmWriter::SetBufSize(TUint aSize) @@ -127,15 +123,13 @@ * @param aSize The required size of the buffer. */ { - OstTraceFunctionEntry0( CACMWRITER_SETBUFSIZE_ENTRY ); - OstTrace1( TRACE_NORMAL, CACMWRITER_SETBUFSIZE, "CAcmWriter::SetBufSize;aSize=%d", (TInt)aSize ); + LOG_FUNC + LOGTEXT2(_L8("\taSize=%d"), aSize); if ( iCurrentRequest.iClientPtr ) { // A request is outstanding. C32 does not protect us against this. - OstTrace0( TRACE_NORMAL, CACMWRITER_SETBUFSIZE_DUP1, - "CAcmWriter::SetBufSize;\t***a request is outstanding- returning KErrInUse" ); - OstTraceFunctionExit0( CACMWRITER_SETBUFSIZE_EXIT ); + LOGTEXT(_L8("\t***a request is outstanding- returning KErrInUse")); return KErrInUse; } @@ -143,9 +137,7 @@ HBufC8* newBuf = HBufC8::New(static_cast(aSize)); if ( !newBuf ) { - OstTrace0( TRACE_NORMAL, CACMWRITER_SETBUFSIZE_DUP2, - "CAcmWriter::SetBufSize;\tfailed to create new buffer- returning KErrNoMemory" ); - OstTraceFunctionExit0( CACMWRITER_SETBUFSIZE_EXIT_DUP1 ); + LOGTEXT(_L8("\tfailed to create new buffer- returning KErrNoMemory")); return KErrNoMemory; } delete iBuffer; @@ -153,7 +145,6 @@ iBuf.Set(iBuffer->Des()); iBufSize = aSize; - OstTraceFunctionExit0( CACMWRITER_SETBUFSIZE_EXIT_DUP2 ); return KErrNone; } @@ -169,8 +160,6 @@ iBuf(NULL,0,0), iPort(aPort) { - OstTraceFunctionEntry0( CACMWRITER_CACMWRITER_CONS_ENTRY ); - OstTraceFunctionExit0( CACMWRITER_CACMWRITER_CONS_EXIT ); } void CAcmWriter::ConstructL() @@ -178,16 +167,9 @@ * 2nd-phase constructor. */ { - OstTraceFunctionEntry0( CACMWRITER_CONSTRUCTL_ENTRY ); // Create the required buffer. - OstTrace0( TRACE_NORMAL, CACMWRITER_CONSTRUCTL, "CAcmWriter::ConstructL;\tabout to create iBuffer" ); - TInt err = SetBufSize(iBufSize); - if (err < 0) - { - OstTrace1( TRACE_ERROR, CACMWRITER_CONSTRUCTL_DUP1, "CAcmWriter::ConstructL;err=%d", err ); - User::Leave(err); - } - OstTraceFunctionExit0( CACMWRITER_CONSTRUCTL_EXIT ); + LOGTEXT(_L8("\tabout to create iBuffer")); + LEAVEIFERRORL(SetBufSize(iBufSize)); } void CAcmWriter::WriteCompleted(TInt aError) @@ -200,12 +182,12 @@ * @param aError Error with which the write completed. */ { - OstTraceFunctionEntry0( CACMWRITER_WRITECOMPLETED_ENTRY ); - OstTrace1( TRACE_NORMAL, CACMWRITER_WRITECOMPLETED, "CAcmWriter::WriteCompleted;aError=%d", (TInt)aError ); + LOG_FUNC + LOGTEXT2(_L8("\taError=%d"), aError); + if(iLengthToGo == 0 || aError != KErrNone) { - OstTrace1( TRACE_NORMAL, CACMWRITER_WRITECOMPLETED_DUP1, - "CAcmWriter::WriteCompleted;\tcompleting request with %d", aError ); + LOGTEXT2(_L8("\tcompleting request with %d"), aError); CompleteRequest(aError); } else @@ -215,7 +197,6 @@ ReadDataFromClient(); IssueWrite(); } - OstTraceFunctionExit0( CACMWRITER_WRITECOMPLETED_EXIT ); } void CAcmWriter::ReadDataFromClient() @@ -223,28 +204,22 @@ * Read data from the client space into the internal buffer, prior to writing. */ { - OstTraceFunctionEntry0( CACMWRITER_READDATAFROMCLIENT_ENTRY ); + LOG_FUNC TPtr8 ptr((TUint8*)iBuf.Ptr(), 0, Min(iBuf.MaxLength(), iLengthToGo)); TInt err = iPort.IPCRead(iCurrentRequest.iClientPtr, ptr, - static_cast(iOffsetIntoClientsMemory)); - OstTrace1( TRACE_NORMAL, CACMWRITER_READDATAFROMCLIENT, "CAcmWriter::ReadDataFromClient;\tIPCRead = %d", err ); - + static_cast(iOffsetIntoClientsMemory)); + LOGTEXT2(_L8("\tIPCRead = %d"), err); iBuf.SetLength(ptr.Length()); - if (err != 0) - { - OstTrace1( TRACE_FATAL, CACMWRITER_READDATAFROMCLIENT_DUP1, - "CAcmWriter::ReadDataFromClient;EPanicInternalError=%d", - (TInt)EPanicInternalError ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(!err, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); + static_cast(err); + // Increase our pointer (into the client's space) of already-read data. iOffsetIntoClientsMemory += iBuf.Length(); - OstTraceFunctionExit0( CACMWRITER_READDATAFROMCLIENT_EXIT ); } @@ -259,38 +234,26 @@ * @param aLength Length to write. */ { - OstTraceFunctionEntry0( CACMWRITER_CHECKNEWREQUEST_ENTRY ); - - if (aLength > static_cast(KMaxTInt)) - { - OstTrace1( TRACE_FATAL, CACMWRITER_CHECKNEWREQUEST, - "CAcmWriter::CheckNewRequest;aLength > static_cast(KMaxTInt), EPanicInternalError=%d", - (TInt)EPanicInternalError ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + LOG_FUNC + + __ASSERT_DEBUG(aLength <= static_cast(KMaxTInt), + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); + // Check we have no outstanding request already. if ( iCurrentRequest.iClientPtr ) { - OstTrace1( TRACE_FATAL, CACMWRITER_CHECKNEWREQUEST_DUP1, - "CAcmWriter::CheckNewRequest;iCurrentRequest.iClientPtr != NULL, EPanicInternalError=%d", - (TInt)EPanicInternalError ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); + _USB_PANIC(KAcmPanicCat, EPanicInternalError); } // Sanity check on what C32 gave us. - if (aClientBuffer == NULL) - { - OstTrace1( TRACE_FATAL, CACMWRITER_CHECKNEWREQUEST_DUP2, - "CAcmWriter::CheckNewRequest;aClientBuffer == NULL, EPanicInternalError=%d", - (TInt)EPanicInternalError ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(aClientBuffer, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); + // Make a note of interesting data. iCurrentRequest.iLength = aLength; iCurrentRequest.iClientPtr = aClientBuffer; iLengthToGo = aLength; iOffsetIntoClientsMemory = 0; - OstTraceFunctionExit0( CACMWRITER_CHECKNEWREQUEST_EXIT ); } void CAcmWriter::CompleteRequest(TInt aError) @@ -301,17 +264,13 @@ * @param aError The error code to complete with. */ { - OstTraceFunctionEntry0( CACMWRITER_COMPLETEREQUEST_ENTRY ); - OstTrace1( TRACE_NORMAL, CACMWRITER_COMPLETEREQUEST, - "CAcmWriter::CompleteRequest;CAcmWriter::CompleteRequest aError=%d", (TInt)aError ); - + LOGTEXT2(_L8("CAcmWriter::CompleteRequest aError=%d"), aError); + // Set our flag to say that we no longer have an outstanding request. iCurrentRequest.iClientPtr = NULL; - OstTrace1( TRACE_NORMAL, CACMWRITER_COMPLETEREQUEST_DUP1, - "CAcmWriter::CompleteRequest;\tcalling WriteCompleted with %d", aError ); - + + LOGTEXT2(_L8("\tcalling WriteCompleted with %d"), aError); iPort.WriteCompleted(aError); - OstTraceFunctionExit0( CACMWRITER_COMPLETEREQUEST_EXIT ); } void CAcmWriter::IssueWrite() @@ -320,15 +279,11 @@ * entire load of buffered data in one go. */ { - OstTraceFunctionEntry0( CACMWRITER_ISSUEWRITE_ENTRY ); - - OstTrace1( TRACE_NORMAL, CACMWRITER_ISSUEWRITE, "CAcmWriter::IssueWrite;\tissuing Write of %d bytes", (TInt)(iBuf.Length()) ); - if (iPort.Acm() == NULL) - { - OstTrace1( TRACE_FATAL, CACMWRITER_ISSUEWRITE_DUP1, - "CAcmWriter::IssueWrite;EPanicInternalError=%d", (TInt)EPanicInternalError); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + LOG_FUNC + + LOGTEXT2(_L8("\tissuing Write of %d bytes"), iBuf.Length()); + __ASSERT_DEBUG(iPort.Acm(), + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iPort.Acm()->Write(*this, iBuf, iBuf.Length()); @@ -341,14 +296,11 @@ // This is not expected to occur but the test is in here just to be safe. if(iBuf.Length() == 0 && iCurrentRequest.Length() != 0 && iLengthToGo != 0) { - OstTrace1( TRACE_FATAL, CACMWRITER_ISSUEWRITE_DUP2, - "CAcmWriter::IssueWrite;EPanicInternalError=%d", (TInt)EPanicInternalError); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); + _USB_PANIC(KAcmPanicCat, EPanicInternalError); } #endif // Update our counter of remaining data to write. iLengthToGo -= iBuf.Length(); - OstTraceFunctionExit0( CACMWRITER_ISSUEWRITE_EXIT ); } // diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ActiveDataAvailableNotifier.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ActiveDataAvailableNotifier.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ActiveDataAvailableNotifier.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -22,13 +22,12 @@ #include "AcmPanic.h" #include "AcmUtils.h" #include "NotifyDataAvailableObserver.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ActiveDataAvailableNotifierTraces.h" +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif - - CActiveDataAvailableNotifier::CActiveDataAvailableNotifier( MNotifyDataAvailableObserver& aParent, RDevUsbcClient& aLdd, @@ -47,9 +46,7 @@ * @param aEndpoint The endpoint to read from. */ { - OstTraceFunctionEntry0( CACTIVEDATAAVAILABLENOTIFIER_CACTIVEDATAAVAILABLENOTIFIER_CONS_ENTRY ); CActiveScheduler::Add(this); - OstTraceFunctionExit0( CACTIVEDATAAVAILABLENOTIFIER_CACTIVEDATAAVAILABLENOTIFIER_CONS_EXIT ); } CActiveDataAvailableNotifier::~CActiveDataAvailableNotifier() @@ -57,9 +54,9 @@ * Destructor. */ { - OstTraceFunctionEntry0( CACTIVEDATAAVAILABLENOTIFIER_CACTIVEDATAAVAILABLENOTIFIER_DES_ENTRY ); + LOG_FUNC + Cancel(); - OstTraceFunctionExit0( CACTIVEDATAAVAILABLENOTIFIER_CACTIVEDATAAVAILABLENOTIFIER_DES_EXIT ); } CActiveDataAvailableNotifier* CActiveDataAvailableNotifier::NewL( @@ -77,10 +74,10 @@ * @return Ownership of a new CActiveReadOneOrMoreReader object. */ { - OstTraceFunctionEntry0( CACTIVEDATAAVAILABLENOTIFIER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY + CActiveDataAvailableNotifier* self = new(ELeave) CActiveDataAvailableNotifier(aParent, aLdd, aEndpoint); - OstTraceFunctionExit0( CACTIVEDATAAVAILABLENOTIFIER_NEWL_EXIT ); return self; } @@ -89,10 +86,12 @@ * When incoming data arrives at the LDD notify the caller. */ { - OstTraceFunctionEntry0( CACTIVEDATAAVAILABLENOTIFIER_NOTIFYDATAAVAILABLE_ENTRY ); + LOGTEXT(_L8(">>CActiveDataAvailableNotifier::NotifyDataAvailable")); + iLdd.ReadOneOrMore(iStatus, iEndpoint, iUnusedBuf, 0); SetActive(); - OstTraceFunctionExit0( CACTIVEDATAAVAILABLENOTIFIER_NOTIFYDATAAVAILABLE_EXIT ); + + LOGTEXT(_L8("< + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif CActiveReadOneOrMoreReader::CActiveReadOneOrMoreReader( @@ -44,9 +45,7 @@ * @param aEndpoint The endpoint to read from. */ { - OstTraceFunctionEntry0( CACTIVEREADONEORMOREREADER_CACTIVEREADONEORMOREREADER_CONS_ENTRY ); CActiveScheduler::Add(this); - OstTraceFunctionExit0( CACTIVEREADONEORMOREREADER_CACTIVEREADONEORMOREREADER_CONS_EXIT ); } CActiveReadOneOrMoreReader::~CActiveReadOneOrMoreReader() @@ -54,9 +53,9 @@ * Destructor. */ { - OstTraceFunctionEntry0( CACTIVEREADONEORMOREREADER_CACTIVEREADONEORMOREREADER_DES_ENTRY ); + LOG_FUNC + Cancel(); - OstTraceFunctionExit0( CACTIVEREADONEORMOREREADER_CACTIVEREADONEORMOREREADER_DES_EXIT ); } CActiveReadOneOrMoreReader* CActiveReadOneOrMoreReader::NewL( @@ -73,10 +72,10 @@ * @return Ownership of a new CActiveReadOneOrMoreReader object. */ { - OstTraceFunctionEntry0( CACTIVEREADONEORMOREREADER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY + CActiveReadOneOrMoreReader* self = new(ELeave) CActiveReadOneOrMoreReader(aParent, aLdd, aEndpoint); - OstTraceFunctionExit0( CACTIVEREADONEORMOREREADER_NEWL_EXIT ); return self; } @@ -88,12 +87,13 @@ * @param aLength The length to read. */ { - OstTraceFunctionEntry0( CACTIVEREADONEORMOREREADER_READONEORMORE_ENTRY ); - OstTrace1( TRACE_NORMAL, CACTIVEREADONEORMOREREADER_READONEORMORE, - "CActiveReadOneOrMoreReader::ReadOneOrMore;aLength=%d", aLength ); + LOGTEXT2(_L8(">>CActiveReadOneOrMoreReader::ReadOneOrMore " + "aLength=%d"), aLength); + iLdd.ReadOneOrMore(iStatus, iEndpoint, aDes, aLength); SetActive(); - OstTraceFunctionExit0( CACTIVEREADONEORMOREREADER_READONEORMORE_EXIT ); + + LOGTEXT(_L8("<>CActiveReadOneOrMoreReader::RunL iStatus=%d"), + iStatus.Int()); + iParent.ReadOneOrMoreCompleted(iStatus.Int()); - OstTraceFunctionExit0( CACTIVEREADONEORMOREREADER_RUNL_EXIT ); + + LOGTEXT(_L8("< + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif CActiveReader::CActiveReader(MReadObserver& aParent, RDevUsbcClient& aLdd, TEndpointNumber aEndpoint) @@ -41,9 +42,7 @@ * @param aEndpoint The endpoint to read from. */ { - OstTraceFunctionEntry0( CACTIVEREADER_CACTIVEREADER_CONS_ENTRY ); CActiveScheduler::Add(this); - OstTraceFunctionExit0( CACTIVEREADER_CACTIVEREADER_CONS_EXIT ); } CActiveReader::~CActiveReader() @@ -51,9 +50,9 @@ * Destructor. */ { - OstTraceFunctionEntry0( CACTIVEREADER_CACTIVEREADER_DES_ENTRY ); + LOG_FUNC + Cancel(); - OstTraceFunctionExit0( CACTIVEREADER_CACTIVEREADER_DES_EXIT ); } CActiveReader* CActiveReader::NewL(MReadObserver& aParent, @@ -69,9 +68,9 @@ * @return Ownership of a new CActiveReader object. */ { - OstTraceFunctionEntry0( CACTIVEREADER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY + CActiveReader* self = new(ELeave) CActiveReader(aParent, aLdd, aEndpoint); - OstTraceFunctionExit0( CACTIVEREADER_NEWL_EXIT ); return self; } @@ -83,10 +82,10 @@ * @param aLen The length to read. */ { - OstTraceFunctionEntry0( CACTIVEREADER_READ_ENTRY ); + LOG_FUNC + iLdd.Read(iStatus, iEndpoint, aDes, aLen); SetActive(); - OstTraceFunctionExit0( CACTIVEREADER_READ_EXIT ); } void CActiveReader::DoCancel() @@ -94,9 +93,9 @@ * Cancel an outstanding read. */ { - OstTraceFunctionEntry0( CACTIVEREADER_DOCANCEL_ENTRY ); + LOG_FUNC + iLdd.ReadCancel(iEndpoint); - OstTraceFunctionExit0( CACTIVEREADER_DOCANCEL_EXIT ); } void CActiveReader::RunL() @@ -105,10 +104,12 @@ * parent class of the completion. */ { - OstTraceFunctionEntry0( CACTIVEREADER_RUNL_ENTRY ); - OstTrace1( TRACE_NORMAL, CACTIVEREADER_RUNL, "CActiveReader::RunL;RunL iStatus=%d", iStatus.Int() ); + LOG_LINE + LOGTEXT2(_L8(">>CActiveReader::RunL iStatus=%d"), iStatus.Int()); + iParent.ReadCompleted(iStatus.Int()); - OstTraceFunctionExit0( CACTIVEREADER_RUNL_EXIT ); + + LOGTEXT(_L8("< + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif - CActiveWriter::CActiveWriter(MWriteObserver& aParent, RDevUsbcClient& aLdd, TEndpointNumber aEndpoint) : CActive(KEcacmAOPriority), iParent(aParent), @@ -44,9 +44,7 @@ * @param aEndpoint The endpoint to write to. */ { - OstTraceFunctionEntry0( CACTIVEWRITER_CACTIVEWRITER_CONS_ENTRY ); CActiveScheduler::Add(this); - OstTraceFunctionExit0( CACTIVEWRITER_CACTIVEWRITER_CONS_EXIT ); } CActiveWriter::~CActiveWriter() @@ -54,9 +52,9 @@ * Destructor. */ { - OstTraceFunctionEntry0( CACTIVEWRITER_CACTIVEWRITER_DES_ENTRY ); + LOG_FUNC + Cancel(); - OstTraceFunctionExit0( CACTIVEWRITER_CACTIVEWRITER_DES_EXIT ); } CActiveWriter* CActiveWriter::NewL(MWriteObserver& aParent, @@ -72,9 +70,9 @@ * @return Ownership of a new CActiveWriter object. */ { - OstTraceFunctionEntry0( CACTIVEWRITER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY + CActiveWriter* self = new(ELeave) CActiveWriter(aParent, aLdd, aEndpoint); - OstTraceFunctionExit0( CACTIVEWRITER_NEWL_EXIT ); return self; } @@ -89,8 +87,8 @@ * @param aZlp Whether ZLP termination may be required. */ { - OstTraceFunctionEntry0( CACTIVEWRITER_WRITE_ENTRY ); - + LOGTEXT(_L8(">>CActiveWriter::Write")); + if ( aZlp ) { // the driver can be relied on to correctly handle appended ZLPs @@ -111,7 +109,7 @@ { iLdd.Write(iStatus, iEndpoint, aDes, aLen, EFalse); iWritingState = ECompleteMessage; - OstTrace1( TRACE_NORMAL, CACTIVEWRITER_WRITE, "CActiveWriter::Write;Writing %d bytes", aLen ); + LOGTEXT2(_L8("CActiveWriter::Writing %d bytes"), aLen); } else { @@ -127,12 +125,12 @@ iLdd.Write(iStatus, iEndpoint, iFirstPortion, aLen-1, EFalse); iWritingState = EFirstMessagePart; - OstTraceExt2( TRACE_NORMAL, CACTIVEWRITER_WRITE_DUP1, - "CActiveWriter::Write;Writing %d bytes of the %d", aLen-1, aLen ); + LOGTEXT3(_L8("CActiveWriter::Writing %d bytes of the %d"), aLen-1, aLen); } } SetActive(); - OstTraceFunctionExit0( CACTIVEWRITER_WRITE_EXIT ); + + LOGTEXT(_L8("<>CActiveWriter::RunL iStatus=%d"), iStatus.Int()); if ( iWritingState == EFirstMessagePart ) { @@ -161,8 +159,8 @@ // now send the second part.. iLdd.Write(iStatus, iEndpoint, iSecondPortion, iSecondPortion.Length(), EFalse); iWritingState = EFinalMessagePart; - OstTrace0( TRACE_NORMAL, CACTIVEWRITER_RUNL_DUP1, - "CActiveWriter::RunL;Writing 1 byte to complete original nx64 byte message" ); + LOGTEXT(_L8("CActiveWriter::Writing 1 byte to complete original nx64 byte message")); + SetActive(); } else @@ -177,7 +175,7 @@ iParent.WriteCompleted(iStatus.Int()); } - OstTraceFunctionExit0( CACTIVEWRITER_RUNL_EXIT ); + LOGTEXT(_L8("< + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif - CBreakController::CBreakController(CCdcAcmClass& aParentAcm) /** * Constructor. @@ -37,7 +37,6 @@ iBreakState(EInactive), iParentAcm(aParentAcm) { - OstTraceFunctionEntry0( CBREAKCONTROLLER_CBREAKCONTROLLER_CONS_ENTRY ); CActiveScheduler::Add(this); // now populate the state machine that manages the transfers between @@ -67,7 +66,6 @@ StateDispatcher[ELocked ][EInactive ] = &ScInactive; StateDispatcher[ELocked ][ETiming ] = &ScSetTimer; - OstTraceFunctionExit0( CBREAKCONTROLLER_CBREAKCONTROLLER_CONS_EXIT ); } CBreakController* CBreakController::NewL(CCdcAcmClass& aParentAcm) @@ -78,12 +76,12 @@ * @return Ownership of a new CBreakController object. */ { - OstTraceFunctionEntry0( CBREAKCONTROLLER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY + CBreakController* self = new(ELeave) CBreakController(aParentAcm); CleanupStack::PushL(self); self->ConstructL(); CLEANUPSTACK_POP(self); - OstTraceFunctionExit0( CBREAKCONTROLLER_NEWL_EXIT ); return self; } @@ -92,13 +90,7 @@ * 2nd-phase constructor. */ { - TInt err; - err = iTimer.CreateLocal(); - if (err < 0) - { - OstTrace1( TRACE_NORMAL, CBREAKCONTROLLER_CONSTRUCTL, "CBreakController::ConstructL;err=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(iTimer.CreateLocal()); } CBreakController::~CBreakController() @@ -106,10 +98,10 @@ * Destructor. */ { - OstTraceFunctionEntry0( CBREAKCONTROLLER_CBREAKCONTROLLER_DES_ENTRY ); + LOG_FUNC + Cancel(); iTimer.Close(); - OstTraceFunctionExit0( CBREAKCONTROLLER_CBREAKCONTROLLER_DES_EXIT ); } void CBreakController::RunL() @@ -117,8 +109,9 @@ * Called by the active scheduler; handles timer completion. */ { - OstTraceFunctionEntry0( CBREAKCONTROLLER_RUNL_ENTRY ); - + LOG_LINE + LOG_FUNC + // check the status to see if the timer has matured, if so go straight // to INACTIVE state (and publish new state) if ( iStatus == KErrNone ) @@ -126,13 +119,9 @@ // Use iRequester to turn the break off. This should not fail. TInt err = BreakRequest(iRequester, EInactive); static_cast(err); - if (err) - { - OstTrace1( TRACE_FATAL, CBREAKCONTROLLER_RUNL, "CBreakController::RunL;err=%d", err ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(!err, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); } - OstTraceFunctionExit0( CBREAKCONTROLLER_RUNL_EXIT ); } void CBreakController::DoCancel() @@ -140,9 +129,9 @@ * Called by the framework; handles cancelling the outstanding timer request. */ { - OstTraceFunctionEntry0( CBREAKCONTROLLER_DOCANCEL_ENTRY ); + LOG_FUNC + iTimer.Cancel(); - OstTraceFunctionExit0( CBREAKCONTROLLER_DOCANCEL_EXIT ); } TInt CBreakController::BreakRequest(TRequester aRequester, @@ -158,30 +147,28 @@ * @return Error, for instance if a different entity already owns the break. */ { - OstTraceFunctionEntry0( CBREAKCONTROLLER_BREAKREQUEST_ENTRY ); - OstTraceExt3( TRACE_NORMAL, CBREAKCONTROLLER_BREAKREQUEST, - "CBreakController::BreakRequest;aRequester=%d;aState=%d;aDelay=%d", (TInt)aRequester, (TInt)aState, aDelay.Int() ); + LOG_FUNC + LOGTEXT4(_L8("\taRequester = %d, aState = %d, aDelay = %d"), + aRequester, aState, aDelay.Int()); // Check the validity of the request. if ( aRequester != iRequester && iRequester != ENone ) { - OstTraceExt2( TRACE_FLOW, CBREAKCONTROLLER_BREAKREQUEST_DUP1, - "CBreakController::BreakRequest;%d is in charge- cannot service request from %d- returning KErrInUse", - (TInt)iRequester, (TInt)aRequester ); - - OstTraceFunctionExit0( CBREAKCONTROLLER_BREAKREQUEST_EXIT ); + LOGTEXT3(_L8("\t*** %d is in charge- cannot service request " + "from %d- returning KErrInUse"), iRequester, aRequester); return KErrInUse; } iRequester = aRequester; + StateMachine(aState, aDelay); + // Reset the owner member if relevant. if ( aState == EInactive ) { iRequester = ENone; } - OstTraceFunctionExit0( CBREAKCONTROLLER_BREAKREQUEST_EXIT_DUP1 ); return KErrNone; } @@ -194,23 +181,20 @@ * @param aDelay Only used if going to a breaking state, the delay. */ { - OstTraceFunctionEntry0( CBREAKCONTROLLER_STATEMACHINE_ENTRY ); + LOG_FUNC + TBool resultOK = EFalse; // Invoke the desired function. PBFNT pfsDispatch = StateDispatcher[iBreakState][aBreakState]; - if (!pfsDispatch) - { - OstTraceExt1( TRACE_FATAL, CBREAKCONTROLLER_STATEMACHINE, "CBreakController::StateMachine;pfsDispatch=%p", (TAny*)pfsDispatch ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(pfsDispatch, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); resultOK = ( *pfsDispatch )(this, aDelay); if ( resultOK ) { - OstTrace0( TRACE_NORMAL, CBREAKCONTROLLER_STATEMACHINE_DUP1, - "CBreakController::StateMachine;\tbreak state dispatcher returned *SUCCESS*" ); - + LOGTEXT(_L8("\tbreak state dispatcher returned *SUCCESS*")); + // check to see if the state change will need to result // in a modification to the public state of BREAK which is // either NO-BREAK == EBreakInactive @@ -230,10 +214,8 @@ } else { - OstTrace0( TRACE_NORMAL, CBREAKCONTROLLER_STATEMACHINE_DUP2, - "CBreakController::StateMachine;\tbreak state dispatcher returned *FAILURE*" ); + LOGTEXT(_L8("\tbreak state dispatcher returned *FAILURE*")); } - OstTraceFunctionExit0( CBREAKCONTROLLER_STATEMACHINE_EXIT ); } void CBreakController::Publish(TState aNewState) @@ -244,13 +226,11 @@ * @param aNewState The next state we're about to go to. */ { - OstTraceFunctionEntry0( CBREAKCONTROLLER_PUBLISH_ENTRY ); + LOG_FUNC + LOGTEXT2(_L8("\taNewState = %d"), aNewState); - if (aNewState == iBreakState) - { - OstTrace1( TRACE_FATAL, CBREAKCONTROLLER_PUBLISH, "CBreakController::Publish;aNewState=%d", (TInt)aNewState ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(aNewState != iBreakState, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); // send the new BREAK state off to the USB Host // this function is normally used so that ACMCSY can send client @@ -267,7 +247,7 @@ // this should cause it to be toggled there. if( iParentAcm.BreakCallback() ) { - OstTrace0( TRACE_NORMAL, CBREAKCONTROLLER_PUBLISH_DUP1, "CBreakController::Publish;\tabout to call back break state change" ); + LOGTEXT(_L8("\tabout to call back break state change")); iParentAcm.BreakCallback()->BreakStateChange(); } @@ -275,13 +255,13 @@ // we tell the MBreakObserver (ACM port) that the break has completed. if ( aNewState == EInactive ) { - OstTrace0( TRACE_NORMAL, CBREAKCONTROLLER_PUBLISH_DUP2, "CBreakController::Publish;\tnew state is break-inactive" ); + LOGTEXT(_L8("\tnew state is break-inactive")); if ( iRequester == EDevice ) { - OstTrace0( TRACE_NORMAL, CBREAKCONTROLLER_PUBLISH_DUP3, "CBreakController::Publish;\tdevice is interested" ); + LOGTEXT(_L8("\tdevice is interested")); if( iParentAcm.BreakCallback() ) { - OstTrace0( TRACE_NORMAL, CBREAKCONTROLLER_PUBLISH_DUP4, "CBreakController::Publish;\tabout to call back break completion" ); + LOGTEXT(_L8("\tabout to call back break completion")); iParentAcm.BreakCallback()->BreakRequestCompleted(); } } @@ -289,7 +269,6 @@ // We just got to break-inactive state. Blank the requester record. iRequester = ENone; } - OstTraceFunctionExit0( CBREAKCONTROLLER_PUBLISH_EXIT ); } /** @@ -302,17 +281,18 @@ TBool CBreakController::ScInvalid(CBreakController *aThis, TTimeIntervalMicroSeconds32 aDelay) { - OstTraceFunctionEntry0( CBREAKCONTROLLER_SCINVALID_ENTRY ); + LOG_STATIC_FUNC_ENTRY + static_cast(aThis); // remove warning static_cast(aDelay); // remove warning - OstTraceFunctionExit0( CBREAKCONTROLLER_SCINVALID_EXIT ); + return( EFalse ); } TBool CBreakController::ScInactive(CBreakController *aThis, TTimeIntervalMicroSeconds32 aDelay) { - OstTraceFunctionEntry0( CBREAKCONTROLLER_SCINACTIVE_ENTRY ); + LOG_STATIC_FUNC_ENTRY static_cast(aDelay); // remove warning @@ -322,19 +302,17 @@ aThis->iParentAcm.SetBreakActive(EFalse); - OstTraceFunctionExit0( CBREAKCONTROLLER_SCINACTIVE_EXIT ); return( ETrue ); } TBool CBreakController::ScSetTimer(CBreakController *aThis, TTimeIntervalMicroSeconds32 aDelay) { - OstTraceFunctionEntry0( CBREAKCONTROLLER_SCSETTIMER_ENTRY ); + LOG_STATIC_FUNC_ENTRY // don't try to set any delay if the caller wants something impossible if ( aDelay.Int() <= 0 ) { - OstTraceFunctionExit0( CBREAKCONTROLLER_SCSETTIMER_EXIT ); return( EFalse ); } @@ -345,14 +323,14 @@ aThis->iParentAcm.SetBreakActive(ETrue); - OstTraceFunctionExit0( CBREAKCONTROLLER_SCSETTIMER_EXIT_DUP1 ); return( ETrue ); } TBool CBreakController::ScLocked(CBreakController *aThis, TTimeIntervalMicroSeconds32 aDelay) { - OstTraceFunctionEntry0( CBREAKCONTROLLER_SCLOCKED_ENTRY ); + LOG_STATIC_FUNC_ENTRY + static_cast(aDelay); // remove warning // this may have been called while a BREAK is already current, so cancel @@ -361,7 +339,6 @@ aThis->iParentAcm.SetBreakActive(ETrue); - OstTraceFunctionExit0( CBREAKCONTROLLER_SCLOCKED_EXIT ); return( ETrue ); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcAcmClass.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcAcmClass.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcAcmClass.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -22,9 +22,10 @@ #include "AcmUtils.h" #include "HostPushedChangeObserver.h" #include "BreakController.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CdcAcmClassTraces.h" +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif extern const TInt32 KUsbAcmHostCanHandleZLPs = 0; @@ -34,9 +35,7 @@ * Constructor. */ { - OstTraceFunctionEntry0( CCDCACMCLASS_CCDCACMCLASS_CONS_ENTRY ); SetDefaultAcm(); - OstTraceFunctionExit0( CCDCACMCLASS_CCDCACMCLASS_CONS_EXIT ); } CCdcAcmClass* CCdcAcmClass::NewL(const TUint8 aProtocolNum, const TDesC16& aAcmControlIfcName, const TDesC16& aAcmDataIfcName) @@ -46,12 +45,12 @@ * @return Ownership of a new CCdcAcmClass object */ { - OstTraceFunctionEntry0( CCDCACMCLASS_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY + CCdcAcmClass* self = new(ELeave) CCdcAcmClass; CleanupStack::PushL(self); self->ConstructL(aProtocolNum, aAcmControlIfcName, aAcmDataIfcName); CLEANUPSTACK_POP(self); - OstTraceFunctionExit0( CCDCACMCLASS_NEWL_EXIT ); return self; } @@ -63,41 +62,32 @@ * @param aDataIfcName contains the interface name */ { - OstTraceFunctionEntry0( CCDCACMCLASS_CONSTRUCTL_ENTRY ); - TUint8 interfaceNumber; TInt res; - OstTrace0( TRACE_NORMAL, CCDCACMCLASS_CONSTRUCTL, "CCdcAcmClass::ConstructL;\tabout to create control interface with name" ); + LOGTEXT(_L8("\tabout to create control interface with name")); iControl = CCdcControlInterface::NewL(*this, aProtocolNum, aControlIfcName); - OstTrace0( TRACE_NORMAL, CCDCACMCLASS_CONSTRUCTL_DUP1, "CCdcAcmClass::ConstructL;\tabout to create data interface with name" ); + LOGTEXT(_L8("\tabout to create data interface with name")); iData = CCdcDataInterface::NewL(aDataIfcName); iBreakController = CBreakController::NewL(*this); - OstTrace0( TRACE_NORMAL, CCDCACMCLASS_CONSTRUCTL_DUP2, "CCdcAcmClass::ConstructL;\tabout to call GetInterfaceNumber" ); + LOGTEXT(_L8("\tabout to call GetInterfaceNumber")); res = iData->GetInterfaceNumber(interfaceNumber); if ( res ) { - OstTrace1( TRACE_NORMAL, CCDCACMCLASS_CONSTRUCTL_DUP3, "CCdcAcmClass::ConstructL;\tGetInterfaceNumber=%d", res ); - if (res < 0) - { - User::Leave(res); - } + LOGTEXT2(_L8("\tGetInterfaceNumber=%d"), res); + LEAVEIFERRORL(res); } - OstTrace0( TRACE_NORMAL, CCDCACMCLASS_CONSTRUCTL_DUP4, "CCdcAcmClass::ConstructL;\tabout to call SetupClassSpecificDescriptor" ); + LOGTEXT(_L8("\tabout to call SetupClassSpecificDescriptor")); res = iControl->SetupClassSpecificDescriptor(interfaceNumber); if ( res ) { - OstTrace1( TRACE_NORMAL, CCDCACMCLASS_CONSTRUCTL_DUP5, "CCdcAcmClass::ConstructL;\tSetupClassSpecificDescriptor=%d", res ); - if (res < 0) - { - User::Leave(res); - } + LOGTEXT2(_L8("\tSetupClassSpecificDescriptor=%d"), res); + LEAVEIFERRORL(res); } - OstTraceFunctionExit0( CCDCACMCLASS_CONSTRUCTL_EXIT ); } CCdcAcmClass::~CCdcAcmClass() @@ -105,11 +95,11 @@ * Destructor. */ { - OstTraceFunctionEntry0( CCDCACMCLASS_CCDCACMCLASS_DES_ENTRY ); + LOG_FUNC + delete iControl; delete iData; delete iBreakController; - OstTraceFunctionExit0( CCDCACMCLASS_CCDCACMCLASS_DES_EXIT ); } void CCdcAcmClass::SetCallback(MHostPushedChangeObserver* aCallback) @@ -118,8 +108,8 @@ * because the ACM class and the port have different lifetimes. */ { - OstTraceFunctionEntry0( CCDCACMCLASS_SETCALLBACK_ENTRY ); - OstTraceExt1( TRACE_NORMAL, CCDCACMCLASS_SETCALLBACK, "CCdcAcmClass::SetCallback;aCallback=%p", aCallback ); + LOGTEXT2(_L8(">>CCdcAcmClass::SetCallback aCallback=0x%08x"), aCallback); + iCallback = aCallback; // remember that this function can also be called to @@ -137,7 +127,7 @@ iCallback->HostSignalChange(iDtrState,iRtsState); } - OstTraceFunctionExit0( CCDCACMCLASS_SETCALLBACK_EXIT ); + LOGTEXT(_L8("<>CCdcAcmClass::SetBreakCallback aBreakCallback=0x%08x"), + aBreakCallback); + iBreakCallback = aBreakCallback; - OstTraceFunctionExit0( CCDCACMCLASS_SETBREAKCALLBACK_EXIT ); + + LOGTEXT(_L8("<>CCdcAcmClass::ReadOneOrMore aObserver=0x%08x"), + &aObserver); + ReadOneOrMore(aObserver, aDes, aDes.Length()); - OstTraceFunctionExit0( CCDCACMCLASS_READONEORMORE_EXIT ); + + LOGTEXT(_L8("<>CCdcAcmClass::ReadOneOrMore aObserver=0x%08x, " + "aLength=%d"), + &aObserver, aLength); - if (!iData) - { - OstTrace1( TRACE_FATAL, CCDCACMCLASS_READONEORMORE_MREADONEORMOREOBSERVERREF_TDES8REF_TINT_DUP1, "CCdcAcmClass::ReadOneOrMore;iData=%d", (TInt)iData ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iData, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iData->ReadOneOrMore(aObserver, aDes, aLength); - OstTraceFunctionExit0( CCDCACMCLASS_READONEORMORE_MREADONEORMOREOBSERVERREF_TDES8REF_TINT_EXIT ); + LOGTEXT(_L8("<>CCdcAcmClass::Read aObserver=0x%08x"), &aObserver); + Read(aObserver, aDes, aDes.Length()); - OstTraceFunctionExit0( CCDCACMCLASS_READ_EXIT ); + + LOGTEXT(_L8("<>CCdcAcmClass::Read aObserver=0x%08x, aLength=%d"), + &aObserver, aLength); + + __ASSERT_DEBUG(iData, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iData->Read(aObserver, aDes, aLength); - OstTraceFunctionExit0( CCDCACMCLASS_READ_ENTRY_DUP1_EXIT ); + + LOGTEXT(_L8("<CancelRead(); - OstTraceFunctionExit0( CCDCACMCLASS_READCANCEL_EXIT ); } void CCdcAcmClass::Write(MWriteObserver& aObserver, const TDesC8& aDes) @@ -249,10 +233,12 @@ * @param aDes Descriptor containing the data to be written. */ { - OstTraceFunctionEntry0( CCDCACMCLASS_WRITE_ENTRY ); - OstTraceExt1( TRACE_NORMAL, CCDCACMCLASS_WRITE, "CCdcAcmClass::Write;aObserver=%p", &aObserver ); + LOGTEXT2(_L8(">>CCdcAcmClass::Write aObserver=0x%08x"), + &aObserver); + Write(aObserver, aDes, aDes.Length()); - OstTraceFunctionExit0( CCDCACMCLASS_WRITE_EXIT ); + + LOGTEXT(_L8("<>CCdcAcmClass::Write aObserver=0x%08x, aLength=%d"), + &aObserver, aLength); + + __ASSERT_DEBUG(iData, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iData->Write(aObserver, aDes, aLength); - OstTraceFunctionExit0( CCDCACMCLASS_WRITE_ENTRY_DUP1_EXIT ); + + LOGTEXT(_L8("<CancelWrite(); - OstTraceFunctionExit0( CCDCACMCLASS_WRITECANCEL_EXIT ); } TInt CCdcAcmClass::HandleGetCommFeature(const TUint16 aSelector, @@ -302,8 +282,9 @@ * the ACM device or the country code from ISO 3166. */ { - OstTraceFunctionEntry0( CCDCACMCLASS_HANDLEGETCOMMFEATURE_ENTRY ); - OstTrace1( TRACE_NORMAL, CCDCACMCLASS_HANDLEGETCOMMFEATURE, "CCdcAcmClass::HandleGetCommFeature;aSelector=%d", (TInt)aSelector ); + LOGTEXT2(_L8(">>CCdcAcmClass::HandleGetCommFeature aSelector=%d"), + aSelector); + TInt ret = KErrNone; // check the feature selector from the header and reject if invalid, @@ -320,8 +301,8 @@ ppbuffer = &pbuffer; CCdcControlInterface::PutU16(ppbuffer,iAcmState); - OstTraceExt1( TRACE_NORMAL, CCDCACMCLASS_HANDLEGETCOMMFEATURE_DUP1, - "CCdcAcmClass::HandleGetCommFeature;\tAbstract State [0x%hx]", iAcmState ); + + LOGTEXT2(_L8("\tAbstract State [0x%04X]"), iAcmState); } break; @@ -330,8 +311,7 @@ #if defined(DISABLE_ACM_CF_COUNTRY_SETTING) aReturnData.SetLength(0); - OstTrace0( TRACE_NORMAL, CCDCACMCLASS_HANDLEGETCOMMFEATURE_DUP2, - "CCdcAcmClass::HandleGetCommFeature;\tCountry Code Not Supported" ); + LOGTEXT(_L8("\tCountry Code Not Supported")); ret = KErrNotSupported; #elif defined(ENABLE_ACM_CF_COUNTRY_SETTING) @@ -344,21 +324,20 @@ ppbuffer = &pbuffer; CCdcControlInterface::PutU16(ppbuffer,iCountryCode); - OstTraceExt1( TRACE_NORMAL, CCDCACMCLASS_HANDLEGETCOMMFEATURE_DUP3, - "CCdcAcmClass::HandleGetCommFeature;\tCountry Code [0x%hx]", iCountryCode ); + + LOGTEXT2(_L8("\tCountry Code [0x%04X]"), iCountryCode); + #endif } break; default: aReturnData.SetLength(0); - OstTrace0( TRACE_NORMAL, CCDCACMCLASS_HANDLEGETCOMMFEATURE_DUP4, "CCdcAcmClass::HandleGetCommFeature;\tBad Selector" ); + LOGTEXT(_L8("\tBad Selector")); ret = KErrUnknown; } - OstTrace1( TRACE_NORMAL, CCDCACMCLASS_HANDLEGETCOMMFEATURE_DUP5, - "CCdcAcmClass::HandleGetCommFeature;ret=%d", ret ); - OstTraceFunctionExit0( CCDCACMCLASS_HANDLEGETCOMMFEATURE_EXIT ); + LOGTEXT2(_L8("<>CCdcAcmClass::HandleClearCommFeature aSelector=%d"), + aSelector); + TInt ret = KErrNone; // check the feature selector from the header and reject if invalid, @@ -380,24 +360,21 @@ { // reset to guaranteed-success default, so ignore return value static_cast(HandleNewAbstractState(EUsbAbstractStateDataMultiplex)); - OstTraceExt1( TRACE_NORMAL, CCDCACMCLASS_HANDLECLEARCOMMFEATURE_DUP1, - "CCdcAcmClass::HandleClearCommFeature;\tAbstract State [0x%hx]", iAcmState ); + LOGTEXT2(_L8("\tAbstract State [0x%04X]"), iAcmState); } break; case EUsbCommFeatureSelectCountryCode: { #if defined(DISABLE_ACM_CF_COUNTRY_SETTING) - - OstTrace0( TRACE_NORMAL, CCDCACMCLASS_HANDLECLEARCOMMFEATURE_DUP2, - "CCdcAcmClass::HandleClearCommFeature;\tCountry Code Not Supported" ); + + LOGTEXT(_L8("\tCountry Code Not Supported")); ret = KErrNotSupported; #elif defined(ENABLE_ACM_CF_COUNTRY_SETTING) HandleNewCountryCode(KUsbCommCountryCode0); - OstTraceExt1( TRACE_NORMAL, CCDCACMCLASS_HANDLECLEARCOMMFEATURE_DUP3, - "CCdcAcmClass::HandleClearCommFeature;\tCountry Code [0x%hx]", iCountryCode ); + LOGTEXT2(_L8("\tCountry Code [0x%04X]"), iCountryCode); #endif } @@ -405,13 +382,12 @@ default: { - OstTrace0( TRACE_NORMAL, CCDCACMCLASS_HANDLECLEARCOMMFEATURE_DUP4, "CCdcAcmClass::HandleClearCommFeature;\tBad Selector" ); + LOGTEXT(_L8("\tBad Selector")); ret = KErrUnknown; } } - OstTrace1( TRACE_NORMAL, CCDCACMCLASS_HANDLECLEARCOMMFEATURE_DUP5, "CCdcAcmClass::HandleClearCommFeature;ret=%d", ret ); - OstTraceFunctionExit0( CCDCACMCLASS_HANDLECLEARCOMMFEATURE_EXIT ); + LOGTEXT2(_L8("<HostConfigChange(epocConfig); } - OstTraceFunctionExit0( CCDCACMCLASS_HANDLESETLINECODING_EXIT_DUP1 ); return KErrNone; } @@ -473,8 +446,6 @@ * defaults. */ { - OstTraceFunctionEntry0( CCDCACMCLASS_SETDEFAULTACM_ENTRY ); - iUsbConfig.iRate = 115200; iUsbConfig.iStopBits = EUsbStopBitOne; iUsbConfig.iParity = EUsbParityNone; @@ -496,7 +467,6 @@ iDcdState = EFalse; iBreakActive = EFalse; - OstTraceFunctionExit0( CCDCACMCLASS_SETDEFAULTACM_EXIT ); } void CCdcAcmClass::ConvertUsbConfigCodingToEpoc(const TUsbConfig& aUsbConfig, @@ -509,8 +479,6 @@ * @param aEpocConfig The EPOC configuration to be converted to. */ { - OstTraceFunctionEntry0( CCDCACMCLASS_CONVERTUSBCONFIGCODINGTOEPOC_ENTRY ); - switch ( aUsbConfig.iDataBits ) { case EUsbDataBitsFive: @@ -617,7 +585,6 @@ break; } } - OstTraceFunctionExit0( CCDCACMCLASS_CONVERTUSBCONFIGCODINGTOEPOC_EXIT ); } TInt CCdcAcmClass::HandleNewAbstractState(const TUint16 aAbstractState) @@ -631,12 +598,14 @@ * D1 controls 'data multiplexed state' -> iAcmDataMultiplex */ { - OstTraceFunctionEntry0( CCDCACMCLASS_HANDLENEWABSTRACTSTATE_ENTRY ); - OstTrace1( TRACE_NORMAL, CCDCACMCLASS_HANDLENEWABSTRACTSTATE, "CCdcAcmClass::HandleNewAbstractState;aAbstractState=%d", (TInt)aAbstractState ); + LOGTEXT2(_L8(">>CCdcAcmClass::HandleNewAbstractState aAbstractState=%d"), + aAbstractState); TBool multiplex; TBool idle; + TUint16 newstate; + TInt ret; // collect local booleans from incoming combo ready to do local @@ -687,23 +656,21 @@ // informed, note that the callback may not have been placed. if( iAcmState != newstate ) { - OstTraceExt1( TRACE_NORMAL, CCDCACMCLASS_HANDLENEWABSTRACTSTATE_DUP1, - "CCdcAcmClass::HandleNewAbstractState;\tNew Combo [0x%hx]", newstate ); + LOGTEXT2(_L8("\tNew Combo [0x%04X]"), newstate); if ( iCallback ) { // If there was such a function in class // MHostPushedChangeObserver, notify // via iCallback->HostAbstractStateChange(newstate); - OstTrace0( TRACE_NORMAL, CCDCACMCLASS_HANDLENEWABSTRACTSTATE_DUP2, - "CCdcAcmClass::HandleNewAbstractState;\tHas No Notification Method in class MHostPushedChangeObserver" ); + LOGTEXT(_L8("\tHas No Notification Method in class MHostPushedChangeObserver")); } } // and save the new state ready for next check iAcmState = newstate; - OstTrace1( TRACE_NORMAL, CCDCACMCLASS_HANDLENEWABSTRACTSTATE_DUP3, "CCdcAcmClass::HandleNewAbstractState;ret=%d", ret ); - OstTraceFunctionExit0( CCDCACMCLASS_HANDLENEWABSTRACTSTATE_EXIT ); + + LOGTEXT2(_L8("<>CCdcAcmClass::HandleNewCountryCode aCountryCode=%d"), + aCountryCode); + TInt ret; #if defined(DISABLE_ACM_CF_COUNTRY_SETTING) @@ -739,8 +707,7 @@ #endif - OstTrace1( TRACE_NORMAL, CCDCACMCLASS_HANDLENEWCOUNTRYCODE_DUP1, "CCdcAcmClass::HandleNewCountryCode;ret=%d", ret ); - OstTraceFunctionExit0( CCDCACMCLASS_HANDLENEWCOUNTRYCODE_EXIT ); + LOGTEXT2(_L8("<>CCdcAcmClass::HandleSetCommFeature aSelector=%d"), + aSelector); // reject any message that has malformed data if ( aData.Length() != 2 ) { - OstTrace1( TRACE_NORMAL, CCDCACMCLASS_HANDLESETCOMMFEATURE_DUP1, - "CCdcAcmClass::HandleSetCommFeature;\t***aData.Length (%d) incorrect", aData.Length() ); - OstTrace1( TRACE_NORMAL, CCDCACMCLASS_HANDLESETCOMMFEATURE_DUP2, - "CCdcAcmClass::HandleSetCommFeature;ret=%d", KErrArgument ); - OstTraceFunctionExit0( CCDCACMCLASS_HANDLESETCOMMFEATURE_EXIT ); + LOGTEXT2(_L8("\t***aData.Length (%d) incorrect"), aData.Length()); + LOGTEXT2(_L8("<[%hu]", - ret, iAcmState, newstate ); + + LOGTEXT4(_L8("\tHandleNewAbstractState=%d [0x%04X]->[0x%04X]"), + ret, iAcmState, newstate); } } break; @@ -825,7 +792,7 @@ { #if defined(DISABLE_ACM_CF_COUNTRY_SETTING) - OstTrace0( TRACE_NORMAL, CCDCACMCLASS_HANDLESETCOMMFEATURE_DUP4, "CCdcAcmClass::HandleSetCommFeature;Country Code Not Supported" ); + LOGTEXT(_L8("Country Code Not Supported")); ret = KErrNotSupported; #elif defined(ENABLE_ACM_CF_COUNTRY_SETTING) @@ -842,8 +809,9 @@ if( newcountry != iCountryCode ) { ret = HandleNewCountryCode(newcountry); - OstTraceExt3( TRACE_NORMAL, CCDCACMCLASS_HANDLESETCOMMFEATURE_DUP5, - "CCdcAcmClass::HandleSetCommFeature;\tHandleNewCountryCode=%d [%u]->[%u]", ret, iCountryCode, newcountry ); + + LOGTEXT4(_L8("\tHandleNewCountryCode=%d [0x%04X]->[0x%04X]"), + ret, iCountryCode, newcountry); } #endif @@ -852,12 +820,12 @@ default: { - OstTrace0( TRACE_NORMAL, CCDCACMCLASS_HANDLESETCOMMFEATURE_DUP6, "CCdcAcmClass::HandleSetCommFeature;\tBad Selector" ); + LOGTEXT(_L8("\tBad Selector")); ret = KErrUnknown; } } - OstTrace1( TRACE_NORMAL, CCDCACMCLASS_HANDLESETCOMMFEATURE_DUP7, "CCdcAcmClass::HandleSetCommFeature;ret=%d", ret ); - OstTraceFunctionExit0( CCDCACMCLASS_HANDLESETCOMMFEATURE_EXIT_DUP1 ); + + LOGTEXT2(_L8("<(iUsbConfig.iParity )); CCdcControlInterface::PutU08(ppbuffer, static_cast(iUsbConfig.iDataBits)); - OstTraceFunctionExit0( CCDCACMCLASS_HANDLEGETLINECODING_EXIT ); return KErrNone; } @@ -896,9 +864,9 @@ * @param aDtrState DTR state. */ { - OstTraceFunctionEntry0( CCDCACMCLASS_HANDLESETCONTROLLINESTATE_ENTRY ); - OstTraceExt2( TRACE_NORMAL, CCDCACMCLASS_HANDLESETCONTROLLINESTATE, - "CCdcAcmClass::HandleSetControlLineState;aRtsState=%d;aDtrState=%d", (TInt)aRtsState, (TInt)aDtrState ); + LOGTEXT3(_L8(">>CCdcAcmClass::HandleSetControlLineState aRtsState=%d, " + "aDtrState=%d"), + aRtsState, aDtrState); iRtsState = aRtsState; iDtrState = aDtrState; @@ -907,8 +875,7 @@ iCallback->HostSignalChange(iDtrState,iRtsState); } - OstTrace0( TRACE_NORMAL, CCDCACMCLASS_HANDLESETCONTROLLINESTATE_DUP1, "CCdcAcmClass::HandleSetControlLineState;ret=0" ); - OstTraceFunctionExit0( CCDCACMCLASS_HANDLESETCONTROLLINESTATE_EXIT ); + LOGTEXT(_L8("<>CCdcAcmClass::SendSerialState aRing=%d, " + "aDsr=%d, aDcd=%d"), + aRing, aDsr, aDcd); // stub non-supported flags TBool overrun = EFalse; @@ -985,8 +952,7 @@ aDsr, aDcd); - OstTrace1( TRACE_NORMAL, CCDCACMCLASS_SENDSERIALSTATE_DUP1, "CCdcAcmClass::SendSerialState;ret=%d", ret ); - OstTraceFunctionExit0( CCDCACMCLASS_SENDSERIALSTATE_EXIT ); + LOGTEXT2(_L8("<BreakRequest(aRequester, aState, aDelay); - OstTrace1( TRACE_NORMAL, CCDCACMCLASS_BREAKREQUEST_DUP1, "CCdcAcmClass::BreakRequest;err=%d", err ); - OstTraceFunctionExit0( CCDCACMCLASS_BREAKREQUEST_EXIT ); + LOGTEXT2(_L8("\tBreakRequest = %d"), err); return err; } @@ -1108,16 +1056,12 @@ * @param aObserver The observer to notify completion to. */ { - OstTraceFunctionEntry0( CCDCACMCLASS_NOTIFYDATAAVAILABLE_ENTRY ); - OstTraceExt1( TRACE_NORMAL, CCDCACMCLASS_NOTIFYDATAAVAILABLE, "CCdcAcmClass::NotifyDataAvailable;aObserver=%p", &aObserver ); + LOGTEXT2(_L8(">>CCdcAcmClass::NotifyDataAvailable aObserver=0x%08x"), &aObserver); - if (!iData) - { - OstTraceExt1( TRACE_FATAL, CCDCACMCLASS_NOTIFYDATAAVAILABLE_DUP1, "CCdcAcmClass::NotifyDataAvailable;iData=%p", iData ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iData, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iData->NotifyDataAvailable(aObserver); - OstTraceFunctionExit0( CCDCACMCLASS_NOTIFYDATAAVAILABLE_EXIT ); + + LOGTEXT(_L8("<CancelNotifyDataAvailable(); - OstTraceFunctionExit0( CCDCACMCLASS_NOTIFYDATAAVAILABLECANCEL_EXIT ); } // diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcControlInterface.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcControlInterface.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcControlInterface.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -25,12 +25,12 @@ #include "CdcAcmClass.h" #include "AcmPanic.h" #include "AcmUtils.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CdcControlInterfaceTraces.h" +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif - CCdcControlInterface::CCdcControlInterface(const TUint8 aProtocolNum, const TDesC16& aIfcName) /** * Constructor using interface name. @@ -41,8 +41,6 @@ iSerialState(0xFFFF), iProtocolNum(aProtocolNum) { - OstTraceFunctionEntry0( CCDCCONTROLINTERFACE_CCDCCONTROLINTERFACE_CONS_ENTRY ); - OstTraceFunctionExit0( CCDCCONTROLINTERFACE_CCDCCONTROLINTERFACE_CONS_EXIT ); } CCdcControlInterface* CCdcControlInterface::NewL(CCdcAcmClass& aParent, const TUint8 aProtocolNum, const TDesC16& aIfcName) @@ -56,14 +54,14 @@ * @return A pointer to the new object */ { - OstTraceFunctionEntry0( CCDCCONTROLINTERFACE_NEWL_ENTRY ); - OstTraceExt1( TRACE_NORMAL, CCDCCONTROLINTERFACE_NEWL, "CCdcControlInterface::NewL;\tControl Ifc Name = %S", aIfcName ); + LOG_STATIC_FUNC_ENTRY + + LOGTEXT2(_L("\tControl Ifc Name = %S"), &aIfcName); CCdcControlInterface* self = new(ELeave) CCdcControlInterface(aProtocolNum, aIfcName); CleanupStack::PushL(self); self->ConstructL(aParent); CLEANUPSTACK_POP(self); - OstTraceFunctionExit0( CCDCCONTROLINTERFACE_NEWL_EXIT ); return self; } @@ -75,13 +73,11 @@ * @param aParent The ACM class. */ { - OstTraceFunctionEntry0( CCDCCONTROLINTERFACE_CONSTRUCTL_ENTRY ); - BaseConstructL(); iReader = CCdcControlInterfaceReader::NewL(aParent, iLdd); - OstTrace1( TRACE_NORMAL, CCDCCONTROLINTERFACE_CONSTRUCTL, "CCdcControlInterface::ConstructL;iProtocolNum=%d", (TInt)iProtocolNum ); - OstTraceFunctionExit0( CCDCCONTROLINTERFACE_CONSTRUCTL_EXIT ); + + LOGTEXT2(_L8("\tcreated CdcControlInterface iProtocolNum = %d"), iProtocolNum); } TInt CCdcControlInterface::SetUpInterface() @@ -90,29 +86,25 @@ * endpoint and, if found, configuring the interface. */ { - OstTraceFunctionEntry0( CCDCCONTROLINTERFACE_SETUPINTERFACE_ENTRY ); + LOGTEXT(_L8(">>CCdcControlInterface::SetUpInterface")); TUsbDeviceCaps dCaps; TInt ret = iLdd.DeviceCaps(dCaps); - OstTrace0( TRACE_NORMAL, CCDCCONTROLINTERFACE_SETUPINTERFACE, "CCdcControlInterface::SetUpInterface;\tchecking result of DeviceCaps" ); + LOGTEXT(_L8("\tchecking result of DeviceCaps")); if ( ret ) { - OstTrace1( TRACE_NORMAL, CCDCCONTROLINTERFACE_SETUPINTERFACE_DUP1, "CCdcControlInterface::SetUpInterface;ret=%d", ret ); - OstTraceFunctionExit0( CCDCCONTROLINTERFACE_SETUPINTERFACE_EXIT ); + LOGTEXT2(_L8("<(dCaps().iTotalEndpoints); - OstTrace1( TRACE_NORMAL, CCDCCONTROLINTERFACE_SETUPINTERFACE_DUP2, - "CCdcControlInterface::SetUpInterface;totalEndpoints=%d", (TInt)totalEndpoints ); - + LOGTEXT2(_L8("\tiTotalEndpoints = %d"), totalEndpoints); if ( totalEndpoints < KRequiredNumberOfEndpoints ) { - OstTrace1( TRACE_NORMAL, CCDCCONTROLINTERFACE_SETUPINTERFACE_DUP3, - "CCdcControlInterface::SetUpInterface;ret=%d", KErrGeneral ); - OstTraceFunctionExit0( CCDCCONTROLINTERFACE_SETUPINTERFACE_EXIT_DUP1 ); + LOGTEXT2(_L8("<(data), sizeof(data), sizeof(data)); ret = iLdd.EndpointCaps(dataptr); - OstTrace0( TRACE_NORMAL, CCDCCONTROLINTERFACE_SETUPINTERFACE_DUP4, - "CCdcControlInterface::SetUpInterface;\tchecking result of EndpointCaps" ); - + LOGTEXT(_L8("\tchecking result of EndpointCaps")); if ( ret ) { - OstTrace1( TRACE_NORMAL, CCDCCONTROLINTERFACE_SETUPINTERFACE_DUP5, "CCdcControlInterface::SetUpInterface;ret=%d", ret ); - OstTraceFunctionExit0( CCDCCONTROLINTERFACE_SETUPINTERFACE_EXIT_DUP2 ); + LOGTEXT2(_L8("<( wLength & 0x00ff); iBuffer[7] = static_cast((wLength & 0xff00) >> 8); - OstTraceFunctionExit0( TUSBNOTIFICATIONNETWORKCONNECTION_PACKBUFFER_EXIT ); return iBuffer; } @@ -338,9 +309,8 @@ * @return Error. */ { - OstTraceFunctionEntry0( CCDCCONTROLINTERFACE_SENDNETWORKCONNECTION_ENTRY ); - OstTrace1( TRACE_NORMAL, CCDCCONTROLINTERFACE_SENDNETWORKCONNECTION, - "CCdcControlInterface::SendNetworkConnection;aValue=%d", (TInt)aValue ); + LOGTEXT2(_L8(">>CCdcControlInterface::SendNetworkConnection aValue=%d"), + aValue); // form the message and prime it down to the interrupt handler // (that is 'interrupt' in the USB sense) @@ -359,9 +329,7 @@ notification.PackBuffer(), notification.PackBuffer().Length()); - OstTrace1( TRACE_NORMAL, CCDCCONTROLINTERFACE_SENDNETWORKCONNECTION_DUP1, - "CCdcControlInterface::SendNetworkConnection;ret=%d", ret ); - OstTraceFunctionExit0( CCDCCONTROLINTERFACE_SENDNETWORKCONNECTION_EXIT ); + LOGTEXT2(_L8("<( wData & 0x00ff); iBuffer[9] = static_cast((wData & 0xff00) >> 8); - OstTraceFunctionExit0( TUSBNOTIFICATIONSERIALSTATE_PACKBUFFER_EXIT ); return iBuffer; } @@ -434,22 +399,14 @@ * @return Error. */ { - OstTraceFunctionEntry0( CCDCCONTROLINTERFACE_SENDSERIALSTATE_ENTRY ); - - OstTrace1( TRACE_DUMP, CCDCCONTROLINTERFACE_SENDSERIALSTATE, - "CCdcControlInterface::SendSerialState;aOverRun=%d", (TInt)aOverRun ); - OstTrace1( TRACE_DUMP, CCDCCONTROLINTERFACE_SENDSERIALSTATE_DUP1, - "CCdcControlInterface::SendSerialState;aParity=%d", (TInt)aParity ); - OstTrace1( TRACE_DUMP, CCDCCONTROLINTERFACE_SENDSERIALSTATE_DUP2, - "CCdcControlInterface::SendSerialState;aFraming=%d", (TInt)aFraming ); - OstTrace1( TRACE_DUMP, CCDCCONTROLINTERFACE_SENDSERIALSTATE_DUP3, - "CCdcControlInterface::SendSerialState;aRing=%d", (TInt)aRing ); - OstTrace1( TRACE_DUMP, CCDCCONTROLINTERFACE_SENDSERIALSTATE_DUP4, - "CCdcControlInterface::SendSerialState;aBreak=%d", (TInt)aBreak ); - OstTrace1( TRACE_DUMP, CCDCCONTROLINTERFACE_SENDSERIALSTATE_DUP5, - "CCdcControlInterface::SendSerialState;aTxCarrier=%d", (TInt)aTxCarrier ); - OstTrace1( TRACE_DUMP, CCDCCONTROLINTERFACE_SENDSERIALSTATE_DUP6, - "CCdcControlInterface::SendSerialState;aRxCarrier=%d", (TInt)aRxCarrier ); + LOG_FUNC + LOGTEXT2(_L8("\taOverRun=%d"), aOverRun); + LOGTEXT2(_L8("\taParity=%d"), aParity); + LOGTEXT2(_L8("\taFraming=%d"), aFraming); + LOGTEXT2(_L8("\taRing=%d"), aRing); + LOGTEXT2(_L8("\taBreak=%d"), aBreak); + LOGTEXT2(_L8("\taTxCarrier=%d"), aTxCarrier); + LOGTEXT2(_L8("\taRxCarrier=%d"), aRxCarrier); // First work out what might need to be sent by assembling the bits into // the correct places. See CDC spec table 69 (UART state bitmap values). @@ -469,9 +426,7 @@ // send it off. if ( data == iSerialState ) { - OstTrace0( TRACE_NORMAL, CCDCCONTROLINTERFACE_SENDSERIALSTATE_DUP7, - "CCdcControlInterface::SendSerialState;\tdata == iSerialState" ); - OstTraceFunctionExit0( CCDCCONTROLINTERFACE_SENDSERIALSTATE_EXIT ); + LOGTEXT(_L8("\tdata == iSerialState")); return KErrNone; } @@ -496,8 +451,8 @@ TInt ret = WriteData( EEndpoint1, notification.PackBuffer(), notification.PackBuffer().Length()); - OstTrace1( TRACE_NORMAL, CCDCCONTROLINTERFACE_SENDSERIALSTATE_DUP8, "CCdcControlInterface::SendSerialState;ret=%d", ret ); - OstTraceFunctionExit0( DUP1_CCDCCONTROLINTERFACE_SENDSERIALSTATE_EXIT ); + LOGTEXT2(_L8("\tWriteData = %d"), ret); + return ret; } @@ -512,25 +467,20 @@ * @param aLength */ { - OstTraceFunctionEntry0( CCDCCONTROLINTERFACE_WRITEDATA_ENTRY ); - OstTrace1( TRACE_NORMAL, CCDCCONTROLINTERFACE_WRITEDATA, "CCdcControlInterface::WriteData;aEndPoint=%d", (TInt)aEndPoint ); + LOG_FUNC + LOGTEXT2(_L8("\taEndpoint=%d"), aEndPoint); TInt ret; RTimer timer; ret = timer.CreateLocal(); if ( ret ) { - OstTrace1( TRACE_NORMAL, CCDCCONTROLINTERFACE_WRITEDATA_DUP1, - "CCdcControlInterface::WriteData;\ttimer.CreateLocal = %d- returning", ret ); - - OstTraceFunctionExit0( CCDCCONTROLINTERFACE_WRITEDATA_EXIT ); + LOGTEXT2(_L8("\ttimer.CreateLocal = %d- returning"), ret); return ret; } TRequestStatus status; TRequestStatus timerStatus; - OstTrace0( TRACE_NORMAL, CCDCCONTROLINTERFACE_WRITEDATA_DUP2, - "CCdcControlInterface::WriteData;\tAttempting to write data to control interface" ); - + LOGTEXT(_L8("\tAttempting to write data to control interface")); iLdd.Write(status, aEndPoint, aDes, aLength); timer.After(timerStatus, KWriteDataTimeout); User::WaitForRequest(status, timerStatus); @@ -538,25 +488,20 @@ { // Timeout occurred, silently ignore error condition. // Assuming that the line has been disconnected - OstTrace0( TRACE_NORMAL, CCDCCONTROLINTERFACE_WRITEDATA_DUP3, - "CCdcControlInterface::WriteData;CCdcControlInterface::WriteData() - Timeout occurred" ); - + LOGTEXT(_L8("CCdcControlInterface::WriteData() - Timeout occurred")); iLdd.WriteCancel(aEndPoint); User::WaitForRequest(status); ret = timerStatus.Int(); } else { - OstTrace0( TRACE_NORMAL, CCDCCONTROLINTERFACE_WRITEDATA_DUP4, - "CCdcControlInterface::WriteData;CCdcControlInterface::WriteData() - Write completed" ); - + LOGTEXT(_L8("CCdcControlInterface::WriteData() - Write completed")); timer.Cancel(); User::WaitForRequest(timerStatus); ret = status.Int(); } - OstTrace1( TRACE_NORMAL, CCDCCONTROLINTERFACE_WRITEDATA_DUP5, "CCdcControlInterface::WriteData;ret=%d", ret ); - OstTraceFunctionExit0( CCDCCONTROLINTERFACE_WRITEDATA_EXIT_DUP1 ); + LOGTEXT2(_L8("\treturning %d"), ret); return ret; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcControlInterfaceReader.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcControlInterfaceReader.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcControlInterfaceReader.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -22,12 +22,12 @@ #include "AcmUtils.h" #include "CdcControlInterfaceRequestHandler.h" #include "AcmConstants.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CdcControlInterfaceReaderTraces.h" +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif - CCdcControlInterfaceReader::CCdcControlInterfaceReader( MCdcCommsClassRequestHandler& aParent, RDevUsbcClient& aLdd) @@ -41,10 +41,8 @@ * @param aLdd The USB LDD handle to be used. */ { - OstTraceFunctionEntry0( CCDCCONTROLINTERFACEREADER_CCDCCONTROLINTERFACEREADER_CONS_ENTRY ); CActiveScheduler::Add(this); ReadMessageHeader(); - OstTraceFunctionExit0( CCDCCONTROLINTERFACEREADER_CCDCCONTROLINTERFACEREADER_CONS_EXIT ); } CCdcControlInterfaceReader::~CCdcControlInterfaceReader() @@ -52,9 +50,9 @@ * Destructor */ { - OstTraceFunctionEntry0( CCDCCONTROLINTERFACEREADER_CCDCCONTROLINTERFACEREADER_DES_ENTRY ); + LOG_FUNC + Cancel(); //Call CActive::Cancel() - OstTraceFunctionExit0( CCDCCONTROLINTERFACEREADER_CCDCCONTROLINTERFACEREADER_DES_EXIT ); } CCdcControlInterfaceReader* CCdcControlInterfaceReader::NewL( @@ -67,11 +65,11 @@ * @param aLdd The USB LDD handle to be used. */ { - OstTraceFunctionEntry0( CCDCCONTROLINTERFACEREADER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY + CCdcControlInterfaceReader* self = new(ELeave) CCdcControlInterfaceReader( aParent, aLdd); - OstTraceFunctionExit0( CCDCCONTROLINTERFACEREADER_NEWL_EXIT ); return self; } @@ -80,10 +78,9 @@ * This function will be called when a read completes. */ { - OstTraceFunctionEntry0( CCDCCONTROLINTERFACEREADER_RUNL_ENTRY ); - OstTrace1( TRACE_NORMAL, CCDCCONTROLINTERFACEREADER_RUNL, "CCdcControlInterfaceReader::RunL;iStatus=%d", iStatus.Int() ); + LOGTEXT2(_L8(">>CCdcControlInterfaceReader::RunL iStatus=%d"), iStatus.Int()); HandleReadCompletion(iStatus.Int()); - OstTraceFunctionExit0( CCDCCONTROLINTERFACEREADER_RUNL_EXIT ); + LOGTEXT(_L8("<>CCdcControlInterfaceReader::HandleReadCompletion " + "aError=%d"), aError); if ( aError ) { - ReadMessageHeader(); - OstTrace0( TRACE_NORMAL, CCDCCONTROLINTERFACEREADER_HANDLEREADCOMPLETION_DUP1, - "CCdcControlInterfaceReader::HandleReadCompletion" ); - OstTraceFunctionExit0( CCDCCONTROLINTERFACEREADER_HANDLEREADCOMPLETION_EXIT ); + ReadMessageHeader(); + LOGTEXT(_L8("<(iLdd.EndpointZeroRequestError()); ReadMessageHeader(); - OstTraceFunctionExit0( CCDCCONTROLINTERFACEREADER_DECODEMESSAGEHEADER_EXIT ); return; } - OstTrace1( TRACE_NORMAL, CCDCCONTROLINTERFACEREADER_DECODEMESSAGEHEADER_DUP1, - "CCdcControlInterfaceReader::DecodeMessageHeader;\t- New read! Request %d", (TInt)iRequestHeader.iRequest ); - + LOGTEXT2(_L8("\t- New read! Request 0x%x"), iRequestHeader.iRequest); + if ( iRequestHeader.IsDataResponseRequired() ) { DecodeMessageDataWithResponseRequired(); @@ -185,7 +171,6 @@ { ReadMessageData(iRequestHeader.iLength); } - OstTraceFunctionExit0( DUP1_CCDCCONTROLINTERFACEREADER_DECODEMESSAGEHEADER_EXIT ); } void CCdcControlInterfaceReader::DecodeMessageDataWithResponseRequired() @@ -193,11 +178,11 @@ * Decode a message which requires data to be sent to the host in response. */ { - OstTraceFunctionEntry0( CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATAWITHRESPONSEREQUIRED_ENTRY ); - OstTraceExt1( TRACE_NORMAL, CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATAWITHRESPONSEREQUIRED, - "CCdcControlInterfaceReader::DecodeMessageDataWithResponseRequired;\t- New read! Request=%hhx", iRequestHeader.iRequest ); - + LOG_FUNC + + LOGTEXT2(_L8("\t- New read! Request 0x%x"), iRequestHeader.iRequest); TBuf8 returnBuffer; + switch ( iRequestHeader.iRequest ) { case KGetEncapsulated: @@ -263,10 +248,8 @@ default: { - OstTrace1( TRACE_NORMAL, CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATAWITHRESPONSEREQUIRED_DUP1, - "CCdcControlInterfaceReader::DecodeMessageDataWithResponseRequired;\t- request number not recognised (%d)", - (TInt)(iRequestHeader.iRequest) ); - + LOGTEXT2(_L8("\t- request number not recognised (%d)"), + iRequestHeader.iRequest); // Stall bus- unknown message. If this fails, there's nothing we can // do. static_cast(iLdd.EndpointZeroRequestError()); @@ -275,7 +258,6 @@ } ReadMessageHeader(); - OstTraceFunctionExit0( CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATAWITHRESPONSEREQUIRED_EXIT ); } void CCdcControlInterfaceReader::DecodeMessageData() @@ -286,20 +268,17 @@ * can be nack'ed by signalling an endpoint zero request error. */ { - OstTraceFunctionEntry0( CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATA_ENTRY ); + LOG_FUNC + if ( iMessageData.Length() != iRequestHeader.iLength ) { - OstTrace0( TRACE_NORMAL, CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATA, - "CCdcControlInterfaceReader::DecodeMessageData;\t- Data length is incorrect" ); - + LOGTEXT(_L8("\t- Data length is incorrect")); ReadMessageHeader(); - OstTraceFunctionExit0( CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATA_EXIT ); return; } - OstTrace1( TRACE_NORMAL, CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATA_DUP1, - "CCdcControlInterfaceReader::DecodeMessageData;\tNew read! Request %d", (TInt)(iRequestHeader.iRequest) ); - + LOGTEXT2(_L8("\tNew read! Request %d"), iRequestHeader.iRequest); + switch ( iRequestHeader.iRequest ) { case KSendEncapsulated: @@ -387,9 +366,8 @@ } break; default: - OstTrace1( TRACE_NORMAL, CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATA_DUP2, - "CCdcControlInterfaceReader::DecodeMessageData;\t***request number not recognised (%d)", (TInt)(iRequestHeader.iRequest) ); - + LOGTEXT2(_L8("\t***request number not recognised (%d)"), + iRequestHeader.iRequest); // Stall bus- unknown message. If this fails, there's nothing we can // do. static_cast(iLdd.EndpointZeroRequestError()); @@ -397,7 +375,6 @@ } ReadMessageHeader(); - OstTraceFunctionExit0( CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATA_EXIT_DUP1 ); } void CCdcControlInterfaceReader::ReadMessageHeader() @@ -406,11 +383,12 @@ * message header. */ { - OstTraceFunctionEntry0( CCDCCONTROLINTERFACEREADER_READMESSAGEHEADER_ENTRY ); + LOG_FUNC + iState = EWaitingForHeader; + iLdd.ReadPacket(iStatus, EEndpoint0, iMessageHeader, KUsbRequestHdrSize); SetActive(); - OstTraceFunctionExit0( CCDCCONTROLINTERFACEREADER_READMESSAGEHEADER_EXIT ); } void CCdcControlInterfaceReader::ReadMessageData(TUint aLength) @@ -421,14 +399,14 @@ * @param aLength Length of data to read. */ { - OstTraceFunctionEntry0( CCDCCONTROLINTERFACEREADER_READMESSAGEDATA_ENTRY ); - OstTrace1( TRACE_NORMAL, CCDCCONTROLINTERFACEREADER_READMESSAGEDATA, - "CCdcControlInterfaceReader::ReadMessageData;\tqueuing read, length = %d", (TInt)aLength ); + LOG_FUNC + + LOGTEXT2(_L8("\tqueuing read, length = %d"),aLength); iState = EWaitingForData; + iLdd.Read(iStatus, EEndpoint0, iMessageData, static_cast(aLength)); SetActive(); - OstTraceFunctionExit0( CCDCCONTROLINTERFACEREADER_READMESSAGEDATA_EXIT ); } // diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcDataInterface.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcDataInterface.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcDataInterface.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -23,12 +23,12 @@ #include "AcmUtils.h" #include "ActiveReadOneOrMoreReader.h" #include "ActiveDataAvailableNotifier.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CdcDataInterfaceTraces.h" +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif - #ifdef __HEADLESS_ACM_TEST_CODE__ #pragma message ("Building headless ACM (performance test code for RDevUsbcClient)") #endif // __HEADLESS_ACM_TEST_CODE__ @@ -41,8 +41,6 @@ : CCdcInterfaceBase(aIfcName), iPacketSize(KDefaultMaxPacketTypeBulk) { - OstTraceFunctionEntry0( CCDCDATAINTERFACE_CCDCDATAINTERFACE_CONS_ENTRY ); - OstTraceFunctionExit0( CCDCDATAINTERFACE_CCDCDATAINTERFACE_CONS_EXIT ); } CCdcDataInterface* CCdcDataInterface::NewL(const TDesC16& aIfcName) @@ -55,13 +53,14 @@ * @return A pointer to the new object */ { - OstTraceFunctionEntry0( CCDCDATAINTERFACE_NEWL_ENTRY ); - OstTraceExt1( TRACE_NORMAL, CCDCDATAINTERFACE_NEWL, "CCdcDataInterface::NewL;\tData Ifc Name = %S", aIfcName ); + LOG_STATIC_FUNC_ENTRY + + LOGTEXT2(_L("\tData Ifc Name = %S"), &aIfcName); + CCdcDataInterface* self = new (ELeave) CCdcDataInterface(aIfcName); CleanupStack::PushL(self); self->ConstructL(); CLEANUPSTACK_POP(self); - OstTraceFunctionExit0( CCDCDATAINTERFACE_NEWL_EXIT ); return self; } @@ -73,9 +72,8 @@ * @param aParent Observer. */ { - OstTraceFunctionEntry0( CCDCDATAINTERFACE_CONSTRUCTL_ENTRY ); - BaseConstructL(); + iReadOneOrMoreReader = CActiveReadOneOrMoreReader::NewL(*this, iLdd, EEndpoint2); iReader = CActiveReader::NewL(*this, iLdd, EEndpoint2); iDataAvailableNotifier = CActiveDataAvailableNotifier::NewL(*this, iLdd, EEndpoint2); @@ -86,7 +84,6 @@ iHostCanHandleZLPs = (KUsbAcmHostCanHandleZLPs != 0); - OstTraceFunctionExit0( CCDCDATAINTERFACE_CONSTRUCTL_EXIT ); } TInt CCdcDataInterface::SetUpInterface() @@ -96,15 +93,14 @@ * descriptor for the endpoints is registered with the LDD. */ { - OstTraceFunctionEntry0( CCDCDATAINTERFACE_SETUPINTERFACE_ENTRY ); + LOGTEXT(_L8(">>CCdcDataInterface::SetUpInterface")); TUsbDeviceCaps dCaps; TInt ret = iLdd.DeviceCaps(dCaps); - OstTrace0( TRACE_NORMAL, CCDCDATAINTERFACE_SETUPINTERFACE, "CCdcDataInterface::SetUpInterface;\tchecking result of DeviceCaps" ); + LOGTEXT(_L8("\tchecking result of DeviceCaps")); if ( ret ) { - OstTrace1( TRACE_NORMAL, CCDCDATAINTERFACE_SETUPINTERFACE_DUP1, "CCdcDataInterface::SetUpInterface;ret=%d", ret ); - OstTraceFunctionExit0( CCDCDATAINTERFACE_SETUPINTERFACE_EXIT ); + LOGTEXT2(_L8("<(dCaps().iTotalEndpoints); - OstTrace1( TRACE_NORMAL, CCDCDATAINTERFACE_SETUPINTERFACE_DUP2, - "CCdcDataInterface::SetUpInterface;totalEndpoints=%d", (TInt)totalEndpoints ); - + LOGTEXT2(_L8("\tiTotalEndpoints = %d"), totalEndpoints); if ( totalEndpoints < KRequiredNumberOfEndpoints ) { - OstTrace1( TRACE_NORMAL, CCDCDATAINTERFACE_SETUPINTERFACE_DUP3, "CCdcDataInterface::SetUpInterface;ret=%d", KErrGeneral ); - OstTraceFunctionExit0( CCDCDATAINTERFACE_SETUPINTERFACE_EXIT_DUP1 ); + LOGTEXT2(_L8("<(data), sizeof(data), sizeof(data)); ret = iLdd.EndpointCaps(dataptr); - OstTrace0( TRACE_NORMAL, CCDCDATAINTERFACE_SETUPINTERFACE_DUP9, "CCdcDataInterface::SetUpInterface;\tchecking result of EndpointCaps" ); + LOGTEXT(_L8("\tchecking result of EndpointCaps")); if ( ret ) { - OstTrace1( TRACE_NORMAL, CCDCDATAINTERFACE_SETUPINTERFACE_DUP4, "CCdcDataInterface::SetUpInterface;ret=%d", ret ); - OstTraceFunctionExit0( CCDCDATAINTERFACE_SETUPINTERFACE_EXIT_DUP2 ); + LOGTEXT2(_L8("<Write(aDes, aLen, EFalse); } - OstTraceFunctionExit0( CCDCDATAINTERFACE_WRITE_EXIT ); + LOGTEXT(_L8("<>CCdcDataInterface::WriteCompleted aError=%d"), aError); #ifdef __HEADLESS_ACM_TEST_CODE__ // Issue another Read or ReadOneOrMore as appropriate. // If the Write completed with an error, we panic, as it's invalidating // the test. - if (aError != KErrNone) - { - OstTrace1( TRACE_FATAL, CCDCDATAINTERFACE_WRITECOMPLETED_DUP1, "CCdcDataInterface::WriteCompleted;aError=%d", aError ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(aError == KErrNone, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); switch ( iHeadlessReadType ) { case ERead: - OstTrace1( TRACE_NORMAL, CCDCDATAINTERFACE_WRITECOMPLETED_DUP2, - "CCdcDataInterface::WriteCompleted;__HEADLESS_ACM_TEST_CODE__- issuing Read for %d bytes", iHeadlessReadLength ); - - if (!iReader) - { - OstTraceExt1( TRACE_FATAL, CCDCDATAINTERFACE_WRITECOMPLETED_DUP3, "CCdcDataInterface::WriteCompleted;iReader=%p", iReader ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + LOGTEXT2(_L8("__HEADLESS_ACM_TEST_CODE__- issuing Read for %d bytes"), + iHeadlessReadLength); + __ASSERT_DEBUG(iReader, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iReader->Read(iHeadlessAcmBuffer, iHeadlessReadLength); break; case EReadOneOrMore: - OstTrace1( TRACE_NORMAL, CCDCDATAINTERFACE_WRITECOMPLETED_DUP4, - "CCdcDataInterface::WriteCompleted;__HEADLESS_ACM_TEST_CODE__- issuing ReadOneOrMore for %d bytes", iHeadlessReadLength ); - - if (!iReadOneOrMoreReader) - { - OstTraceExt1( TRACE_FATAL, CCDCDATAINTERFACE_WRITECOMPLETED_DUP5, - "CCdcDataInterface::WriteCompleted;iReadOneOrMoreReader=%p", iReadOneOrMoreReader ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + LOGTEXT2(_L8("__HEADLESS_ACM_TEST_CODE__- issuing ReadOneOrMore for %d bytes"), + iHeadlessReadLength); + __ASSERT_DEBUG(iReadOneOrMoreReader, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iReadOneOrMoreReader->ReadOneOrMore(iHeadlessAcmBuffer, iHeadlessReadLength); break; case EUnknown: default: - OstTrace0( TRACE_FATAL, CCDCDATAINTERFACE_WRITECOMPLETED_DUP6, "CCdcDataInterface::WriteCompleted;EPanicInternalError" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); + _USB_PANIC(KAcmPanicCat, EPanicInternalError); break; } #else // In case the write observer wants to post another write synchronously on // being informed that this write has completed, use this little 'temp' // fiddle. - if (!iWriteObserver) - { - OstTraceExt1( TRACE_FATAL, CCDCDATAINTERFACE_WRITECOMPLETED_DUP7, - "CCdcDataInterface::WriteCompleted;iWriteObserver=%p", iWriteObserver ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iWriteObserver, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); MWriteObserver* temp = iWriteObserver; iWriteObserver = NULL; - OstTrace0( TRACE_NORMAL, CCDCDATAINTERFACE_WRITECOMPLETED_DUP8, - "CCdcDataInterface::WriteCompleted;\tcalling WriteCompleted on observer" ); + LOGTEXT(_L8("\tcalling WriteCompleted on observer")); temp->WriteCompleted(aError); #endif // __HEADLESS_ACM_TEST_CODE__ - OstTraceFunctionExit0( CCDCDATAINTERFACE_WRITECOMPLETED_EXIT ); + LOGTEXT(_L8("<Cancel(); + iWriteObserver = NULL; - OstTraceFunctionExit0( CCDCDATAINTERFACE_CANCELWRITE_EXIT ); } void CCdcDataInterface::Read(MReadObserver& aObserver, @@ -385,42 +345,27 @@ * @param aMaxLen Number of bytes to read */ { - OstTraceFunctionEntry0( CCDCDATAINTERFACE_READ_ENTRY ); - + LOG_FUNC + #ifdef __HEADLESS_ACM_TEST_CODE__ - OstTrace0( TRACE_NORMAL, CCDCDATAINTERFACE_READ, "CCdcDataInterface::Read;__HEADLESS_ACM_TEST_CODE__" ); + LOGTEXT(_L8("__HEADLESS_ACM_TEST_CODE__")); // Issue a Read using our special internal buffer. iHeadlessReadType = ERead; iHeadlessReadLength = aMaxLen; static_cast(&aObserver); static_cast(&aDes); - if (aMaxLen > iHeadlessAcmBuffer.MaxLength()) - { - OstTrace1( TRACE_FATAL, CCDCDATAINTERFACE_READ_DUP1, "CCdcDataInterface::Read;aMaxLen=%d", aMaxLen ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } - if (!iReader) - { - OstTraceExt1( TRACE_FATAL, CCDCDATAINTERFACE_READ_DUP2, "CCdcDataInterface::Read;iReader=%p", iReader ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(aMaxLen <= iHeadlessAcmBuffer.MaxLength(), + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); + __ASSERT_DEBUG(iReader, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iReader->Read(iHeadlessAcmBuffer, aMaxLen); #else - if (iReadObserver) - { - OstTraceExt1( TRACE_FATAL, CCDCDATAINTERFACE_READ_DUP3, "CCdcDataInterface::Read;iReadObserver=%p", iReadObserver ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(!iReadObserver, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iReadObserver = &aObserver; - if (!iReader) - { - OstTraceExt1( TRACE_FATAL, CCDCDATAINTERFACE_READ_DUP4, "CCdcDataInterface::Read;iReader=%p", iReader ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } - + + __ASSERT_DEBUG(iReader, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iReader->Read(aDes, aMaxLen); #endif // __HEADLESS_ACM_TEST_CODE__ - OstTraceFunctionExit0( CCDCDATAINTERFACE_READ_EXIT ); } void CCdcDataInterface::ReadOneOrMore(MReadOneOrMoreObserver& aObserver, @@ -435,45 +380,29 @@ * @param aMaxLen Number of bytes to read */ { - OstTraceFunctionEntry0( CCDCDATAINTERFACE_READONEORMORE_ENTRY ); - + LOG_FUNC #ifdef __HEADLESS_ACM_TEST_CODE__ - OstTrace0( TRACE_NORMAL, CCDCDATAINTERFACE_READONEORMORE, "CCdcDataInterface::ReadOneOrMore;__HEADLESS_ACM_TEST_CODE__" ); + LOGTEXT(_L8("__HEADLESS_ACM_TEST_CODE__")); // Issue a ReadOneOrMore using our special internal buffer. iHeadlessReadType = EReadOneOrMore; iHeadlessReadLength = aMaxLen; static_cast(&aObserver); static_cast(&aDes); - if (aMaxLen > iHeadlessAcmBuffer.MaxLength()) - { - OstTrace1( TRACE_FATAL, CCDCDATAINTERFACE_READONEORMORE_DUP1, "CCdcDataInterface::ReadOneOrMore;aMaxLen=%d", aMaxLen ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } - if (!iReadOneOrMoreReader) - { - OstTraceExt1( TRACE_FATAL, CCDCDATAINTERFACE_READONEORMORE_DUP2, - "CCdcDataInterface::ReadOneOrMore;iReadOneOrMoreReader=%p", iReadOneOrMoreReader ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(aMaxLen <= iHeadlessAcmBuffer.MaxLength(), + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); + __ASSERT_DEBUG(iReadOneOrMoreReader, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iReadOneOrMoreReader->ReadOneOrMore(iHeadlessAcmBuffer, aMaxLen); #else - if (iReadOneOrMoreObserver) - { - OstTraceExt1( TRACE_FATAL, CCDCDATAINTERFACE_READONEORMORE_DUP3, - "CCdcDataInterface::ReadOneOrMore;iReadOneOrMoreObserver=%p", iReadOneOrMoreObserver ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(!iReadOneOrMoreObserver, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iReadOneOrMoreObserver = &aObserver; - if (!iReadOneOrMoreReader) - { - OstTraceExt1( TRACE_FATAL, CCDCDATAINTERFACE_READONEORMORE_DUP4, - "CCdcDataInterface::ReadOneOrMore;iReadOneOrMoreObserver=%p", iReadOneOrMoreObserver ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + + __ASSERT_DEBUG(iReadOneOrMoreReader, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iReadOneOrMoreReader->ReadOneOrMore(aDes, aMaxLen); #endif // __HEADLESS_ACM_TEST_CODE__ - OstTraceFunctionExit0( CCDCDATAINTERFACE_READONEORMORE_EXIT ); } void CCdcDataInterface::ReadOneOrMoreCompleted(TInt aError) @@ -484,47 +413,31 @@ * @param aError The result of the read request. */ { - OstTraceFunctionEntry0( CCDCDATAINTERFACE_READONEORMORECOMPLETED_ENTRY ); - OstTrace1( TRACE_NORMAL, CCDCDATAINTERFACE_READONEORMORECOMPLETED, "CCdcDataInterface::ReadOneOrMoreCompleted;aError=%d", aError ); + LOGTEXT2(_L8(">>CCdcDataInterface::ReadOneOrMoreCompleted aError=%d"), + aError); #ifdef __HEADLESS_ACM_TEST_CODE__ - OstTrace1( TRACE_NORMAL, CCDCDATAINTERFACE_READONEORMORECOMPLETED_DUP1, - "CCdcDataInterface::ReadOneOrMoreCompleted;__HEADLESS_ACM_TEST_CODE__- issuing Write for %d bytes", iHeadlessAcmBuffer.Length() ); - + LOGTEXT2(_L8("__HEADLESS_ACM_TEST_CODE__- issuing Write for %d bytes"), + iHeadlessAcmBuffer.Length()); // Write back the data just read. // If the ReadOneOrMore completed with an error, we panic, as it's // invalidating the test. - if (aError != KErrNone) - { - OstTrace1( TRACE_FATAL, CCDCDATAINTERFACE_READONEORMORECOMPLETED_DUP2, - "CCdcDataInterface::ReadOneOrMoreCompleted;aError=%d", aError ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } - - if (!iWriter) - { - OstTraceExt1( TRACE_FATAL, CCDCDATAINTERFACE_READONEORMORECOMPLETED_DUP3, - "CCdcDataInterface::ReadOneOrMoreCompleted;iWriter=%p", iWriter ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(aError == KErrNone, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); + __ASSERT_DEBUG(iWriter, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iWriter->Write(iHeadlessAcmBuffer, iHeadlessAcmBuffer.Length(), EFalse); #else - if (!iReadOneOrMoreObserver) - { - OstTraceExt1( TRACE_FATAL, CCDCDATAINTERFACE_READONEORMORECOMPLETED_DUP4, - "CCdcDataInterface::ReadOneOrMoreCompleted;iReadOneOrMoreObserver=%p", iReadOneOrMoreObserver ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iReadOneOrMoreObserver, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); // See comment in WriteCompleted. MReadOneOrMoreObserver* temp = iReadOneOrMoreObserver; iReadOneOrMoreObserver = NULL; - OstTrace0( TRACE_NORMAL, CCDCDATAINTERFACE_READONEORMORECOMPLETED_DUP5, - "CCdcDataInterface::ReadOneOrMoreCompleted;\tcalling ReadOneOrMoreCompleted on observer" ); + LOGTEXT(_L8("\tcalling ReadOneOrMoreCompleted on observer")); temp->ReadOneOrMoreCompleted(aError); #endif // __HEADLESS_ACM_TEST_CODE__ - OstTraceFunctionExit0( CCDCDATAINTERFACE_READONEORMORECOMPLETED_EXIT ); + LOGTEXT(_L8("<>CCdcDataInterface::ReadCompleted aError=%d"), aError); #ifdef __HEADLESS_ACM_TEST_CODE__ - OstTrace1( TRACE_NORMAL, CCDCDATAINTERFACE_READCOMPLETED_DUP1, - "CCdcDataInterface::ReadCompleted;__HEADLESS_ACM_TEST_CODE__- issuing Write for %d bytes", iHeadlessAcmBuffer.Length() ); - + LOGTEXT2(_L8("__HEADLESS_ACM_TEST_CODE__- issuing Write for %d bytes"), + iHeadlessAcmBuffer.Length()); // Write back the data just read. // If the Read completed with an error, we panic, as it's invalidating the // test. - if (aError != KErrNone) - { - OstTrace1( TRACE_FATAL, CCDCDATAINTERFACE_READCOMPLETED_DUP2, "CCdcDataInterface::ReadCompleted;aError=%d", aError ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } - - if (!iWriter) - { - OstTraceExt1( TRACE_NORMAL, CCDCDATAINTERFACE_READCOMPLETED_DUP3, "CCdcDataInterface::ReadCompleted;iWriter=%p", iWriter ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(aError == KErrNone, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); + __ASSERT_DEBUG(iWriter, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); iWriter->Write(iHeadlessAcmBuffer, iHeadlessAcmBuffer.Length(), EFalse); #else - if (!iReadObserver) - { - OstTraceExt1( TRACE_FATAL, CCDCDATAINTERFACE_READCOMPLETED_DUP4, - "CCdcDataInterface::ReadCompleted;iReadObserver=%p", iReadObserver ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(iReadObserver, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); // See comment in WriteCompleted. MReadObserver* temp = iReadObserver; iReadObserver = NULL; - OstTrace0( TRACE_NORMAL, CCDCDATAINTERFACE_READCOMPLETED_DUP5, "CCdcDataInterface::ReadCompleted;\tcalled ReadCompleted on observer" ); + LOGTEXT(_L8("\tcalled ReadCompleted on observer")); temp->ReadCompleted(aError); #endif // __HEADLESS_ACM_TEST_CODE__ - OstTraceFunctionExit0( CCDCDATAINTERFACE_READCOMPLETED_EXIT ); + LOGTEXT(_L8("<Cancel(); iReadOneOrMoreReader->Cancel(); iReadObserver = NULL; iReadOneOrMoreObserver = NULL; - OstTraceFunctionExit0( CCDCDATAINTERFACE_CANCELREAD_EXIT ); } @@ -607,17 +498,15 @@ * @param aError Error. */ { - OstTraceFunctionEntry0( CCDCDATAINTERFACE_NOTIFYDATAAVAILABLECOMPLETED_ENTRY ); - OstTrace1( TRACE_NORMAL, CCDCDATAINTERFACE_NOTIFYDATAAVAILABLECOMPLETED, - "CCdcDataInterface::NotifyDataAvailableCompleted;aError=%d", aError ); + LOGTEXT2(_L8(">>CCdcDataInterface::NotifyDataAvailableCompleted aError=%d"), aError); // See comment in WriteCompleted. MNotifyDataAvailableObserver* temp = iNotifyDataAvailableObserver; iNotifyDataAvailableObserver = NULL; - OstTrace0( TRACE_NORMAL, CCDCDATAINTERFACE_NOTIFYDATAAVAILABLECOMPLETED_DUP1, - "CCdcDataInterface::NotifyDataAvailableCompleted;\tcalled NotifyDataAvailableCompleted on observer" ); + LOGTEXT(_L8("\tcalled NotifyDataAvailableCompleted on observer")); temp->NotifyDataAvailableCompleted(aError); - OstTraceFunctionExit0( CCDCDATAINTERFACE_NOTIFYDATAAVAILABLECOMPLETED_EXIT ); + + LOGTEXT(_L8("<NotifyDataAvailable(); - OstTraceFunctionExit0( CCDCDATAINTERFACE_NOTIFYDATAAVAILABLE_EXIT ); } void CCdcDataInterface::CancelNotifyDataAvailable() @@ -651,16 +531,12 @@ * Cancel notification of arrival of data. */ { - OstTraceFunctionEntry0( CCDCDATAINTERFACE_CANCELNOTIFYDATAAVAILABLE_ENTRY ); - if (!iDataAvailableNotifier) - { - OstTraceExt1( TRACE_FATAL, CCDCDATAINTERFACE_CANCELNOTIFYDATAAVAILABLE, - "CCdcDataInterface::CancelNotifyDataAvailable;iDataAvailableNotifier=%p", iDataAvailableNotifier ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + LOG_FUNC + + __ASSERT_DEBUG(iDataAvailableNotifier, _USB_PANIC(KAcmPanicCat, EPanicInternalError)); + iDataAvailableNotifier->Cancel(); iNotifyDataAvailableObserver = NULL; - OstTraceFunctionExit0( CCDCDATAINTERFACE_CANCELNOTIFYDATAAVAILABLE_EXIT ); } // diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcInterfaceBase.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcInterfaceBase.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/CdcInterfaceBase.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -17,12 +17,12 @@ #include #include "CdcInterfaceBase.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CdcInterfaceBaseTraces.h" +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif - CCdcInterfaceBase::CCdcInterfaceBase(const TDesC16& aIfcName) /** * Constructor. @@ -30,9 +30,7 @@ * @param aIfcName The name of the interface. */ { - OstTraceFunctionEntry0( CCDCINTERFACEBASE_CCDCINTERFACEBASE_CONS_ENTRY ); iIfcName.Set(aIfcName); - OstTraceFunctionExit0( CCDCINTERFACEBASE_CCDCINTERFACEBASE_CONS_EXIT ); } void CCdcInterfaceBase::BaseConstructL() @@ -41,31 +39,21 @@ * This call registers the object with the USB device driver */ { - OstTraceFunctionEntry0( CCDCINTERFACEBASE_BASECONSTRUCTL_ENTRY ); - OstTrace0( TRACE_NORMAL, CCDCINTERFACEBASE_BASECONSTRUCTL, "CCdcInterfaceBase::BaseConstructL;\tcalling RDevUsbcClient::Open" ); + LOGTEXT(_L8("\tcalling RDevUsbcClient::Open")); // 0 is assumed to mean ep0 TInt ret = iLdd.Open(0); if ( ret ) - { - OstTrace1( TRACE_NORMAL, CCDCINTERFACEBASE_BASECONSTRUCTL_DUP1, - "CCdcInterfaceBase::BaseConstructL;\tRDevUsbcClient::Open = %d", ret ); - if (ret < 0) - { - User::Leave(ret); - } + { + LOGTEXT2(_L8("\tRDevUsbcClient::Open = %d"), ret); + LEAVEIFERRORL(ret); } ret = SetUpInterface(); if ( ret ) { - OstTrace1( TRACE_NORMAL, CCDCINTERFACEBASE_BASECONSTRUCTL_DUP2, - "CCdcInterfaceBase::BaseConstructL;\tSetUpInterface = %d", ret ); - if (ret < 0) - { - User::Leave(ret); - } + LOGTEXT2(_L8("\tSetUpInterface = %d"), ret); + LEAVEIFERRORL(ret); } - OstTraceFunctionExit0( CCDCINTERFACEBASE_BASECONSTRUCTL_EXIT ); } CCdcInterfaceBase::~CCdcInterfaceBase() @@ -73,18 +61,18 @@ * Destructor. */ { - OstTraceFunctionEntry0( CCDCINTERFACEBASE_CCDCINTERFACEBASE_DES_ENTRY ); + LOG_FUNC + if ( iLdd.Handle() ) { - OstTrace0( TRACE_NORMAL, CCDCINTERFACEBASE_CCDCINTERFACEBASE_DES, - "CCdcInterfaceBase::~CCdcInterfaceBase;\tLDD handle exists" ); + LOGTEXT(_L8("\tLDD handle exists")); + // Don't bother calling ReleaseInterface- the base driver spec says // that Close does it for us. - OstTrace0( TRACE_NORMAL, CCDCINTERFACEBASE_CCDCINTERFACEBASE_DES_DUP1, - "CCdcInterfaceBase::~CCdcInterfaceBase;\tclosing LDD session" ); + + LOGTEXT(_L8("\tclosing LDD session")); iLdd.Close(); } - OstTraceFunctionExit0( CCDCINTERFACEBASE_CCDCINTERFACEBASE_DES_EXIT ); } TInt CCdcInterfaceBase::GetInterfaceNumber(TUint8& aIntNumber) @@ -95,25 +83,24 @@ * @return Error. */ { - OstTraceFunctionEntry0( CCDCINTERFACEBASE_GETINTERFACENUMBER_ENTRY ); + LOG_FUNC + TInt interfaceSize = 0; + // 0 means the main interface in the LDD API TInt res = iLdd.GetInterfaceDescriptorSize(0, interfaceSize); if ( res ) { - OstTrace1( TRACE_NORMAL, CCDCINTERFACEBASE_GETINTERFACENUMBER, - "CCdcInterfaceBase::GetInterfaceNumber;\t***GetInterfaceDescriptorSize()=%d", res ); - OstTraceFunctionExit0( CCDCINTERFACEBASE_GETINTERFACENUMBER_EXIT ); + LOGTEXT2(_L8("\t***GetInterfaceDescriptorSize()=%d"), res); return res; } HBufC8* interfaceBuf = HBufC8::New(interfaceSize); if ( !interfaceBuf ) { - OstTrace0( TRACE_NORMAL, CCDCINTERFACEBASE_GETINTERFACENUMBER_DUP1, - "CCdcInterfaceBase::GetInterfaceNumber;\t***failed to create interfaceBuf-returning KErrNoMemory" ); - OstTraceFunctionExit0( CCDCINTERFACEBASE_GETINTERFACENUMBER_EXIT_DUP1 ); + LOGTEXT(_L8("\t***failed to create interfaceBuf- " + "returning KErrNoMemory")); return KErrNoMemory; } @@ -125,27 +112,26 @@ if ( res ) { delete interfaceBuf; - OstTrace1( TRACE_NORMAL, CCDCINTERFACEBASE_GETINTERFACENUMBER_DUP2, "CCdcInterfaceBase::GetInterfaceNumber;res=%d", res ); - OstTraceFunctionExit0( CCDCINTERFACEBASE_GETINTERFACENUMBER_EXIT_DUP2 ); + LOGTEXT2(_L8("\t***GetInterfaceDescriptor()=%d"), res); return res; } - OstTrace1( TRACE_NORMAL, CCDCINTERFACEBASE_GETINTERFACENUMBER_DUP3, - "CCdcInterfaceBase::GetInterfaceNumber;\t***interface length = %d", interfacePtr.Length() ); +#ifdef __FLOG_ACTIVE + LOGTEXT2(_L8("\t***interface length = %d"), interfacePtr.Length()); for ( TInt i = 0 ; i < interfacePtr.Length() ; i++ ) { - OstTraceExt1( TRACE_NORMAL, CCDCINTERFACEBASE_GETINTERFACENUMBER_DUP4, - "\t***** %hhx", interfacePtr[i] ); + LOGTEXT2(_L8("\t***** %x"),interfacePtr[i]); } +#endif const TUint8* buffer = reinterpret_cast(interfacePtr.Ptr()); // 2 is where the interface number is, according to the LDD API aIntNumber = buffer[2]; - OstTrace1( TRACE_NORMAL, CCDCINTERFACEBASE_GETINTERFACENUMBER_DUP5, - "CCdcInterfaceBase::GetInterfaceNumber;\tinterface number = %d", (TInt)aIntNumber ); - + + LOGTEXT2(_L8("\tinterface number = %d"), aIntNumber); + delete interfaceBuf; - OstTraceFunctionExit0( CCDCINTERFACEBASE_GETINTERFACENUMBER_EXIT_DUP3 ); + return KErrNone; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ClassDescriptor.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ClassDescriptor.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/ClassDescriptor.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -17,12 +17,12 @@ #include "ClassDescriptor.h" #include "AcmPanic.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ClassDescriptorTraces.h" +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif - TDes8& TUsbCsClassDescriptor::Des() /** * This function packs the TUsbCsClassDescriptor class into a descriptor with @@ -32,8 +32,6 @@ * this class and has the same lifetime. */ { - OstTraceFunctionEntry0( TUSBCSCLASSDESCRIPTOR_DES_ENTRY ); - TUint index = 0; iBuffer.SetLength(KUsbClassSpecificBufferSize); @@ -73,13 +71,9 @@ #endif - if (index != KUsbClassSpecificBufferSize) - { - OstTrace1( TRACE_FATAL, TUSBCSCLASSDESCRIPTOR_DES, "TUsbCsClassDescriptor::Des;index=%d", (TInt)index ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicInternalError) ); - } + __ASSERT_DEBUG(index == KUsbClassSpecificBufferSize, + _USB_PANIC(KAcmPanicCat, EPanicInternalError)); - OstTraceFunctionExit0( TUSBCSCLASSDESCRIPTOR_DES_EXIT ); return iBuffer; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/DllMain.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/DllMain.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/DllMain.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -18,11 +18,6 @@ #include #include #include "AcmPortFactory.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "DllMainTraces.h" -#endif - extern "C" IMPORT_C CSerial* LibEntryL(void); @@ -31,7 +26,6 @@ * Lib main entry point */ { - OstTraceFunctionEntry0( DLLMAIN_LIBENTRYL_ECACM_ENTRY ); return (CAcmPortFactory::NewL()); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/RegistrationPort.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/RegistrationPort.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/RegistrationPort.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -15,18 +15,18 @@ * */ -#include #include "RegistrationPort.h" #include "AcmConstants.h" #include "AcmUtils.h" +#include #include "acmcontroller.h" +#include #include "acmserverconsts.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "RegistrationPortTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif - CRegistrationPort* CRegistrationPort::NewL(MAcmController& aAcmController, TUint aUnit) /** @@ -37,12 +37,12 @@ * @return Ownership of a newly created CRegistrationPort object */ { - OstTraceFunctionEntry0( CREGISTRATIONPORT_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY + CRegistrationPort* self = new(ELeave) CRegistrationPort(aAcmController); CleanupClosePushL(*self); self->ConstructL(aUnit); CleanupStack::Pop(); - OstTraceFunctionExit0( CREGISTRATIONPORT_NEWL_EXIT ); return self; } @@ -53,16 +53,11 @@ * @param aUnit The port number. */ { - OstTraceFunctionEntry0( CREGISTRATIONPORT_CONSTRUCTL_ENTRY ); + LOG_FUNC + TName name; name.Num(aUnit); - TInt err = SetName(&name); - if (err < 0) - { - OstTrace1( TRACE_NORMAL, CREGISTRATIONPORT_CONSTRUCTL, "CRegistrationPort::ConstructL;err=%d", err ); - User::Leave(err); - } - OstTraceFunctionExit0( CREGISTRATIONPORT_CONSTRUCTL_EXIT ); + LEAVEIFERRORL(SetName(&name)); } CRegistrationPort::CRegistrationPort(MAcmController& aAcmController) @@ -73,8 +68,6 @@ */ : iAcmController(aAcmController) { - OstTraceFunctionEntry0( CREGISTRATIONPORT_CREGISTRATIONPORT_CONS_ENTRY ); - OstTraceFunctionExit0( CREGISTRATIONPORT_CREGISTRATIONPORT_CONS_EXIT ); } void CRegistrationPort::StartRead(const TAny* /*aClientBuffer*/, @@ -86,9 +79,9 @@ * @param aLength number of bytes to read */ { - OstTraceFunctionEntry0( CREGISTRATIONPORT_STARTREAD_ENTRY ); + LOG_FUNC + ReadCompleted(KErrNotSupported); - OstTraceFunctionExit0( CREGISTRATIONPORT_STARTREAD_EXIT ); } void CRegistrationPort::ReadCancel() @@ -96,9 +89,9 @@ * Cancel a read */ { - OstTraceFunctionEntry0( CREGISTRATIONPORT_READCANCEL_ENTRY ); + LOG_FUNC + ReadCompleted(KErrNotSupported); - OstTraceFunctionExit0( CREGISTRATIONPORT_READCANCEL_EXIT ); } @@ -110,8 +103,8 @@ * @return KErrNotSupported always. */ { - OstTraceFunctionEntry0( CREGISTRATIONPORT_QUERYRECEIVEBUFFER_ENTRY ); - OstTraceFunctionExit0( CREGISTRATIONPORT_QUERYRECEIVEBUFFER_EXIT ); + LOG_FUNC + return KErrNotSupported; } @@ -121,8 +114,7 @@ * Not supported. */ { - OstTraceFunctionEntry0( CREGISTRATIONPORT_RESETBUFFERS_ENTRY ); - OstTraceFunctionExit0( CREGISTRATIONPORT_RESETBUFFERS_EXIT ); + LOG_FUNC } void CRegistrationPort::StartWrite(const TAny* /*aClientBuffer*/, @@ -134,9 +126,9 @@ * @param aLength number of bytes to write */ { - OstTraceFunctionEntry0( CREGISTRATIONPORT_STARTWRITE_ENTRY ); + LOG_FUNC + WriteCompleted(KErrNotSupported); - OstTraceFunctionExit0( CREGISTRATIONPORT_STARTWRITE_EXIT ); } void CRegistrationPort::WriteCancel() @@ -144,9 +136,9 @@ * Cancel a pending write */ { - OstTraceFunctionEntry0( CREGISTRATIONPORT_WRITECANCEL_ENTRY ); + LOG_FUNC + WriteCompleted(KErrNotSupported); - OstTraceFunctionExit0( CREGISTRATIONPORT_WRITECANCEL_EXIT ); } void CRegistrationPort::Break(TInt /*aTime*/) @@ -156,9 +148,9 @@ * @param aTime Length of break in microseconds */ { - OstTraceFunctionEntry0( CREGISTRATIONPORT_BREAK_ENTRY ); + LOG_FUNC + BreakCompleted(KErrNotSupported); - OstTraceFunctionExit0( CREGISTRATIONPORT_BREAK_EXIT ); } void CRegistrationPort::BreakCancel() @@ -166,8 +158,7 @@ * Cancel a pending break. */ { - OstTraceFunctionEntry0( CREGISTRATIONPORT_BREAKCANCEL_ENTRY ); - OstTraceFunctionExit0( CREGISTRATIONPORT_BREAKCANCEL_EXIT ); + LOG_FUNC } TInt CRegistrationPort::GetConfig(TDes8& /*aDes*/) const @@ -178,8 +169,8 @@ * @return Error */ { - OstTraceFunctionEntry0( CREGISTRATIONPORT_GETCONFIG_ENTRY ); - OstTraceFunctionExit0( CREGISTRATIONPORT_GETCONFIG_EXIT ); + LOG_FUNC + return KErrNotSupported; } @@ -191,8 +182,8 @@ * @return Error */ { - OstTraceFunctionEntry0( CREGISTRATIONPORT_SETCONFIG_ENTRY ); - OstTraceFunctionExit0( CREGISTRATIONPORT_SETCONFIG_EXIT ); + LOG_FUNC + return KErrNotSupported; } @@ -204,8 +195,8 @@ * @return Error */ { - OstTraceFunctionEntry0( CREGISTRATIONPORT_SETSERVERCONFIG_ENTRY ); - OstTraceFunctionExit0( CREGISTRATIONPORT_SETSERVERCONFIG_EXIT ); + LOG_FUNC + return KErrNotSupported; } @@ -217,8 +208,8 @@ * @return Error */ { - OstTraceFunctionEntry0( CREGISTRATIONPORT_GETSERVERCONFIG_ENTRY ); - OstTraceFunctionExit0( CREGISTRATIONPORT_GETSERVERCONFIG_EXIT ); + LOG_FUNC + return KErrNotSupported; } @@ -230,8 +221,8 @@ * @return Error */ { - OstTraceFunctionEntry0( CREGISTRATIONPORT_GETCAPS_ENTRY ); - OstTraceFunctionExit0( CREGISTRATIONPORT_GETCAPS_EXIT ); + LOG_FUNC + return KErrNotSupported; } @@ -243,8 +234,8 @@ * @return Error */ { - OstTraceFunctionEntry0( CREGISTRATIONPORT_GETSIGNALS_ENTRY ); - OstTraceFunctionExit0( CREGISTRATIONPORT_GETSIGNALS_EXIT ); + LOG_FUNC + return KErrNotSupported; } @@ -260,8 +251,7 @@ * @return Error */ { - OstTraceFunctionEntry0( CREGISTRATIONPORT_SETSIGNALSTOMARK_ENTRY ); - OstTrace1( TRACE_NORMAL, CREGISTRATIONPORT_SETSIGNALSTOMARK, "CRegistrationPort::SetSignalsToMark;aAcmField = 0x%x", aAcmField ); + LOGTEXT2(_L8(">>CRegistrationPort::SetSignalsToMark aAcmField = 0x%x"), aAcmField); // Extract number of interfaces and protocol number // low 2 bytes represent the number of ACMs @@ -275,8 +265,8 @@ protocolNumber = protocolNumber ? protocolNumber : KDefaultAcmProtocolNum; TInt ret = iAcmController.CreateFunctions(interfaces, protocolNumber, KControlIfcName, KDataIfcName); - OstTrace1( TRACE_NORMAL, CREGISTRATIONPORT_SETSIGNALSTOMARK_DUP1, "CRegistrationPort::SetSignalsToMark;ret=%d", ret ); - OstTraceFunctionExit0( CREGISTRATIONPORT_SETSIGNALSTOMARK_EXIT ); + + LOGTEXT2(_L8("<>CRegistrationPort::SetSignalsToSpace aNoAcms = %d"), aNoAcms); + iAcmController.DestroyFunctions(aNoAcms); - OstTrace0( TRACE_NORMAL, CREGISTRATIONPORT_SETSIGNALSTOSPACE_DUP1, "CRegistrationPort::SetSignalsToSpace;ret = KErrNone" ); - OstTraceFunctionExit0( CREGISTRATIONPORT_SETSIGNALSTOSPACE_EXIT ); + + LOGTEXT(_L8("<(iLength & 0x00ff); iBuffer[7] = static_cast((iLength & 0xff00) >> 8); - OstTraceFunctionExit0( TUSBREQUESTHDR_DES_EXIT ); return iBuffer; } @@ -57,20 +50,14 @@ * @return Error. */ { - OstTraceFunctionEntry0( TUSBREQUESTHDR_DECODE_ENTRY ); - if (aBuffer.Length() < static_cast(KUsbRequestHdrSize)) - { - OstTraceFunctionExit0( TUSBREQUESTHDR_DECODE_EXIT ); return KErrGeneral; - } aTarget.iRequestType = aBuffer[0]; aTarget.iRequest = aBuffer[1]; aTarget.iValue = static_cast(aBuffer[2] + (aBuffer[3] << 8)); aTarget.iIndex = static_cast(aBuffer[4] + (aBuffer[5] << 8)); aTarget.iLength = static_cast(aBuffer[6] + (aBuffer[7] << 8)); - OstTraceFunctionExit0( TUSBREQUESTHDR_DECODE_EXIT_DUP1 ); return KErrNone; } @@ -81,7 +68,6 @@ * @return TBool Flag indicating whether a data response required. */ { - OstTraceFunctionEntry0( TUSBREQUESTHDR_ISDATARESPONSEREQUIRED_ENTRY ); return (iRequestType & 0x80) ? ETrue : EFalse; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/acmserver.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/acmserver.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/acmserver.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -21,19 +21,19 @@ @internalComponent */ +#include #include "acmserver.h" #include "acmsession.h" #include "acmserversecuritypolicy.h" #include "acmserverconsts.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "acmserverTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif - CAcmServer* CAcmServer::NewL(MAcmController& aAcmController) { - OstTraceFunctionEntry0( CACMSERVER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY CAcmServer* self = new(ELeave) CAcmServer(aAcmController); CleanupStack::PushL(self); @@ -42,43 +42,33 @@ // code). if ( err != KErrAlreadyExists ) { - if (err < 0) - { - OstTrace1( TRACE_ERROR, CACMSERVER_NEWL, "CAcmServer::NewL;err=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(err); } CleanupStack::Pop(self); - OstTraceFunctionExit0( CACMSERVER_NEWL_EXIT ); return self; } CAcmServer::~CAcmServer() { - OstTraceFunctionEntry0( CACMSERVER_CACMSERVER_DES_ENTRY ); - OstTraceFunctionExit0( CACMSERVER_CACMSERVER_DES_EXIT ); + LOG_FUNC } CAcmServer::CAcmServer(MAcmController& aAcmController) : CPolicyServer(CActive::EPriorityStandard, KAcmServerPolicy), iAcmController(aAcmController) { - OstTraceFunctionEntry0( CACMSERVER_CACMSERVER_CONS_ENTRY ); - OstTraceFunctionExit0( CACMSERVER_CACMSERVER_CONS_EXIT ); } CSession2* CAcmServer::NewSessionL(const TVersion& aVersion, const RMessage2& aMessage) const { - OstTraceFunctionEntry0( CACMSERVER_NEWSESSIONL_ENTRY ); + LOG_FUNC + //Validate session as coming from UsbSvr static _LIT_SECURITY_POLICY_S0(KSidPolicy, 0x101fe1db); TBool auth = KSidPolicy.CheckPolicy(aMessage); if(!auth) { - OstTrace1( TRACE_ERROR, CACMSERVER_NEWSESSIONL_DUP1, - "CAcmServer::NewSessionL;KErrPermissionDenied=%d", - KErrPermissionDenied ); - User::Leave(KErrPermissionDenied); + LEAVEIFERRORL(KErrPermissionDenied); } // Version number check... @@ -88,14 +78,10 @@ if ( !User::QueryVersionSupported(v, aVersion) ) { - OstTrace1( TRACE_ERROR, CACMSERVER_NEWSESSIONL_DUP2, - "CAcmServer::NewSessionL;KErrNotSupported=%d", - KErrNotSupported ); - User::Leave(KErrNotSupported); + LEAVEIFERRORL(KErrNotSupported); } CAcmSession* sess = CAcmSession::NewL(iAcmController); - OstTraceExt1( TRACE_NORMAL, CACMSERVER_NEWSESSIONL, "CAcmServer::NewSessionL;sess=%p", sess ); - OstTraceFunctionExit0( CACMSERVER_NEWSESSIONL_EXIT ); + LOGTEXT2(_L8("\tsess = 0x%08x"), sess); return sess; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/acmsession.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/acmsession.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/acmsession.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -24,37 +24,37 @@ #include "acmserverconsts.h" #include "acmsession.h" #include "AcmPortFactory.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "acmsessionTraces.h" +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif - CAcmSession* CAcmSession::NewL(MAcmController& aAcmController) { - OstTraceFunctionEntry0( CACMSESSION_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY + CAcmSession* self = new(ELeave) CAcmSession(aAcmController); - OstTraceFunctionExit0( CACMSESSION_NEWL_EXIT ); return self; } CAcmSession::CAcmSession(MAcmController& aAcmController) : iAcmController(aAcmController) { - OstTraceFunctionEntry0( CACMSESSION_CACMSESSION_CONS_ENTRY ); - OstTraceFunctionExit0( CACMSESSION_CACMSESSION_CONS_EXIT ); + LOG_FUNC } CAcmSession::~CAcmSession() { - OstTraceFunctionEntry0( CACMSESSION_CACMSESSION_DES_ENTRY ); - OstTraceFunctionExit0( CACMSESSION_CACMSESSION_DES_EXIT ); + LOG_FUNC } void CAcmSession::CreateFunctionsL(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CACMSESSION_CREATEFUNCTIONSL_ENTRY ); + LOG_FUNC + RBuf acmControlIfcName, acmDataIfcName; + TInt size = aMessage.GetDesLengthL(2); acmControlIfcName.CreateL(size); acmControlIfcName.CleanupClosePushL(); @@ -65,27 +65,19 @@ acmDataIfcName.CleanupClosePushL(); aMessage.ReadL(3, acmDataIfcName); - OstTraceExt4( TRACE_DUMP, CACMSESSION_CREATEFUNCTIONSL, - "CAcmSession::CreateFunctionsL;\taNoAcms = %d, aProtocolNum = %d, " - "Control Ifc Name = %S, Data Ifc Name = %S", - aMessage.Int0(), aMessage.Int1(), acmControlIfcName, acmDataIfcName ); - + LOGTEXT5(_L("\taNoAcms = %d, aProtocolNum = %d, Control Ifc Name = %S, Data Ifc Name = %S"), + aMessage.Int0(), aMessage.Int1(), &acmControlIfcName, &acmDataIfcName); - TInt err = iAcmController.CreateFunctions(aMessage.Int0(), aMessage.Int1(), acmControlIfcName, acmDataIfcName); - if (err < 0) - { - OstTrace1( TRACE_NORMAL, CACMSESSION_CREATEFUNCTIONSL_DUP1, "CAcmSession::CreateFunctionsL;err=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(iAcmController.CreateFunctions(aMessage.Int0(), aMessage.Int1(), acmControlIfcName, acmDataIfcName)); CleanupStack::PopAndDestroy(2); - OstTraceFunctionExit0( CACMSESSION_CREATEFUNCTIONSL_EXIT ); } void CAcmSession::ServiceL(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CACMSESSION_SERVICEL_ENTRY ); - OstTrace1( TRACE_NORMAL, CACMSESSION_SERVICEL, "CAcmSession::ServiceL;aMessage.Function()=%d", aMessage.Function() ); + LOG_FUNC + LOGTEXT2(_L8("\taMessage.Function() = %d"), aMessage.Function()); + switch ( aMessage.Function() ) { case EAcmCreateAcmFunctions: @@ -107,5 +99,4 @@ aMessage.Panic(KAcmSrvPanic, EAcmBadAcmMessage); break; } - OstTraceFunctionExit0( CACMSESSION_SERVICEL_EXIT ); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/linkstatenotifier.cpp --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/linkstatenotifier.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/src/linkstatenotifier.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -17,19 +17,19 @@ #include #include +#include #include "AcmPanic.h" #include "linkstatenotifier.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "linkstatenotifierTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "ECACM"); #endif - CLinkStateNotifier* CLinkStateNotifier::NewL(MLinkStateObserver& aParent, RDevUsbcClient& aUsb) { - OstTraceFunctionEntry0( CLINKSTATENOTIFIER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY + CLinkStateNotifier* self = new (ELeave) CLinkStateNotifier(aParent, aUsb); - OstTraceFunctionExit0( CLINKSTATENOTIFIER_NEWL_EXIT ); return self; } @@ -38,9 +38,9 @@ : CActive(EPriorityStandard), iParent(aParent), iUsb(aUsb) { - OstTraceFunctionEntry0( CLINKSTATENOTIFIER_CLINKSTATENOTIFIER_CONS_ENTRY ); + LOG_FUNC + CActiveScheduler::Add(this); - OstTraceFunctionExit0( CLINKSTATENOTIFIER_CLINKSTATENOTIFIER_CONS_EXIT ); } @@ -50,9 +50,8 @@ */ CLinkStateNotifier::~CLinkStateNotifier() { - OstTraceFunctionEntry0( CLINKSTATENOTIFIER_CLINKSTATENOTIFIER_DES_ENTRY ); + LOG_FUNC Cancel(); - OstTraceFunctionExit0( CLINKSTATENOTIFIER_CLINKSTATENOTIFIER_DES_EXIT ); } @@ -63,8 +62,6 @@ */ TInt CLinkStateNotifier::RunError(TInt /*aError*/) { - OstTraceFunctionEntry0( CLINKSTATENOTIFIER_RUNERROR_ENTRY ); - OstTraceFunctionExit0( CLINKSTATENOTIFIER_RUNERROR_EXIT ); return KErrNone; } @@ -75,16 +72,14 @@ */ void CLinkStateNotifier::RunL() { - OstTraceFunctionEntry0( CLINKSTATENOTIFIER_RUNL_ENTRY ); - OstTrace1( TRACE_NORMAL, CLINKSTATENOTIFIER_RUNL, "CLinkStateNotifier::RunL;called state=0x%X", iUsbState ); + LOGTEXT2(_L8("CObexUsbHandler::RunL called state=0x%X"), iUsbState); if (iStatus != KErrNone) { - OstTrace1( TRACE_NORMAL, CLINKSTATENOTIFIER_RUNL_DUP1, "CLinkStateNotifier::RunL;- Error = %d", iStatus.Int() ); + LOGTEXT2(_L8("CObexUsbHandler::RunL() - Error = %d"),iStatus.Int()); LinkDown(); iParent.MLSOStateChange(KDefaultMaxPacketTypeBulk); - OstTraceFunctionExit0( CLINKSTATENOTIFIER_RUNL_EXIT ); return; } @@ -110,8 +105,7 @@ break; default: - OstTrace0( TRACE_FATAL, CLINKSTATENOTIFIER_RUNL_DUP2, "CLinkStateNotifier::RunL;EPanicUnknownDeviceState" ); - __ASSERT_DEBUG( EFalse, User::Panic(KAcmPanicCat, EPanicUnknownDeviceState) ); + __ASSERT_DEBUG(false, _USB_PANIC(KAcmPanicCat, EPanicUnknownDeviceState)); break; } } @@ -121,7 +115,6 @@ // Await further notification of a state change. iUsb.AlternateDeviceStatusNotify(iStatus, iUsbState); SetActive(); - OstTraceFunctionExit0( CLINKSTATENOTIFIER_RUNL_EXIT_DUP1 ); } @@ -130,9 +123,9 @@ */ void CLinkStateNotifier::DoCancel() { - OstTraceFunctionEntry0( CLINKSTATENOTIFIER_DOCANCEL_ENTRY ); + LOG_FUNC + iUsb.AlternateDeviceStatusNotifyCancel(); - OstTraceFunctionExit0( CLINKSTATENOTIFIER_DOCANCEL_EXIT ); } @@ -142,16 +135,14 @@ */ void CLinkStateNotifier::Start() { - OstTraceFunctionEntry0( CLINKSTATENOTIFIER_START_ENTRY ); + LOG_FUNC iUsb.AlternateDeviceStatusNotify(iStatus, iUsbState); SetActive(); - OstTraceFunctionExit0( CLINKSTATENOTIFIER_START_EXIT ); } void CLinkStateNotifier::LinkUp() { - OstTraceFunctionEntry0( CLINKSTATENOTIFIER_LINKUP_ENTRY ); if (iUsb.CurrentlyUsingHighSpeed()) { iPacketSize = KMaxPacketTypeBulkHS; @@ -160,13 +151,10 @@ { iPacketSize = KMaxPacketTypeBulkFS; } - OstTraceFunctionExit0( CLINKSTATENOTIFIER_LINKUP_EXIT ); } void CLinkStateNotifier::LinkDown() { - OstTraceFunctionEntry0( CLINKSTATENOTIFIER_LINKDOWN_ENTRY ); iPacketSize = 0; - OstTraceFunctionExit0( CLINKSTATENOTIFIER_LINKDOWN_EXIT ); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/device/classdrivers/acm/classimplementation/ecacm/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1126 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_DUMP=0x89 -[GROUP]TRACE_ERROR=0x82 -[GROUP]TRACE_FATAL=0x81 -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_DUMP[0x89]_CACMPORT_HANDLECONFIGNOTIFICATION=0xc -[TRACE]TRACE_DUMP[0x89]_CACMPORT_HANDLECONFIGNOTIFICATION_DUP1=0xd -[TRACE]TRACE_DUMP[0x89]_CACMPORT_HANDLECONFIGNOTIFICATION_DUP2=0xe -[TRACE]TRACE_DUMP[0x89]_CACMPORT_HANDLECONFIGNOTIFICATION_DUP3=0xf -[TRACE]TRACE_DUMP[0x89]_CACMPORT_HANDLECONFIGNOTIFICATION_DUP4=0x10 -[TRACE]TRACE_DUMP[0x89]_CACMPORT_HANDLECONFIGNOTIFICATION_DUP5=0x11 -[TRACE]TRACE_DUMP[0x89]_CACMPORT_SETCONFIG_DUP10=0x8 -[TRACE]TRACE_DUMP[0x89]_CACMPORT_SETCONFIG_DUP11=0x9 -[TRACE]TRACE_DUMP[0x89]_CACMPORT_SETCONFIG_DUP12=0xa -[TRACE]TRACE_DUMP[0x89]_CACMPORT_SETCONFIG_DUP13=0xb -[TRACE]TRACE_DUMP[0x89]_CACMPORT_SETCONFIG_DUP3=0x1 -[TRACE]TRACE_DUMP[0x89]_CACMPORT_SETCONFIG_DUP4=0x2 -[TRACE]TRACE_DUMP[0x89]_CACMPORT_SETCONFIG_DUP5=0x3 -[TRACE]TRACE_DUMP[0x89]_CACMPORT_SETCONFIG_DUP6=0x4 -[TRACE]TRACE_DUMP[0x89]_CACMPORT_SETCONFIG_DUP7=0x5 -[TRACE]TRACE_DUMP[0x89]_CACMPORT_SETCONFIG_DUP8=0x6 -[TRACE]TRACE_DUMP[0x89]_CACMPORT_SETCONFIG_DUP9=0x7 -[TRACE]TRACE_DUMP[0x89]_CACMREADER_ISSUEREAD=0x18 -[TRACE]TRACE_DUMP[0x89]_CACMREADER_ISSUEREADONEORMORE=0x1d -[TRACE]TRACE_DUMP[0x89]_CACMREADER_ISSUEREADONEORMORE_DUP1=0x1e -[TRACE]TRACE_DUMP[0x89]_CACMREADER_ISSUEREADONEORMORE_DUP2=0x1f -[TRACE]TRACE_DUMP[0x89]_CACMREADER_ISSUEREADONEORMORE_DUP3=0x20 -[TRACE]TRACE_DUMP[0x89]_CACMREADER_ISSUEREADONEORMORE_DUP4=0x21 -[TRACE]TRACE_DUMP[0x89]_CACMREADER_ISSUEREAD_DUP1=0x19 -[TRACE]TRACE_DUMP[0x89]_CACMREADER_ISSUEREAD_DUP2=0x1a -[TRACE]TRACE_DUMP[0x89]_CACMREADER_ISSUEREAD_DUP3=0x1b -[TRACE]TRACE_DUMP[0x89]_CACMREADER_ISSUEREAD_DUP4=0x1c -[TRACE]TRACE_DUMP[0x89]_CACMREADER_WRITEBACKDATA=0x12 -[TRACE]TRACE_DUMP[0x89]_CACMREADER_WRITEBACKDATA_DUP1=0x13 -[TRACE]TRACE_DUMP[0x89]_CACMREADER_WRITEBACKDATA_DUP2=0x14 -[TRACE]TRACE_DUMP[0x89]_CACMREADER_WRITEBACKDATA_DUP3=0x15 -[TRACE]TRACE_DUMP[0x89]_CACMREADER_WRITEBACKDATA_DUP4=0x16 -[TRACE]TRACE_DUMP[0x89]_CACMREADER_WRITEBACKDATA_DUP5=0x17 -[TRACE]TRACE_DUMP[0x89]_CACMSESSION_CREATEFUNCTIONSL=0x29 -[TRACE]TRACE_DUMP[0x89]_CCDCCONTROLINTERFACE_SENDSERIALSTATE=0x22 -[TRACE]TRACE_DUMP[0x89]_CCDCCONTROLINTERFACE_SENDSERIALSTATE_DUP1=0x23 -[TRACE]TRACE_DUMP[0x89]_CCDCCONTROLINTERFACE_SENDSERIALSTATE_DUP2=0x24 -[TRACE]TRACE_DUMP[0x89]_CCDCCONTROLINTERFACE_SENDSERIALSTATE_DUP3=0x25 -[TRACE]TRACE_DUMP[0x89]_CCDCCONTROLINTERFACE_SENDSERIALSTATE_DUP4=0x26 -[TRACE]TRACE_DUMP[0x89]_CCDCCONTROLINTERFACE_SENDSERIALSTATE_DUP5=0x27 -[TRACE]TRACE_DUMP[0x89]_CCDCCONTROLINTERFACE_SENDSERIALSTATE_DUP6=0x28 -[TRACE]TRACE_ERROR[0x82]_CACMPORTFACTORY_CREATEFUNCTIONL_DUP4=0x3 -[TRACE]TRACE_ERROR[0x82]_CACMPORTFACTORY_CREATEFUNCTIONL_DUP5=0x4 -[TRACE]TRACE_ERROR[0x82]_CACMPORTFACTORY_NEWPORTL_DUP2=0x1 -[TRACE]TRACE_ERROR[0x82]_CACMPORTFACTORY_NEWPORTL_DUP3=0x2 -[TRACE]TRACE_ERROR[0x82]_CACMREADER_CONSTRUCTL_DUP1=0x5 -[TRACE]TRACE_ERROR[0x82]_CACMSERVER_NEWL=0x7 -[TRACE]TRACE_ERROR[0x82]_CACMSERVER_NEWSESSIONL_DUP1=0x8 -[TRACE]TRACE_ERROR[0x82]_CACMSERVER_NEWSESSIONL_DUP2=0x9 -[TRACE]TRACE_ERROR[0x82]_CACMWRITER_CONSTRUCTL_DUP1=0x6 -[TRACE]TRACE_FATAL[0x81]_CACMPORT_CONSTRUCTL=0x1 -[TRACE]TRACE_FATAL[0x81]_CACMPORT_DOSETBUFFERLENGTHS_DUP5=0xa -[TRACE]TRACE_FATAL[0x81]_CACMPORT_DOSETBUFFERLENGTHS_DUP6=0xb -[TRACE]TRACE_FATAL[0x81]_CACMPORT_DOSETBUFFERLENGTHS_DUP7=0xc -[TRACE]TRACE_FATAL[0x81]_CACMPORT_GETRECEIVEBUFFERLENGTH_DUP2=0x9 -[TRACE]TRACE_FATAL[0x81]_CACMPORT_NOTIFYBREAK_DUP1=0xf -[TRACE]TRACE_FATAL[0x81]_CACMPORT_NOTIFYDATAAVAILABLECANCEL_DUP1=0xe -[TRACE]TRACE_FATAL[0x81]_CACMPORT_NOTIFYDATAAVAILABLE_DUP1=0xd -[TRACE]TRACE_FATAL[0x81]_CACMPORT_QUERYRECEIVEBUFFER_DUP2=0x4 -[TRACE]TRACE_FATAL[0x81]_CACMPORT_READCANCEL_DUP1=0x3 -[TRACE]TRACE_FATAL[0x81]_CACMPORT_RESETBUFFERS_DUP3=0x5 -[TRACE]TRACE_FATAL[0x81]_CACMPORT_RESETBUFFERS_DUP4=0x6 -[TRACE]TRACE_FATAL[0x81]_CACMPORT_SETACM_DUP4=0x10 -[TRACE]TRACE_FATAL[0x81]_CACMPORT_SETACM_DUP5=0x11 -[TRACE]TRACE_FATAL[0x81]_CACMPORT_SETACM_DUP6=0x12 -[TRACE]TRACE_FATAL[0x81]_CACMPORT_STARTREAD_DUP3=0x2 -[TRACE]TRACE_FATAL[0x81]_CACMPORT_STARTWRITE_DUP3=0x7 -[TRACE]TRACE_FATAL[0x81]_CACMPORT_WRITECANCEL_DUP1=0x8 -[TRACE]TRACE_FATAL[0x81]_CACMREADER_CHECKBUFFEREMPTYANDRESETPTRS=0x16 -[TRACE]TRACE_FATAL[0x81]_CACMREADER_CHECKNEWREQUEST=0x17 -[TRACE]TRACE_FATAL[0x81]_CACMREADER_CHECKNEWREQUEST_DUP1=0x18 -[TRACE]TRACE_FATAL[0x81]_CACMREADER_CHECKNEWREQUEST_DUP2=0x1a -[TRACE]TRACE_FATAL[0x81]_CACMREADER_CHECKNEWREQUEST_DUP3=0x19 -[TRACE]TRACE_FATAL[0x81]_CACMREADER_FINDTERMINATOR_DUP1=0x23 -[TRACE]TRACE_FATAL[0x81]_CACMREADER_ISSUEREADONEORMORE_DUP5=0x22 -[TRACE]TRACE_FATAL[0x81]_CACMREADER_ISSUEREAD_DUP5=0x21 -[TRACE]TRACE_FATAL[0x81]_CACMREADER_PARTIALFINDTERMINATOR_DUP3=0x24 -[TRACE]TRACE_FATAL[0x81]_CACMREADER_READCOMPLETED_DUP3=0x15 -[TRACE]TRACE_FATAL[0x81]_CACMREADER_RESETBUFFER=0x13 -[TRACE]TRACE_FATAL[0x81]_CACMREADER_SETTERMINATORS_DUP2=0x14 -[TRACE]TRACE_FATAL[0x81]_CACMREADER_WRITEBACKDATA_DUP15=0x1b -[TRACE]TRACE_FATAL[0x81]_CACMREADER_WRITEBACKDATA_DUP16=0x1c -[TRACE]TRACE_FATAL[0x81]_CACMREADER_WRITEBACKDATA_DUP17=0x1d -[TRACE]TRACE_FATAL[0x81]_CACMREADER_WRITEBACKDATA_DUP18=0x1e -[TRACE]TRACE_FATAL[0x81]_CACMREADER_WRITEBACKDATA_DUP19=0x1f -[TRACE]TRACE_FATAL[0x81]_CACMREADER_WRITEBACKDATA_DUP20=0x20 -[TRACE]TRACE_FATAL[0x81]_CACMWRITER_CHECKNEWREQUEST=0x27 -[TRACE]TRACE_FATAL[0x81]_CACMWRITER_CHECKNEWREQUEST_DUP1=0x28 -[TRACE]TRACE_FATAL[0x81]_CACMWRITER_CHECKNEWREQUEST_DUP2=0x29 -[TRACE]TRACE_FATAL[0x81]_CACMWRITER_ISSUEWRITE_DUP1=0x2a -[TRACE]TRACE_FATAL[0x81]_CACMWRITER_ISSUEWRITE_DUP2=0x2b -[TRACE]TRACE_FATAL[0x81]_CACMWRITER_READDATAFROMCLIENT_DUP1=0x26 -[TRACE]TRACE_FATAL[0x81]_CACMWRITER_RESETBUFFER=0x25 -[TRACE]TRACE_FATAL[0x81]_CBREAKCONTROLLER_PUBLISH=0x2e -[TRACE]TRACE_FATAL[0x81]_CBREAKCONTROLLER_RUNL=0x2c -[TRACE]TRACE_FATAL[0x81]_CBREAKCONTROLLER_STATEMACHINE=0x2d -[TRACE]TRACE_FATAL[0x81]_CCDCACMCLASS_BREAKREQUEST=0x34 -[TRACE]TRACE_FATAL[0x81]_CCDCACMCLASS_NOTIFYDATAAVAILABLECANCEL=0x36 -[TRACE]TRACE_FATAL[0x81]_CCDCACMCLASS_NOTIFYDATAAVAILABLE_DUP1=0x35 -[TRACE]TRACE_FATAL[0x81]_CCDCACMCLASS_READCANCEL=0x31 -[TRACE]TRACE_FATAL[0x81]_CCDCACMCLASS_READONEORMORE_MREADONEORMOREOBSERVERREF_TDES8REF_TINT_DUP1=0x2f -[TRACE]TRACE_FATAL[0x81]_CCDCACMCLASS_READ_DUP2=0x30 -[TRACE]TRACE_FATAL[0x81]_CCDCACMCLASS_WRITECANCEL=0x33 -[TRACE]TRACE_FATAL[0x81]_CCDCACMCLASS_WRITE_DUP2=0x32 -[TRACE]TRACE_FATAL[0x81]_CCDCCONTROLINTERFACEREADER_HANDLEREADCOMPLETION_DUP3=0x38 -[TRACE]TRACE_FATAL[0x81]_CCDCCONTROLINTERFACE_SETUPINTERFACE_DUP6=0x37 -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_CANCELNOTIFYDATAAVAILABLE=0x53 -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_CANCELREAD=0x4f -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_CANCELREAD_DUP1=0x50 -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_CANCELWRITE=0x41 -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_NOTIFYDATAAVAILABLE=0x51 -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_NOTIFYDATAAVAILABLE_DUP1=0x52 -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_READCOMPLETED_DUP2=0x4d -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_READCOMPLETED_DUP4=0x4e -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_READONEORMORECOMPLETED_DUP2=0x4a -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_READONEORMORECOMPLETED_DUP3=0x4b -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_READONEORMORECOMPLETED_DUP4=0x4c -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_READONEORMORE_DUP1=0x46 -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_READONEORMORE_DUP2=0x47 -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_READONEORMORE_DUP3=0x48 -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_READONEORMORE_DUP4=0x49 -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_READ_DUP1=0x42 -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_READ_DUP2=0x43 -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_READ_DUP3=0x44 -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_READ_DUP4=0x45 -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_SETUPINTERFACE_DUP5=0x39 -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_WRITE=0x3a -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_WRITECOMPLETED_DUP1=0x3c -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_WRITECOMPLETED_DUP3=0x3d -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_WRITECOMPLETED_DUP5=0x3e -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_WRITECOMPLETED_DUP6=0x3f -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_WRITECOMPLETED_DUP7=0x40 -[TRACE]TRACE_FATAL[0x81]_CCDCDATAINTERFACE_WRITE_DUP1=0x3b -[TRACE]TRACE_FATAL[0x81]_CLINKSTATENOTIFIER_RUNL_DUP2=0x55 -[TRACE]TRACE_FATAL[0x81]_TUSBCSCLASSDESCRIPTOR_DES=0x54 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_ACMPORTCLOSED_ENTRY=0x97 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_ACMPORTCLOSED_EXIT=0x98 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_CACMPORTFACTORY_ENTRY=0x91 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_CACMPORTFACTORY_EXIT=0x92 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_CHECKACMARRAY_ENTRY=0x9f -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_CHECKACMARRAY_EXIT=0xa0 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_CONSTRUCTL_ENTRY=0x93 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_CONSTRUCTL_EXIT=0x94 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_CREATEFUNCTIONL_ENTRY=0xa3 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_CREATEFUNCTIONL_EXIT=0xa4 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_CREATEFUNCTIONS_ENTRY=0xa1 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_CREATEFUNCTIONS_EXIT=0xa2 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_DESTROYFUNCTIONS_ENTRY=0x9d -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_DESTROYFUNCTIONS_EXIT=0x9e -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_INFO_ENTRY=0xa5 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_INFO_EXIT=0xa6 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_LOGPORTSANDFUNCTIONS_ENTRY=0xa7 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_LOGPORTSANDFUNCTIONS_EXIT=0xa8 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_NEWL_ENTRY=0x8f -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_NEWL_EXIT=0x90 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_NEWPORTL_ENTRY=0x9b -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_NEWPORTL_EXIT=0x9c -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_PORTPLATSECCAPABILITY_ENTRY=0x95 -[TRACE]TRACE_FLOW[0x8A]_CACMPORTFACTORY_PORTPLATSECCAPABILITY_EXIT=0x96 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_BREAKCANCEL_ENTRY=0x1d -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_BREAKCANCEL_EXIT=0x1e -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_BREAKCANCEL_EXIT_DUP1=0x1f -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_BREAKREQUESTCOMPLETED_ENTRY=0x6e -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_BREAKREQUESTCOMPLETED_EXIT=0x6f -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_BREAKSTATECHANGE_ENTRY=0x70 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_BREAKSTATECHANGE_EXIT=0x71 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_BREAK_ENTRY=0x1a -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_BREAK_EXIT=0x1b -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_BREAK_EXIT_DUP1=0x1c -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_CACMPORT_CONS_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_CACMPORT_DESTRUCTRURE_ENTRY=0x8d -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_CACMPORT_DESTRUCTRURE_EXIT=0x8e -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_CACMPORT_DES_EXIT=0x6 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_CONSTRUCTL_ENTRY=0x3 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_CONSTRUCTL_EXIT=0x4 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_CONVERTANDFILTERSIGNALS_ENTRY=0x47 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_CONVERTANDFILTERSIGNALS_EXIT=0x48 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_CONVERTSIGNALS_ENTRY=0x49 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_CONVERTSIGNALS_EXIT=0x4a -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_DESTRUCT_ENTRY=0x56 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_DESTRUCT_EXIT=0x57 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_DOSETBUFFERLENGTHS_ENTRY=0x4e -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_DOSETBUFFERLENGTHS_EXIT=0x4f -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_DOSETBUFFERLENGTHS_EXIT_DUP1=0x50 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_DOSETBUFFERLENGTHS_EXIT_DUP2=0x51 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_DOSETBUFFERLENGTHS_EXIT_DUP3=0x52 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_FREEMEMORY_ENTRY=0x58 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_FREEMEMORY_EXIT=0x59 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETCAPS_ENTRY=0x34 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETCAPS_EXIT=0x35 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETCAPS_EXIT_DUP1=0x36 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETCAPS_EXIT_DUP2=0x37 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETCONFIG_ENTRY=0x20 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETCONFIG_EXIT=0x21 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETCONFIG_EXIT_DUP1=0x22 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETCONFIG_EXIT_DUP2=0x23 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETFLOWCONTROLSTATUS_ENTRY=0x60 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETFLOWCONTROLSTATUS_EXIT=0x61 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETFLOWCONTROLSTATUS_EXIT_DUP1=0x62 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETRECEIVEBUFFERLENGTH_ENTRY=0x4b -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETRECEIVEBUFFERLENGTH_EXIT=0x4c -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETRECEIVEBUFFERLENGTH_EXIT_DUP1=0x4d -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETROLE_ENTRY=0x86 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETROLE_EXIT=0x87 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETSERVERCONFIG_ENTRY=0x30 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETSERVERCONFIG_EXIT=0x31 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETSERVERCONFIG_EXIT_DUP1=0x32 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETSERVERCONFIG_EXIT_DUP2=0x33 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETSIGNALS_ENTRY=0x38 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETSIGNALS_EXIT=0x39 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_GETSIGNALS_EXIT_DUP1=0x3a -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_HANDLECONFIGNOTIFICATION_ENTRY=0x28 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_HANDLECONFIGNOTIFICATION_EXIT=0x29 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_HOSTCONFIGCHANGE_ENTRY=0x7d -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_HOSTCONFIGCHANGE_EXIT=0x7e -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_HOSTSIGNALCHANGE_ENTRY=0x84 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_HOSTSIGNALCHANGE_EXIT=0x85 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NEWL_ENTRY=0x1 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NEWL_EXIT=0x2 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYBREAKCANCEL_ENTRY=0x6b -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYBREAKCANCEL_EXIT=0x6c -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYBREAKCANCEL_EXIT_DUP1=0x6d -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYBREAK_ENTRY=0x68 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYBREAK_EXIT=0x69 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYBREAK_EXIT_DUP1=0x6a -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYCONFIGCHANGECANCEL_ENTRY=0x7a -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYCONFIGCHANGECANCEL_EXIT=0x7b -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYCONFIGCHANGECANCEL_EXIT_DUP1=0x7c -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYCONFIGCHANGE_ENTRY=0x77 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYCONFIGCHANGE_EXIT=0x78 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYCONFIGCHANGE_EXIT_DUP1=0x79 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYDATAAVAILABLECANCEL_ENTRY=0x5d -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYDATAAVAILABLECANCEL_EXIT=0x5e -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYDATAAVAILABLECANCEL_EXIT_DUP1=0x5f -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYDATAAVAILABLE_ENTRY=0x5a -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYDATAAVAILABLE_EXIT=0x5b -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYDATAAVAILABLE_EXIT_DUP1=0x5c -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYFLOWCONTROLCHANGECANCEL_ENTRY=0x75 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYFLOWCONTROLCHANGECANCEL_EXIT=0x76 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYFLOWCONTROLCHANGE_ENTRY=0x72 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYFLOWCONTROLCHANGE_EXIT=0x73 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYFLOWCONTROLCHANGE_EXIT_DUP1=0x74 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYOUTPUTEMPTYCANCEL_ENTRY=0x66 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYOUTPUTEMPTYCANCEL_EXIT=0x67 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYOUTPUTEMPTY_ENTRY=0x63 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYOUTPUTEMPTY_EXIT=0x64 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYOUTPUTEMPTY_EXIT_DUP1=0x65 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYSIGNALCHANGECANCEL_ENTRY=0x81 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYSIGNALCHANGECANCEL_EXIT=0x82 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYSIGNALCHANGECANCEL_EXIT_DUP1=0x83 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYSIGNALCHANGE_ENTRY=0x7f -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_NOTIFYSIGNALCHANGE_EXIT=0x80 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_QUERYRECEIVEBUFFER_ENTRY=0xe -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_QUERYRECEIVEBUFFER_EXIT=0xf -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_QUERYRECEIVEBUFFER_EXIT_DUP1=0x10 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_READCANCEL_ENTRY=0xb -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_READCANCEL_EXIT=0xc -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_READCANCEL_EXIT_DUP1=0xd -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_RESETBUFFERS_ENTRY=0x11 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_RESETBUFFERS_EXIT=0x12 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETACM_ENTRY=0x8b -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETACM_EXIT=0x8c -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETCONFIG_ENTRY=0x24 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETCONFIG_EXIT=0x25 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETCONFIG_EXIT_DUP1=0x26 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETCONFIG_EXIT_DUP2=0x27 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETRECEIVEBUFFERLENGTH_ENTRY=0x53 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETRECEIVEBUFFERLENGTH_EXIT=0x54 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETRECEIVEBUFFERLENGTH_EXIT_DUP1=0x55 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETROLE_ENTRY=0x89 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETROLE_EXIT=0x8a -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSERVERCONFIG_ENTRY=0x2a -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSERVERCONFIG_EXIT=0x2b -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSERVERCONFIG_EXIT_DUP1=0x2c -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSERVERCONFIG_EXIT_DUP2=0x2d -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSERVERCONFIG_EXIT_DUP3=0x2e -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSERVERCONFIG_EXIT_DUP4=0x2f -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSIGNALSTOMARK_ENTRY=0x3b -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSIGNALSTOMARK_EXIT=0x3c -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSIGNALSTOMARK_EXIT_DUP1=0x3d -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSIGNALSTOMARK_EXIT_DUP2=0x3e -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSIGNALSTOSPACE_ENTRY=0x3f -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSIGNALSTOSPACE_EXIT=0x40 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSIGNALSTOSPACE_EXIT_DUP1=0x41 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSIGNALSTOSPACE_EXIT_DUP2=0x42 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSIGNALS_ENTRY=0x43 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSIGNALS_EXIT=0x44 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSIGNALS_EXIT_DUP1=0x45 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_SETSIGNALS_EXIT_DUP2=0x46 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_STARTREAD_ENTRY=0x7 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_STARTREAD_EXIT=0x8 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_STARTREAD_EXIT_DUP1=0x9 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_STARTREAD_EXIT_DUP2=0xa -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_STARTWRITE_ENTRY=0x13 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_STARTWRITE_EXIT=0x14 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_STARTWRITE_EXIT_DUP1=0x15 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_STARTWRITE_EXIT_DUP2=0x16 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_WRITECANCEL_ENTRY=0x17 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_WRITECANCEL_EXIT=0x18 -[TRACE]TRACE_FLOW[0x8A]_CACMPORT_WRITECANCEL_EXIT_DUP1=0x19 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_BUFLEN_ENTRY=0xc4 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_BUFLEN_EXIT=0xc5 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_CACMREADER_CONS_ENTRY=0xad -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_CACMREADER_CONS_EXIT=0xae -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_CACMREADER_DES_ENTRY=0xab -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_CACMREADER_DES_EXIT=0xac -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_CHECKBUFFEREMPTYANDRESETPTRS_ENTRY=0xd7 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_CHECKBUFFEREMPTYANDRESETPTRS_EXIT=0xd8 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED_ENTRY=0xdb -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED_EXIT=0xdc -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_CHECKNEWREQUEST_ENTRY=0xd9 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_CHECKNEWREQUEST_EXIT=0xda -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_COMPLETEREQUEST_ENTRY=0xdf -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_COMPLETEREQUEST_EXIT=0xe0 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_CONSTRUCTL_ENTRY=0xaf -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_CONSTRUCTL_EXIT=0xb0 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_FINDTERMINATOR_ENTRY=0xe5 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_FINDTERMINATOR_EXIT=0xe6 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_ISSUEREADONEORMORE_ENTRY=0xe3 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_ISSUEREADONEORMORE_EXIT=0xe4 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_ISSUEREAD_ENTRY=0xe1 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_ISSUEREAD_EXIT=0xe2 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_NEWL_ENTRY=0xa9 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_NEWL_EXIT=0xaa -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_NOTIFYDATAAVAILABLECANCEL_ENTRY=0xc0 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_NOTIFYDATAAVAILABLECANCEL_EXIT=0xc1 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_NOTIFYDATAAVAILABLECOMPLETED_ENTRY=0xd5 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_NOTIFYDATAAVAILABLECOMPLETED_EXIT=0xd6 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_NOTIFYDATAAVAILABLE_ENTRY=0xbd -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_NOTIFYDATAAVAILABLE_EXIT=0xbe -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_NOTIFYDATAAVAILABLE_EXIT_DUP1=0xbf -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_PARTIALFINDTERMINATOR_DUP1=0xe8 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_PARTIALFINDTERMINATOR_ENTRY=0xe7 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_PARTIALFINDTERMINATOR_EXIT=0xe9 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_PARTIALFINDTERMINATOR_EXIT_DUP2=0xea -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READCANCEL_ENTRY=0xc2 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READCANCEL_EXIT=0xc3 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READCOMPLETED_ENTRY=0xce -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READCOMPLETED_EXIT=0xcf -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READCOMPLETED_EXIT_DUP1=0xd0 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READONEORMORECOMPLETED_ENTRY=0xd1 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READONEORMORECOMPLETED_EXIT=0xd2 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READONEORMORECOMPLETED_EXIT_DUP1=0xd3 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READONEORMORECOMPLETED_EXIT_DUP2=0xd4 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READONEORMORE_DUP2=0xba -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READONEORMORE_ENTRY=0xb9 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READONEORMORE_EXIT=0xbb -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READONEORMORE_EXIT_DUP1=0xbc -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READWITHOUTTERMINATORS_ENTRY=0xb3 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READWITHOUTTERMINATORS_EXIT=0xb4 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READWITHOUTTERMINATORS_EXIT_DUP1=0xb5 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READWITHTERMINATORS_ENTRY=0xb6 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READWITHTERMINATORS_EXIT=0xb7 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READWITHTERMINATORS_EXIT_DUP1=0xb8 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READ_ENTRY=0xb1 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_READ_EXIT=0xb2 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_RESETBUFFER_ENTRY=0xc6 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_RESETBUFFER_EXIT=0xc7 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_SETBUFSIZE_ENTRY=0xc8 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_SETBUFSIZE_EXIT=0xc9 -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_SETBUFSIZE_EXIT_DUP1=0xca -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_SETBUFSIZE_EXIT_DUP2=0xcb -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_SETTERMINATORS_ENTRY=0xcc -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_SETTERMINATORS_EXIT=0xcd -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_WRITEBACKDATA_ENTRY=0xdd -[TRACE]TRACE_FLOW[0x8A]_CACMREADER_WRITEBACKDATA_EXIT=0xde -[TRACE]TRACE_FLOW[0x8A]_CACMSERVER_CACMSERVER_CONS_ENTRY=0x263 -[TRACE]TRACE_FLOW[0x8A]_CACMSERVER_CACMSERVER_CONS_EXIT=0x264 -[TRACE]TRACE_FLOW[0x8A]_CACMSERVER_CACMSERVER_DES_ENTRY=0x261 -[TRACE]TRACE_FLOW[0x8A]_CACMSERVER_CACMSERVER_DES_EXIT=0x262 -[TRACE]TRACE_FLOW[0x8A]_CACMSERVER_NEWL_ENTRY=0x25f -[TRACE]TRACE_FLOW[0x8A]_CACMSERVER_NEWL_EXIT=0x260 -[TRACE]TRACE_FLOW[0x8A]_CACMSERVER_NEWSESSIONL_ENTRY=0x265 -[TRACE]TRACE_FLOW[0x8A]_CACMSERVER_NEWSESSIONL_EXIT=0x266 -[TRACE]TRACE_FLOW[0x8A]_CACMSESSION_CACMSESSION_CONS_ENTRY=0x269 -[TRACE]TRACE_FLOW[0x8A]_CACMSESSION_CACMSESSION_CONS_EXIT=0x26a -[TRACE]TRACE_FLOW[0x8A]_CACMSESSION_CACMSESSION_DES_ENTRY=0x26b -[TRACE]TRACE_FLOW[0x8A]_CACMSESSION_CACMSESSION_DES_EXIT=0x26c -[TRACE]TRACE_FLOW[0x8A]_CACMSESSION_CREATEFUNCTIONSL_ENTRY=0x26d -[TRACE]TRACE_FLOW[0x8A]_CACMSESSION_CREATEFUNCTIONSL_EXIT=0x26e -[TRACE]TRACE_FLOW[0x8A]_CACMSESSION_NEWL_ENTRY=0x267 -[TRACE]TRACE_FLOW[0x8A]_CACMSESSION_NEWL_EXIT=0x268 -[TRACE]TRACE_FLOW[0x8A]_CACMSESSION_SERVICEL_ENTRY=0x26f -[TRACE]TRACE_FLOW[0x8A]_CACMSESSION_SERVICEL_EXIT=0x270 -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_CACMWRITER_CONS_ENTRY=0xf9 -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_CACMWRITER_CONS_EXIT=0xfa -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_CACMWRITER_DES_ENTRY=0xed -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_CACMWRITER_DES_EXIT=0xee -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_CHECKNEWREQUEST_ENTRY=0x101 -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_CHECKNEWREQUEST_EXIT=0x102 -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_COMPLETEREQUEST_ENTRY=0x103 -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_COMPLETEREQUEST_EXIT=0x104 -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_CONSTRUCTL_ENTRY=0xfb -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_CONSTRUCTL_EXIT=0xfc -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_ISSUEWRITE_ENTRY=0x105 -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_ISSUEWRITE_EXIT=0x106 -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_NEWL_ENTRY=0xeb -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_NEWL_EXIT=0xec -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_READDATAFROMCLIENT_ENTRY=0xff -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_READDATAFROMCLIENT_EXIT=0x100 -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_RESETBUFFER_ENTRY=0xf3 -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_RESETBUFFER_EXIT=0xf4 -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_SETBUFSIZE_ENTRY=0xf5 -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_SETBUFSIZE_EXIT=0xf6 -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_SETBUFSIZE_EXIT_DUP1=0xf7 -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_SETBUFSIZE_EXIT_DUP2=0xf8 -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_WRITECANCEL_ENTRY=0xf1 -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_WRITECANCEL_EXIT=0xf2 -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_WRITECOMPLETED_ENTRY=0xfd -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_WRITECOMPLETED_EXIT=0xfe -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_WRITE_ENTRY=0xef -[TRACE]TRACE_FLOW[0x8A]_CACMWRITER_WRITE_EXIT=0xf0 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEDATAAVAILABLENOTIFIER_CACTIVEDATAAVAILABLENOTIFIER_CONS_ENTRY=0x107 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEDATAAVAILABLENOTIFIER_CACTIVEDATAAVAILABLENOTIFIER_CONS_EXIT=0x108 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEDATAAVAILABLENOTIFIER_CACTIVEDATAAVAILABLENOTIFIER_DES_ENTRY=0x109 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEDATAAVAILABLENOTIFIER_CACTIVEDATAAVAILABLENOTIFIER_DES_EXIT=0x10a -[TRACE]TRACE_FLOW[0x8A]_CACTIVEDATAAVAILABLENOTIFIER_DOCANCEL_ENTRY=0x10f -[TRACE]TRACE_FLOW[0x8A]_CACTIVEDATAAVAILABLENOTIFIER_DOCANCEL_EXIT=0x110 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEDATAAVAILABLENOTIFIER_NEWL_ENTRY=0x10b -[TRACE]TRACE_FLOW[0x8A]_CACTIVEDATAAVAILABLENOTIFIER_NEWL_EXIT=0x10c -[TRACE]TRACE_FLOW[0x8A]_CACTIVEDATAAVAILABLENOTIFIER_NOTIFYDATAAVAILABLE_ENTRY=0x10d -[TRACE]TRACE_FLOW[0x8A]_CACTIVEDATAAVAILABLENOTIFIER_NOTIFYDATAAVAILABLE_EXIT=0x10e -[TRACE]TRACE_FLOW[0x8A]_CACTIVEDATAAVAILABLENOTIFIER_RUNL_ENTRY=0x111 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEDATAAVAILABLENOTIFIER_RUNL_EXIT=0x112 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADER_CACTIVEREADER_CONS_ENTRY=0x11f -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADER_CACTIVEREADER_CONS_EXIT=0x120 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADER_CACTIVEREADER_DES_ENTRY=0x121 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADER_CACTIVEREADER_DES_EXIT=0x122 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADER_DOCANCEL_ENTRY=0x127 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADER_DOCANCEL_EXIT=0x128 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADER_NEWL_ENTRY=0x123 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADER_NEWL_EXIT=0x124 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADER_READ_ENTRY=0x125 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADER_READ_EXIT=0x126 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADER_RUNL_ENTRY=0x129 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADER_RUNL_EXIT=0x12a -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADONEORMOREREADER_CACTIVEREADONEORMOREREADER_CONS_ENTRY=0x113 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADONEORMOREREADER_CACTIVEREADONEORMOREREADER_CONS_EXIT=0x114 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADONEORMOREREADER_CACTIVEREADONEORMOREREADER_DES_ENTRY=0x115 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADONEORMOREREADER_CACTIVEREADONEORMOREREADER_DES_EXIT=0x116 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADONEORMOREREADER_DOCANCEL_ENTRY=0x11b -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADONEORMOREREADER_DOCANCEL_EXIT=0x11c -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADONEORMOREREADER_NEWL_ENTRY=0x117 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADONEORMOREREADER_NEWL_EXIT=0x118 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADONEORMOREREADER_READONEORMORE_ENTRY=0x119 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADONEORMOREREADER_READONEORMORE_EXIT=0x11a -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADONEORMOREREADER_RUNL_ENTRY=0x11d -[TRACE]TRACE_FLOW[0x8A]_CACTIVEREADONEORMOREREADER_RUNL_EXIT=0x11e -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWRITER_CACTIVEWRITER_CONS_ENTRY=0x12b -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWRITER_CACTIVEWRITER_CONS_EXIT=0x12c -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWRITER_CACTIVEWRITER_DES_ENTRY=0x12d -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWRITER_CACTIVEWRITER_DES_EXIT=0x12e -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWRITER_DOCANCEL_ENTRY=0x133 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWRITER_DOCANCEL_EXIT=0x134 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWRITER_NEWL_ENTRY=0x12f -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWRITER_NEWL_EXIT=0x130 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWRITER_RUNL_ENTRY=0x135 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWRITER_RUNL_EXIT=0x136 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWRITER_WRITE_ENTRY=0x131 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWRITER_WRITE_EXIT=0x132 -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_BREAKREQUEST_DUP1=0x142 -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_BREAKREQUEST_ENTRY=0x141 -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_BREAKREQUEST_EXIT=0x143 -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_BREAKREQUEST_EXIT_DUP1=0x144 -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_CBREAKCONTROLLER_CONS_ENTRY=0x137 -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_CBREAKCONTROLLER_CONS_EXIT=0x138 -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_CBREAKCONTROLLER_DES_ENTRY=0x13b -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_CBREAKCONTROLLER_DES_EXIT=0x13c -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_DOCANCEL_ENTRY=0x13f -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_DOCANCEL_EXIT=0x140 -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_NEWL_ENTRY=0x139 -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_NEWL_EXIT=0x13a -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_PUBLISH_ENTRY=0x147 -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_PUBLISH_EXIT=0x148 -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_RUNL_ENTRY=0x13d -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_RUNL_EXIT=0x13e -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_SCINACTIVE_ENTRY=0x14b -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_SCINACTIVE_EXIT=0x14c -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_SCINVALID_ENTRY=0x149 -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_SCINVALID_EXIT=0x14a -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_SCLOCKED_ENTRY=0x150 -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_SCLOCKED_EXIT=0x151 -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_SCSETTIMER_ENTRY=0x14d -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_SCSETTIMER_EXIT=0x14e -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_SCSETTIMER_EXIT_DUP1=0x14f -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_STATEMACHINE_ENTRY=0x145 -[TRACE]TRACE_FLOW[0x8A]_CBREAKCONTROLLER_STATEMACHINE_EXIT=0x146 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_BREAKACTIVE_ENTRY=0x18c -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_BREAKACTIVE_EXIT=0x18d -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_BREAKCALLBACK_ENTRY=0x198 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_BREAKCALLBACK_EXIT=0x199 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_BREAKREQUEST_ENTRY=0x19a -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_BREAKREQUEST_EXIT=0x19b -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_CALLBACK_ENTRY=0x196 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_CALLBACK_EXIT=0x197 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_CCDCACMCLASS_CONS_ENTRY=0x152 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_CCDCACMCLASS_CONS_EXIT=0x153 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_CCDCACMCLASS_DES_ENTRY=0x158 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_CCDCACMCLASS_DES_EXIT=0x159 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_CONSTRUCTL_ENTRY=0x156 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_CONSTRUCTL_EXIT=0x157 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_CONVERTUSBCONFIGCODINGTOEPOC_ENTRY=0x177 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_CONVERTUSBCONFIGCODINGTOEPOC_EXIT=0x178 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_DCDSTATE_ENTRY=0x192 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_DCDSTATE_EXIT=0x193 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_DSRSTATE_ENTRY=0x190 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_DSRSTATE_EXIT=0x191 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLECLEARCOMMFEATURE_ENTRY=0x170 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLECLEARCOMMFEATURE_EXIT=0x171 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLEGETCOMMFEATURE_ENTRY=0x16e -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLEGETCOMMFEATURE_EXIT=0x16f -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLEGETENCAPRESPONSE_ENTRY=0x17f -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLEGETENCAPRESPONSE_EXIT=0x180 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLEGETLINECODING_ENTRY=0x184 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLEGETLINECODING_EXIT=0x185 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLENEWABSTRACTSTATE_ENTRY=0x179 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLENEWABSTRACTSTATE_EXIT=0x17a -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLENEWCOUNTRYCODE_ENTRY=0x17b -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLENEWCOUNTRYCODE_EXIT=0x17c -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLESENDBREAK_ENTRY=0x188 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLESENDBREAK_EXIT=0x189 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLESENDENCAPCOMMAND_ENTRY=0x17d -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLESENDENCAPCOMMAND_EXIT=0x17e -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLESETCOMMFEATURE_ENTRY=0x181 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLESETCOMMFEATURE_EXIT=0x182 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLESETCOMMFEATURE_EXIT_DUP1=0x183 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLESETCONTROLLINESTATE_ENTRY=0x186 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLESETCONTROLLINESTATE_EXIT=0x187 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLESETLINECODING_ENTRY=0x172 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLESETLINECODING_EXIT=0x173 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_HANDLESETLINECODING_EXIT_DUP1=0x174 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_NEWL_ENTRY=0x154 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_NEWL_EXIT=0x155 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_NOTIFYDATAAVAILABLECANCEL_ENTRY=0x19e -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_NOTIFYDATAAVAILABLECANCEL_EXIT=0x19f -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_NOTIFYDATAAVAILABLE_ENTRY=0x19c -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_NOTIFYDATAAVAILABLE_EXIT=0x19d -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_READCANCEL_ENTRY=0x166 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_READCANCEL_EXIT=0x167 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_READONEORMORE_ENTRY=0x15e -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_READONEORMORE_EXIT=0x15f -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_READONEORMORE_MREADONEORMOREOBSERVERREF_TDES8REF_TINT_ENTRY=0x160 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_READONEORMORE_MREADONEORMOREOBSERVERREF_TDES8REF_TINT_EXIT=0x161 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_READ_ENTRY=0x162 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_READ_ENTRY_DUP1=0x164 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_READ_ENTRY_DUP1_EXIT=0x165 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_READ_EXIT=0x163 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_RINGSTATE_ENTRY=0x18e -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_RINGSTATE_EXIT=0x18f -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_SENDSERIALSTATE_ENTRY=0x18a -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_SENDSERIALSTATE_EXIT=0x18b -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_SETBREAKACTIVE_ENTRY=0x194 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_SETBREAKACTIVE_EXIT=0x195 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_SETBREAKCALLBACK_ENTRY=0x15c -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_SETBREAKCALLBACK_EXIT=0x15d -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_SETCALLBACK_ENTRY=0x15a -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_SETCALLBACK_EXIT=0x15b -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_SETDEFAULTACM_ENTRY=0x175 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_SETDEFAULTACM_EXIT=0x176 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_WRITECANCEL_ENTRY=0x16c -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_WRITECANCEL_EXIT=0x16d -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_WRITE_ENTRY=0x168 -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_WRITE_ENTRY_DUP1=0x16a -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_WRITE_ENTRY_DUP1_EXIT=0x16b -[TRACE]TRACE_FLOW[0x8A]_CCDCACMCLASS_WRITE_EXIT=0x169 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_CCDCCONTROLINTERFACEREADER_CONS_ENTRY=0x1be -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_CCDCCONTROLINTERFACEREADER_CONS_EXIT=0x1bf -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_CCDCCONTROLINTERFACEREADER_DES_ENTRY=0x1c0 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_CCDCCONTROLINTERFACEREADER_DES_EXIT=0x1c1 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATAWITHRESPONSEREQUIRED_ENTRY=0x1ce -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATAWITHRESPONSEREQUIRED_EXIT=0x1cf -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATA_ENTRY=0x1d0 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATA_EXIT=0x1d1 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATA_EXIT_DUP1=0x1d2 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_DECODEMESSAGEHEADER_ENTRY=0x1cb -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_DECODEMESSAGEHEADER_EXIT=0x1cc -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_DOCANCEL_ENTRY=0x1c6 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_DOCANCEL_EXIT=0x1c7 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_HANDLEREADCOMPLETION_ENTRY=0x1c8 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_HANDLEREADCOMPLETION_EXIT=0x1c9 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_HANDLEREADCOMPLETION_EXIT_DUP1=0x1ca -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_NEWL_ENTRY=0x1c2 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_NEWL_EXIT=0x1c3 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_READMESSAGEDATA_ENTRY=0x1d5 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_READMESSAGEDATA_EXIT=0x1d6 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_READMESSAGEHEADER_ENTRY=0x1d3 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_READMESSAGEHEADER_EXIT=0x1d4 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_RUNL_ENTRY=0x1c4 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACEREADER_RUNL_EXIT=0x1c5 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_CCDCCONTROLINTERFACE_CONS_ENTRY=0x1a0 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_CCDCCONTROLINTERFACE_CONS_EXIT=0x1a1 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_CONSTRUCTL_ENTRY=0x1a4 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_CONSTRUCTL_EXIT=0x1a5 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_NEWL_ENTRY=0x1a2 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_NEWL_EXIT=0x1a3 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_SENDNETWORKCONNECTION_ENTRY=0x1b4 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_SENDNETWORKCONNECTION_EXIT=0x1b5 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_SENDSERIALSTATE_ENTRY=0x1b8 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_SENDSERIALSTATE_EXIT=0x1b9 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_SETUPCLASSSPECIFICDESCRIPTOR_ENTRY=0x1ac -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_SETUPCLASSSPECIFICDESCRIPTOR_EXIT=0x1ad -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_SETUPCLASSSPECIFICDESCRIPTOR_EXIT_DUP1=0x1ae -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_SETUPCLASSSPECIFICDESCRIPTOR_EXIT_DUP2=0x1af -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_SETUPINTERFACE_ENTRY=0x1a6 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_SETUPINTERFACE_EXIT=0x1a7 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_SETUPINTERFACE_EXIT_DUP1=0x1a8 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_SETUPINTERFACE_EXIT_DUP2=0x1a9 -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_SETUPINTERFACE_EXIT_DUP3=0x1aa -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_SETUPINTERFACE_EXIT_DUP4=0x1ab -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_WRITEDATA_ENTRY=0x1bb -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_WRITEDATA_EXIT=0x1bc -[TRACE]TRACE_FLOW[0x8A]_CCDCCONTROLINTERFACE_WRITEDATA_EXIT_DUP1=0x1bd -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_CANCELNOTIFYDATAAVAILABLE_ENTRY=0x1fb -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_CANCELNOTIFYDATAAVAILABLE_EXIT=0x1fc -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_CANCELREAD_ENTRY=0x1f5 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_CANCELREAD_EXIT=0x1f6 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_CANCELWRITE_ENTRY=0x1eb -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_CANCELWRITE_EXIT=0x1ec -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_CCDCDATAINTERFACE_CONS_ENTRY=0x1d7 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_CCDCDATAINTERFACE_CONS_EXIT=0x1d8 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_CCDCDATAINTERFACE_DES_ENTRY=0x1e5 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_CCDCDATAINTERFACE_DES_EXIT=0x1e6 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_CONSTRUCTL_ENTRY=0x1db -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_CONSTRUCTL_EXIT=0x1dc -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_MLSOSTATECHANGE_ENTRY=0x1e3 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_MLSOSTATECHANGE_EXIT=0x1e4 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_NEWL_ENTRY=0x1d9 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_NEWL_EXIT=0x1da -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_NOTIFYDATAAVAILABLECOMPLETED_ENTRY=0x1f7 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_NOTIFYDATAAVAILABLECOMPLETED_EXIT=0x1f8 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_NOTIFYDATAAVAILABLE_ENTRY=0x1f9 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_NOTIFYDATAAVAILABLE_EXIT=0x1fa -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_READCOMPLETED_ENTRY=0x1f3 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_READCOMPLETED_EXIT=0x1f4 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_READONEORMORECOMPLETED_ENTRY=0x1f1 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_READONEORMORECOMPLETED_EXIT=0x1f2 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_READONEORMORE_ENTRY=0x1ef -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_READONEORMORE_EXIT=0x1f0 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_READ_ENTRY=0x1ed -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_READ_EXIT=0x1ee -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_SETUPINTERFACE_ENTRY=0x1dd -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_SETUPINTERFACE_EXIT=0x1de -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_SETUPINTERFACE_EXIT_DUP1=0x1df -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_SETUPINTERFACE_EXIT_DUP2=0x1e0 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_SETUPINTERFACE_EXIT_DUP3=0x1e1 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_SETUPINTERFACE_EXIT_DUP4=0x1e2 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_WRITECOMPLETED_ENTRY=0x1e9 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_WRITECOMPLETED_EXIT=0x1ea -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_WRITE_ENTRY=0x1e7 -[TRACE]TRACE_FLOW[0x8A]_CCDCDATAINTERFACE_WRITE_EXIT=0x1e8 -[TRACE]TRACE_FLOW[0x8A]_CCDCINTERFACEBASE_BASECONSTRUCTL_ENTRY=0x1ff -[TRACE]TRACE_FLOW[0x8A]_CCDCINTERFACEBASE_BASECONSTRUCTL_EXIT=0x200 -[TRACE]TRACE_FLOW[0x8A]_CCDCINTERFACEBASE_CCDCINTERFACEBASE_CONS_ENTRY=0x1fd -[TRACE]TRACE_FLOW[0x8A]_CCDCINTERFACEBASE_CCDCINTERFACEBASE_CONS_EXIT=0x1fe -[TRACE]TRACE_FLOW[0x8A]_CCDCINTERFACEBASE_CCDCINTERFACEBASE_DES_ENTRY=0x201 -[TRACE]TRACE_FLOW[0x8A]_CCDCINTERFACEBASE_CCDCINTERFACEBASE_DES_EXIT=0x202 -[TRACE]TRACE_FLOW[0x8A]_CCDCINTERFACEBASE_GETINTERFACENUMBER_ENTRY=0x203 -[TRACE]TRACE_FLOW[0x8A]_CCDCINTERFACEBASE_GETINTERFACENUMBER_EXIT=0x204 -[TRACE]TRACE_FLOW[0x8A]_CCDCINTERFACEBASE_GETINTERFACENUMBER_EXIT_DUP1=0x205 -[TRACE]TRACE_FLOW[0x8A]_CCDCINTERFACEBASE_GETINTERFACENUMBER_EXIT_DUP2=0x206 -[TRACE]TRACE_FLOW[0x8A]_CCDCINTERFACEBASE_GETINTERFACENUMBER_EXIT_DUP3=0x207 -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_CLINKSTATENOTIFIER_CONS_ENTRY=0x273 -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_CLINKSTATENOTIFIER_CONS_EXIT=0x274 -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_CLINKSTATENOTIFIER_DES_ENTRY=0x275 -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_CLINKSTATENOTIFIER_DES_EXIT=0x276 -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_DOCANCEL_ENTRY=0x27c -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_DOCANCEL_EXIT=0x27d -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_LINKDOWN_ENTRY=0x282 -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_LINKDOWN_EXIT=0x283 -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_LINKUP_ENTRY=0x280 -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_LINKUP_EXIT=0x281 -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_NEWL_ENTRY=0x271 -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_NEWL_EXIT=0x272 -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_RUNERROR_ENTRY=0x277 -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_RUNERROR_EXIT=0x278 -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_RUNL_ENTRY=0x279 -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_RUNL_EXIT=0x27a -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_RUNL_EXIT_DUP1=0x27b -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_START_ENTRY=0x27e -[TRACE]TRACE_FLOW[0x8A]_CLINKSTATENOTIFIER_START_EXIT=0x27f -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_BREAKCANCEL_ENTRY=0x21f -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_BREAKCANCEL_EXIT=0x220 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_BREAK_ENTRY=0x21d -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_BREAK_EXIT=0x21e -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_CONSTRUCTL_ENTRY=0x20d -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_CONSTRUCTL_EXIT=0x20e -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_CREGISTRATIONPORT_CONS_ENTRY=0x20f -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_CREGISTRATIONPORT_CONS_EXIT=0x210 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_CREGISTRATIONPORT_DES_ENTRY=0x257 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_CREGISTRATIONPORT_DES_EXIT=0x258 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_DESTRUCT_ENTRY=0x235 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_DESTRUCT_EXIT=0x236 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_FREEMEMORY_ENTRY=0x237 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_FREEMEMORY_EXIT=0x238 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_GETCAPS_ENTRY=0x229 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_GETCAPS_EXIT=0x22a -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_GETCONFIG_ENTRY=0x221 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_GETCONFIG_EXIT=0x222 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_GETFLOWCONTROLSTATUS_ENTRY=0x23d -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_GETFLOWCONTROLSTATUS_EXIT=0x23e -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_GETRECEIVEBUFFERLENGTH_ENTRY=0x231 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_GETRECEIVEBUFFERLENGTH_EXIT=0x232 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_GETROLE_ENTRY=0x253 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_GETROLE_EXIT=0x254 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_GETSERVERCONFIG_ENTRY=0x227 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_GETSERVERCONFIG_EXIT=0x228 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_GETSIGNALS_ENTRY=0x22b -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_GETSIGNALS_EXIT=0x22c -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NEWL_ENTRY=0x20b -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NEWL_EXIT=0x20c -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYBREAKCANCEL_ENTRY=0x245 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYBREAKCANCEL_EXIT=0x246 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYBREAK_ENTRY=0x243 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYBREAK_EXIT=0x244 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYCONFIGCHANGECANCEL_ENTRY=0x24d -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYCONFIGCHANGECANCEL_EXIT=0x24e -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYCONFIGCHANGE_ENTRY=0x24b -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYCONFIGCHANGE_EXIT=0x24c -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYDATAAVAILABLECANCEL_ENTRY=0x23b -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYDATAAVAILABLECANCEL_EXIT=0x23c -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYDATAAVAILABLE_ENTRY=0x239 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYDATAAVAILABLE_EXIT=0x23a -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYFLOWCONTROLCHANGECANCEL_ENTRY=0x249 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYFLOWCONTROLCHANGECANCEL_EXIT=0x24a -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYFLOWCONTROLCHANGE_ENTRY=0x247 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYFLOWCONTROLCHANGE_EXIT=0x248 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYOUTPUTEMPTYCANCEL_ENTRY=0x241 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYOUTPUTEMPTYCANCEL_EXIT=0x242 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYOUTPUTEMPTY_ENTRY=0x23f -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYOUTPUTEMPTY_EXIT=0x240 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYSIGNALCHANGECANCEL_ENTRY=0x251 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYSIGNALCHANGECANCEL_EXIT=0x252 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYSIGNALCHANGE_ENTRY=0x24f -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_NOTIFYSIGNALCHANGE_EXIT=0x250 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_QUERYRECEIVEBUFFER_ENTRY=0x215 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_QUERYRECEIVEBUFFER_EXIT=0x216 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_READCANCEL_ENTRY=0x213 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_READCANCEL_EXIT=0x214 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_RESETBUFFERS_ENTRY=0x217 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_RESETBUFFERS_EXIT=0x218 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_SETCONFIG_ENTRY=0x223 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_SETCONFIG_EXIT=0x224 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_SETRECEIVEBUFFERLENGTH_ENTRY=0x233 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_SETRECEIVEBUFFERLENGTH_EXIT=0x234 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_SETROLE_ENTRY=0x255 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_SETROLE_EXIT=0x256 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_SETSERVERCONFIG_ENTRY=0x225 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_SETSERVERCONFIG_EXIT=0x226 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_SETSIGNALSTOMARK_ENTRY=0x22d -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_SETSIGNALSTOMARK_EXIT=0x22e -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_SETSIGNALSTOSPACE_ENTRY=0x22f -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_SETSIGNALSTOSPACE_EXIT=0x230 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_STARTREAD_ENTRY=0x211 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_STARTREAD_EXIT=0x212 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_STARTWRITE_ENTRY=0x219 -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_STARTWRITE_EXIT=0x21a -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_WRITECANCEL_ENTRY=0x21b -[TRACE]TRACE_FLOW[0x8A]_CREGISTRATIONPORT_WRITECANCEL_EXIT=0x21c -[TRACE]TRACE_FLOW[0x8A]_DLLMAIN_LIBENTRYL_ECACM_ENTRY=0x20a -[TRACE]TRACE_FLOW[0x8A]_DUP1_CACMPORTFACTORY_CACMPORTFACTORY_ENTRY=0x99 -[TRACE]TRACE_FLOW[0x8A]_DUP1_CACMPORTFACTORY_CACMPORTFACTORY_EXIT=0x9a -[TRACE]TRACE_FLOW[0x8A]_DUP1_CACMPORT_GETROLE_EXIT=0x88 -[TRACE]TRACE_FLOW[0x8A]_DUP1_CCDCCONTROLINTERFACEREADER_DECODEMESSAGEHEADER_EXIT=0x1cd -[TRACE]TRACE_FLOW[0x8A]_DUP1_CCDCCONTROLINTERFACE_CCDCCONTROLINTERFACE_ENTRY=0x1b0 -[TRACE]TRACE_FLOW[0x8A]_DUP1_CCDCCONTROLINTERFACE_CCDCCONTROLINTERFACE_EXIT=0x1b1 -[TRACE]TRACE_FLOW[0x8A]_DUP1_CCDCCONTROLINTERFACE_SENDSERIALSTATE_EXIT=0x1ba -[TRACE]TRACE_FLOW[0x8A]_TUSBCSCLASSDESCRIPTOR_DES_ENTRY=0x208 -[TRACE]TRACE_FLOW[0x8A]_TUSBCSCLASSDESCRIPTOR_DES_EXIT=0x209 -[TRACE]TRACE_FLOW[0x8A]_TUSBNOTIFICATIONNETWORKCONNECTION_PACKBUFFER_ENTRY=0x1b2 -[TRACE]TRACE_FLOW[0x8A]_TUSBNOTIFICATIONNETWORKCONNECTION_PACKBUFFER_EXIT=0x1b3 -[TRACE]TRACE_FLOW[0x8A]_TUSBNOTIFICATIONSERIALSTATE_PACKBUFFER_ENTRY=0x1b6 -[TRACE]TRACE_FLOW[0x8A]_TUSBNOTIFICATIONSERIALSTATE_PACKBUFFER_EXIT=0x1b7 -[TRACE]TRACE_FLOW[0x8A]_TUSBREQUESTHDR_DECODE_ENTRY=0x25b -[TRACE]TRACE_FLOW[0x8A]_TUSBREQUESTHDR_DECODE_EXIT=0x25c -[TRACE]TRACE_FLOW[0x8A]_TUSBREQUESTHDR_DECODE_EXIT_DUP1=0x25d -[TRACE]TRACE_FLOW[0x8A]_TUSBREQUESTHDR_DES_ENTRY=0x259 -[TRACE]TRACE_FLOW[0x8A]_TUSBREQUESTHDR_DES_EXIT=0x25a -[TRACE]TRACE_FLOW[0x8A]_TUSBREQUESTHDR_ISDATARESPONSEREQUIRED_ENTRY=0x25e -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_ACMPORTCLOSED=0x6f -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_CHECKACMARRAY=0x74 -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_CONSTRUCTL=0x69 -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_CONSTRUCTL_DUP1=0x6a -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_CONSTRUCTL_DUP2=0x6b -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_CONSTRUCTL_DUP3=0x6c -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_CONSTRUCTL_DUP4=0x6d -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_CREATEFUNCTIONL=0x78 -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_CREATEFUNCTIONL_DUP1=0x79 -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_CREATEFUNCTIONL_DUP2=0x7a -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_CREATEFUNCTIONL_DUP3=0x7b -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_CREATEFUNCTIONS=0x75 -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_CREATEFUNCTIONS_DUP1=0x76 -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_CREATEFUNCTIONS_DUP2=0x77 -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_DESTROYFUNCTIONS=0x72 -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_DESTROYFUNCTIONS_DUP1=0x73 -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_LOGPORTSANDFUNCTIONS=0x7c -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_LOGPORTSANDFUNCTIONS_DUP1=0x7d -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_NEWPORTL=0x70 -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_NEWPORTL_DUP1=0x71 -[TRACE]TRACE_NORMAL[0x86]_CACMPORTFACTORY_PUBLISHACMCONFIG=0x6e -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_BREAK=0xe -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_BREAKCANCEL=0x12 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_BREAKCANCEL_DUP1=0x13 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_BREAKREQUESTCOMPLETED=0x4a -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_BREAKREQUESTCOMPLETED_DUP1=0x4b -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_BREAKSTATECHANGE=0x4c -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_BREAKSTATECHANGE_DUP1=0x4d -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_BREAKSTATECHANGE_DUP2=0x4e -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_BREAKSTATECHANGE_DUP3=0x4f -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_BREAK_DUP1=0xf -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_BREAK_DUP2=0x10 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_BREAK_DUP3=0x11 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_CACMPORT_DESTRUCTRURE=0x67 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_CACMPORT_DESTRUCTRURE_DUP1=0x68 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_DOSETBUFFERLENGTHS=0x3a -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_DOSETBUFFERLENGTHS_DUP1=0x3b -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_DOSETBUFFERLENGTHS_DUP2=0x3c -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_DOSETBUFFERLENGTHS_DUP3=0x3d -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_DOSETBUFFERLENGTHS_DUP4=0x3e -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETCAPS=0x2b -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETCAPS_DUP1=0x2c -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETCONFIG=0x14 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETCONFIG_DUP1=0x16 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETCONFIG_DUP10=0x1f -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETCONFIG_DUP11=0x20 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETCONFIG_DUP12=0x15 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETCONFIG_DUP2=0x17 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETCONFIG_DUP3=0x18 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETCONFIG_DUP4=0x19 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETCONFIG_DUP5=0x1a -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETCONFIG_DUP6=0x1b -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETCONFIG_DUP7=0x1c -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETCONFIG_DUP8=0x1d -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETCONFIG_DUP9=0x1e -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETFLOWCONTROLSTATUS=0x44 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETFLOWCONTROLSTATUS_DUP1=0x45 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETRECEIVEBUFFERLENGTH=0x38 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETRECEIVEBUFFERLENGTH_DUP1=0x39 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETROLE=0x5f -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETROLE_DUP1=0x60 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETSERVERCONFIG=0x29 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETSERVERCONFIG_DUP1=0x2a -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETSIGNALS=0x2d -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_GETSIGNALS_DUP1=0x2e -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_HANDLECONFIGNOTIFICATION_DUP6=0x24 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_HOSTSIGNALCHANGE=0x5a -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_HOSTSIGNALCHANGE_DUP1=0x5b -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_HOSTSIGNALCHANGE_DUP2=0x5c -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_HOSTSIGNALCHANGE_DUP3=0x5d -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_HOSTSIGNALCHANGE_DUP4=0x5e -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_NOTIFYBREAK=0x48 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_NOTIFYBREAKCANCEL=0x49 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_NOTIFYCONFIGCHANGE=0x52 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_NOTIFYCONFIGCHANGECANCEL=0x54 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_NOTIFYCONFIGCHANGE_DUP1=0x53 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_NOTIFYDATAAVAILABLE=0x42 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_NOTIFYDATAAVAILABLECANCEL=0x43 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_NOTIFYFLOWCONTROLCHANGE=0x50 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_NOTIFYFLOWCONTROLCHANGE_DUP1=0x51 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_NOTIFYOUTPUTEMPTY=0x46 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_NOTIFYOUTPUTEMPTY_DUP1=0x47 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_NOTIFYSIGNALCHANGE=0x55 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_NOTIFYSIGNALCHANGECANCEL=0x59 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_NOTIFYSIGNALCHANGE_DUP1=0x56 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_NOTIFYSIGNALCHANGE_DUP2=0x57 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_NOTIFYSIGNALCHANGE_DUP3=0x58 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_QUERYRECEIVEBUFFER=0x5 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_QUERYRECEIVEBUFFER_DUP1=0x6 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_READCANCEL=0x4 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_RESETBUFFERS=0x7 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_RESETBUFFERS_DUP1=0x8 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_RESETBUFFERS_DUP2=0x9 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETACM=0x63 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETACM_DUP1=0x65 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETACM_DUP2=0x66 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETACM_DUP3=0x64 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETCONFIG=0x21 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETCONFIG_DUP1=0x22 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETCONFIG_DUP2=0x23 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETRECEIVEBUFFERLENGTH=0x3f -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETRECEIVEBUFFERLENGTH_DUP1=0x40 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETRECEIVEBUFFERLENGTH_DUP2=0x41 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETROLE=0x61 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETROLE_DUP1=0x62 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETSERVERCONFIG=0x25 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETSERVERCONFIG_DUP1=0x26 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETSERVERCONFIG_DUP2=0x27 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETSERVERCONFIG_DUP3=0x28 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETSIGNALS=0x35 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETSIGNALSTOMARK=0x2f -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETSIGNALSTOMARK_DUP1=0x30 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETSIGNALSTOMARK_DUP2=0x31 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETSIGNALSTOSPACE=0x32 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETSIGNALSTOSPACE_DUP1=0x33 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETSIGNALSTOSPACE_DUP2=0x34 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETSIGNALS_DUP1=0x36 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_SETSIGNALS_DUP2=0x37 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_STARTREAD=0x1 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_STARTREAD_DUP1=0x2 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_STARTREAD_DUP2=0x3 -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_STARTWRITE=0xa -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_STARTWRITE_DUP1=0xb -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_STARTWRITE_DUP2=0xc -[TRACE]TRACE_NORMAL[0x86]_CACMPORT_WRITECANCEL=0xd -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_BUFLEN=0x89 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_BUFLEN_DUP1=0x8a -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_BUFLEN_DUP2=0x8b -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_BUFLEN_DUP3=0x8c -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED=0x9e -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED_DUP1=0x9f -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED_DUP2=0xa0 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED_DUP3=0xa1 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED_DUP4=0xa2 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED_DUP5=0xa3 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_CHECKFORBUFFEREDTERMINATORSANDPROCEED_DUP6=0x9d -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_COMPLETEREQUEST=0xad -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_COMPLETEREQUEST_DUP1=0xae -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_COMPLETEREQUEST_DUP2=0xaf -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_CONSTRUCTL=0x7e -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_FINDTERMINATOR=0xb0 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_NOTIFYDATAAVAILABLECANCEL=0x87 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_NOTIFYDATAAVAILABLECOMPLETED=0x9b -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_NOTIFYDATAAVAILABLECOMPLETED_DUP2=0x9c -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_PARTIALFINDTERMINATOR=0xb1 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_PARTIALFINDTERMINATOR_DUP2=0xb2 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READ=0x7f -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READCANCEL=0x88 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READCOMPLETED=0x92 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READCOMPLETED_DUP1=0x93 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READCOMPLETED_DUP2=0x94 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READONEORMORE=0x85 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READONEORMORECOMPLETED=0x95 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READONEORMORECOMPLETED_DUP1=0x96 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READONEORMORECOMPLETED_DUP2=0x97 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READONEORMORECOMPLETED_DUP3=0x98 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READONEORMORECOMPLETED_DUP4=0x99 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READONEORMORECOMPLETED_DUP5=0x9a -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READONEORMORE_DUP1=0x86 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READWITHOUTTERMINATORS=0x80 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READWITHOUTTERMINATORS_DUP1=0x81 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READWITHOUTTERMINATORS_DUP2=0x82 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READWITHOUTTERMINATORS_DUP3=0x83 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_READWITHTERMINATORS=0x84 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_SETBUFSIZE=0x8d -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_SETBUFSIZE_DUP1=0x8e -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_SETBUFSIZE_DUP2=0x8f -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_SETTERMINATORS=0x90 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_SETTERMINATORS_DUP1=0x91 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_WRITEBACKDATA_DUP10=0xa8 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_WRITEBACKDATA_DUP11=0xa9 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_WRITEBACKDATA_DUP12=0xaa -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_WRITEBACKDATA_DUP13=0xab -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_WRITEBACKDATA_DUP14=0xac -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_WRITEBACKDATA_DUP6=0xa4 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_WRITEBACKDATA_DUP7=0xa5 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_WRITEBACKDATA_DUP8=0xa6 -[TRACE]TRACE_NORMAL[0x86]_CACMREADER_WRITEBACKDATA_DUP9=0xa7 -[TRACE]TRACE_NORMAL[0x86]_CACMSERVER_NEWSESSIONL=0x152 -[TRACE]TRACE_NORMAL[0x86]_CACMSESSION_CREATEFUNCTIONSL_DUP1=0x153 -[TRACE]TRACE_NORMAL[0x86]_CACMSESSION_SERVICEL=0x154 -[TRACE]TRACE_NORMAL[0x86]_CACMWRITER_COMPLETEREQUEST=0xbc -[TRACE]TRACE_NORMAL[0x86]_CACMWRITER_COMPLETEREQUEST_DUP1=0xbd -[TRACE]TRACE_NORMAL[0x86]_CACMWRITER_CONSTRUCTL=0xb8 -[TRACE]TRACE_NORMAL[0x86]_CACMWRITER_ISSUEWRITE=0xbe -[TRACE]TRACE_NORMAL[0x86]_CACMWRITER_READDATAFROMCLIENT=0xbb -[TRACE]TRACE_NORMAL[0x86]_CACMWRITER_SETBUFSIZE=0xb5 -[TRACE]TRACE_NORMAL[0x86]_CACMWRITER_SETBUFSIZE_DUP1=0xb6 -[TRACE]TRACE_NORMAL[0x86]_CACMWRITER_SETBUFSIZE_DUP2=0xb7 -[TRACE]TRACE_NORMAL[0x86]_CACMWRITER_WRITE=0xb3 -[TRACE]TRACE_NORMAL[0x86]_CACMWRITER_WRITECANCEL=0xb4 -[TRACE]TRACE_NORMAL[0x86]_CACMWRITER_WRITECOMPLETED=0xb9 -[TRACE]TRACE_NORMAL[0x86]_CACMWRITER_WRITECOMPLETED_DUP1=0xba -[TRACE]TRACE_NORMAL[0x86]_CACTIVEDATAAVAILABLENOTIFIER_RUNL=0xbf -[TRACE]TRACE_NORMAL[0x86]_CACTIVEREADER_RUNL=0xc2 -[TRACE]TRACE_NORMAL[0x86]_CACTIVEREADONEORMOREREADER_READONEORMORE=0xc0 -[TRACE]TRACE_NORMAL[0x86]_CACTIVEREADONEORMOREREADER_RUNL=0xc1 -[TRACE]TRACE_NORMAL[0x86]_CACTIVEWRITER_RUNL=0xc5 -[TRACE]TRACE_NORMAL[0x86]_CACTIVEWRITER_RUNL_DUP1=0xc6 -[TRACE]TRACE_NORMAL[0x86]_CACTIVEWRITER_WRITE=0xc3 -[TRACE]TRACE_NORMAL[0x86]_CACTIVEWRITER_WRITE_DUP1=0xc4 -[TRACE]TRACE_NORMAL[0x86]_CBREAKCONTROLLER_BREAKREQUEST=0xc8 -[TRACE]TRACE_NORMAL[0x86]_CBREAKCONTROLLER_CONSTRUCTL=0xc7 -[TRACE]TRACE_NORMAL[0x86]_CBREAKCONTROLLER_PUBLISH_DUP1=0xcb -[TRACE]TRACE_NORMAL[0x86]_CBREAKCONTROLLER_PUBLISH_DUP2=0xcc -[TRACE]TRACE_NORMAL[0x86]_CBREAKCONTROLLER_PUBLISH_DUP3=0xcd -[TRACE]TRACE_NORMAL[0x86]_CBREAKCONTROLLER_PUBLISH_DUP4=0xce -[TRACE]TRACE_NORMAL[0x86]_CBREAKCONTROLLER_STATEMACHINE_DUP1=0xc9 -[TRACE]TRACE_NORMAL[0x86]_CBREAKCONTROLLER_STATEMACHINE_DUP2=0xca -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_BREAKREQUEST_DUP1=0x100 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_CONSTRUCTL=0xcf -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_CONSTRUCTL_DUP1=0xd0 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_CONSTRUCTL_DUP2=0xd1 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_CONSTRUCTL_DUP3=0xd2 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_CONSTRUCTL_DUP4=0xd3 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_CONSTRUCTL_DUP5=0xd4 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLECLEARCOMMFEATURE=0xe3 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLECLEARCOMMFEATURE_DUP1=0xe4 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLECLEARCOMMFEATURE_DUP2=0xe5 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLECLEARCOMMFEATURE_DUP3=0xe6 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLECLEARCOMMFEATURE_DUP4=0xe7 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLECLEARCOMMFEATURE_DUP5=0xe8 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLEGETCOMMFEATURE=0xdd -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLEGETCOMMFEATURE_DUP1=0xde -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLEGETCOMMFEATURE_DUP2=0xdf -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLEGETCOMMFEATURE_DUP3=0xe0 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLEGETCOMMFEATURE_DUP4=0xe1 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLEGETCOMMFEATURE_DUP5=0xe2 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLEGETENCAPRESPONSE=0xf1 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLENEWABSTRACTSTATE=0xea -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLENEWABSTRACTSTATE_DUP1=0xeb -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLENEWABSTRACTSTATE_DUP2=0xec -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLENEWABSTRACTSTATE_DUP3=0xed -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLENEWCOUNTRYCODE=0xee -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLENEWCOUNTRYCODE_DUP1=0xef -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLESENDBREAK=0xfc -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLESENDBREAK_DUP1=0xfd -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLESENDENCAPCOMMAND=0xf0 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLESETCOMMFEATURE=0xf2 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLESETCOMMFEATURE_DUP1=0xf3 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLESETCOMMFEATURE_DUP2=0xf4 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLESETCOMMFEATURE_DUP3=0xf5 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLESETCOMMFEATURE_DUP4=0xf6 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLESETCOMMFEATURE_DUP5=0xf7 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLESETCOMMFEATURE_DUP6=0xf8 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLESETCOMMFEATURE_DUP7=0xf9 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLESETCONTROLLINESTATE=0xfa -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLESETCONTROLLINESTATE_DUP1=0xfb -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_HANDLESETLINECODING=0xe9 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_NOTIFYDATAAVAILABLE=0x101 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_READ=0xd9 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_READONEORMORE=0xd7 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_READONEORMORE_MREADONEORMOREOBSERVERREF_TDES8REF_TINT=0xd8 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_READ_DUP1=0xda -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_SENDSERIALSTATE=0xfe -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_SENDSERIALSTATE_DUP1=0xff -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_SETBREAKCALLBACK=0xd6 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_SETCALLBACK=0xd5 -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_WRITE=0xdb -[TRACE]TRACE_NORMAL[0x86]_CCDCACMCLASS_WRITE_DUP1=0xdc -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATA=0x124 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATAWITHRESPONSEREQUIRED=0x122 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATAWITHRESPONSEREQUIRED_DUP1=0x123 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATA_DUP1=0x125 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACEREADER_DECODEMESSAGEDATA_DUP2=0x126 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACEREADER_DECODEMESSAGEHEADER=0x120 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACEREADER_DECODEMESSAGEHEADER_DUP1=0x121 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACEREADER_HANDLEREADCOMPLETION=0x11d -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACEREADER_HANDLEREADCOMPLETION_DUP1=0x11e -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACEREADER_HANDLEREADCOMPLETION_DUP2=0x11f -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACEREADER_READMESSAGEDATA=0x127 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACEREADER_RUNL=0x11c -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_CONSTRUCTL=0x103 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_NEWL=0x102 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SENDNETWORKCONNECTION=0x112 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SENDNETWORKCONNECTION_DUP1=0x113 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SENDSERIALSTATE_DUP7=0x114 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SENDSERIALSTATE_DUP8=0x115 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SETUPCLASSSPECIFICDESCRIPTOR=0x10e -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SETUPCLASSSPECIFICDESCRIPTOR_DUP1=0x10f -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SETUPCLASSSPECIFICDESCRIPTOR_DUP2=0x110 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SETUPCLASSSPECIFICDESCRIPTOR_DUP3=0x111 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SETUPINTERFACE=0x104 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SETUPINTERFACE_DUP1=0x105 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SETUPINTERFACE_DUP10=0x10c -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SETUPINTERFACE_DUP11=0x10d -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SETUPINTERFACE_DUP2=0x106 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SETUPINTERFACE_DUP3=0x107 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SETUPINTERFACE_DUP4=0x108 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SETUPINTERFACE_DUP5=0x109 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SETUPINTERFACE_DUP8=0x10a -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_SETUPINTERFACE_DUP9=0x10b -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_WRITEDATA=0x116 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_WRITEDATA_DUP1=0x117 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_WRITEDATA_DUP2=0x118 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_WRITEDATA_DUP3=0x119 -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_WRITEDATA_DUP4=0x11a -[TRACE]TRACE_NORMAL[0x86]_CCDCCONTROLINTERFACE_WRITEDATA_DUP5=0x11b -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_NEWL=0x128 -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_NOTIFYDATAAVAILABLECOMPLETED=0x13f -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_NOTIFYDATAAVAILABLECOMPLETED_DUP1=0x140 -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_READ=0x136 -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_READCOMPLETED=0x13b -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_READCOMPLETED_DUP1=0x13c -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_READCOMPLETED_DUP3=0x13d -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_READCOMPLETED_DUP5=0x13e -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_READONEORMORE=0x137 -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_READONEORMORECOMPLETED=0x138 -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_READONEORMORECOMPLETED_DUP1=0x139 -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_READONEORMORECOMPLETED_DUP5=0x13a -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_SETUPINTERFACE=0x129 -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_SETUPINTERFACE_DUP1=0x12a -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_SETUPINTERFACE_DUP2=0x12b -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_SETUPINTERFACE_DUP3=0x12c -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_SETUPINTERFACE_DUP4=0x12e -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_SETUPINTERFACE_DUP6=0x12f -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_SETUPINTERFACE_DUP7=0x130 -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_SETUPINTERFACE_DUP8=0x131 -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_SETUPINTERFACE_DUP9=0x12d -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_WRITECOMPLETED=0x132 -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_WRITECOMPLETED_DUP2=0x133 -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_WRITECOMPLETED_DUP4=0x134 -[TRACE]TRACE_NORMAL[0x86]_CCDCDATAINTERFACE_WRITECOMPLETED_DUP8=0x135 -[TRACE]TRACE_NORMAL[0x86]_CCDCINTERFACEBASE_BASECONSTRUCTL=0x141 -[TRACE]TRACE_NORMAL[0x86]_CCDCINTERFACEBASE_BASECONSTRUCTL_DUP1=0x142 -[TRACE]TRACE_NORMAL[0x86]_CCDCINTERFACEBASE_BASECONSTRUCTL_DUP2=0x143 -[TRACE]TRACE_NORMAL[0x86]_CCDCINTERFACEBASE_CCDCINTERFACEBASE_DES=0x144 -[TRACE]TRACE_NORMAL[0x86]_CCDCINTERFACEBASE_CCDCINTERFACEBASE_DES_DUP1=0x145 -[TRACE]TRACE_NORMAL[0x86]_CCDCINTERFACEBASE_GETINTERFACENUMBER=0x146 -[TRACE]TRACE_NORMAL[0x86]_CCDCINTERFACEBASE_GETINTERFACENUMBER_DUP1=0x147 -[TRACE]TRACE_NORMAL[0x86]_CCDCINTERFACEBASE_GETINTERFACENUMBER_DUP2=0x148 -[TRACE]TRACE_NORMAL[0x86]_CCDCINTERFACEBASE_GETINTERFACENUMBER_DUP3=0x149 -[TRACE]TRACE_NORMAL[0x86]_CCDCINTERFACEBASE_GETINTERFACENUMBER_DUP4=0x14a -[TRACE]TRACE_NORMAL[0x86]_CCDCINTERFACEBASE_GETINTERFACENUMBER_DUP5=0x14b -[TRACE]TRACE_NORMAL[0x86]_CLINKSTATENOTIFIER_RUNL=0x155 -[TRACE]TRACE_NORMAL[0x86]_CLINKSTATENOTIFIER_RUNL_DUP1=0x156 -[TRACE]TRACE_NORMAL[0x86]_CREGISTRATIONPORT_CONSTRUCTL=0x14c -[TRACE]TRACE_NORMAL[0x86]_CREGISTRATIONPORT_GETROLE=0x151 -[TRACE]TRACE_NORMAL[0x86]_CREGISTRATIONPORT_SETSIGNALSTOMARK=0x14d -[TRACE]TRACE_NORMAL[0x86]_CREGISTRATIONPORT_SETSIGNALSTOMARK_DUP1=0x14e -[TRACE]TRACE_NORMAL[0x86]_CREGISTRATIONPORT_SETSIGNALSTOSPACE=0x14f -[TRACE]TRACE_NORMAL[0x86]_CREGISTRATIONPORT_SETSIGNALSTOSPACE_DUP1=0x150 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/bld.inf --- a/usbmgmt/usbmgr/device/classdrivers/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/bld.inf Wed Sep 01 12:35:00 2010 +0100 @@ -19,5 +19,4 @@ #include "ms/bld.inf" #include "obex/bld.inf" #include "whcm/bld.inf" -#include "ncm/group/bld.inf" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/group/msclasscontroller.mmp --- a/usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/group/msclasscontroller.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/group/msclasscontroller.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-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" @@ -28,16 +28,14 @@ uid 0x10009d8d 0x10204bbb +userinclude ../inc + +OS_LAYER_SYSTEMINCLUDE_SYMBIAN + sourcepath ../src source CUsbMsClassController.cpp source CUsbMsClassImpCollection.cpp -USERINCLUDE ../inc -USERINCLUDE ../traces - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - - start resource usbms.rss targetpath /private/10204bbb header @@ -52,4 +50,6 @@ LIBRARY efsrv.lib LIBRARY bafl.lib +#include + VENDORID 0x70000001 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/src/CUsbMsClassController.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/src/CUsbMsClassController.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/src/CUsbMsClassController.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-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" @@ -28,13 +28,14 @@ #include #include #include "CUsbMsClassController.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbMsClassControllerTraces.h" +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "MSCC"); #endif +// Panic category #ifdef _DEBUG -// Panic category _LIT( KMsCcPanicCategory, "UsbMsCc" ); #endif @@ -57,12 +58,12 @@ CUsbMsClassController* CUsbMsClassController::NewL( MUsbClassControllerNotify& aOwner) { - OstTraceFunctionEntry0( CUSBMSCLASSCONTROLLER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY + CUsbMsClassController* r = new (ELeave) CUsbMsClassController(aOwner); CleanupStack::PushL(r); r->ConstructL(); CleanupStack::Pop(); - OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_NEWL_EXIT ); return r; } @@ -71,9 +72,7 @@ */ CUsbMsClassController::~CUsbMsClassController() { - OstTraceFunctionEntry0( CUSBMSCLASSCONTROLLER_CUSBMSCLASSCONTROLLER_DES_ENTRY ); Cancel(); - OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_CUSBMSCLASSCONTROLLER_DES_EXIT ); } /** @@ -85,9 +84,7 @@ MUsbClassControllerNotify& aOwner) : CUsbClassControllerPlugIn(aOwner, KMsStartupPriority) { - OstTraceFunctionEntry0( CUSBMSCLASSCONTROLLER_CUSBMSCLASSCONTROLLER_CONS_ENTRY ); // Intentionally left blank - OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_CUSBMSCLASSCONTROLLER_CONS_EXIT ); } /** @@ -95,9 +92,9 @@ */ void CUsbMsClassController::ConstructL() { - OstTraceFunctionEntry0( CUSBMSCLASSCONTROLLER_CONSTRUCT_ENTRY ); + LOG_FUNC + ReadMassStorageConfigL(); - OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_CONSTRUCT_EXIT ); } /** @@ -107,16 +104,11 @@ */ void CUsbMsClassController::Start(TRequestStatus& aStatus) { - OstTraceFunctionEntry0( CUSBMSCLASSCONTROLLER_START_ENTRY ); + LOG_FUNC // The service state should always be idle when this function is called // (guaranteed by CUsbSession). - - if (iState != EUsbServiceIdle) - { - OstTrace1( TRACE_FATAL, CUSBMSCLASSCONTROLLER_START, "CUsbMsClassController::Star;iState=%d", (TInt)iState ); - __ASSERT_DEBUG( EFalse, User::Panic(KMsCcPanicCategory, EBadApiCall) ); - } + __ASSERT_DEBUG( iState == EUsbServiceIdle, _USB_PANIC(KMsCcPanicCategory, EBadApiCall) ); TRequestStatus* reportStatus = &aStatus; @@ -129,9 +121,7 @@ { iState = EUsbServiceIdle; User::RequestComplete(reportStatus, err); - OstTrace0( TRACE_NORMAL, CUSBMSCLASSCONTROLLER_START_DUP1, - "CUsbMsClassController::Start;Failed to connect to mass storage file server" ); - OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_START_EXIT ); + LOGTEXT(_L8("Failed to connect to mass storage file server")); return; } @@ -141,19 +131,19 @@ if (err != KErrNone) { iState = EUsbServiceIdle; + // Connection was created successfully in last step // Get it closed since failed to start device. iUsbMs.Close(); + User::RequestComplete(reportStatus, err); - OstTrace0( TRACE_NORMAL, CUSBMSCLASSCONTROLLER_START_DUP2, - "CUsbMsClassController::Start;Failed to start mass storage device" ); - OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_START_EXIT_DUP1 ); + LOGTEXT(_L8("Failed to start mass storage device")); return; } iState = EUsbServiceStarted; + User::RequestComplete(reportStatus, KErrNone); - OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_START_EXIT_DUP2 ); } /** @@ -163,32 +153,27 @@ */ void CUsbMsClassController::Stop(TRequestStatus& aStatus) { - OstTraceFunctionEntry0( CUSBMSCLASSCONTROLLER_STOP_ENTRY ); + LOG_FUNC // The service state should always be started when this function is called // (guaranteed by CUsbSession) - if (iState != EUsbServiceStarted) - { - OstTrace1( TRACE_FATAL, CUSBMSCLASSCONTROLLER_STOP, "CUsbMsClassController::Stop;iState=%d", (TInt)iState ); - __ASSERT_DEBUG( EFalse, User::Panic(KMsCcPanicCategory, EBadApiCall) ); - } + __ASSERT_DEBUG( iState == EUsbServiceStarted, _USB_PANIC(KMsCcPanicCategory, EBadApiCall) ); TRequestStatus* reportStatus = &aStatus; + TInt err = iUsbMs.Stop(); if (err != KErrNone) { iState = EUsbServiceStarted; User::RequestComplete(reportStatus, err); - OstTrace0( TRACE_NORMAL, CUSBMSCLASSCONTROLLER_STOP_DUP1, - "CUsbMsClassController::Start;Failed to stop mass storage device" ); - OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_STOP_EXIT ); + LOGTEXT(_L8("Failed to stop mass storage device")); return; } iUsbMs.Close(); + User::RequestComplete(reportStatus, KErrNone); - OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_START_STOP_DUP1 ); } /** @@ -199,11 +184,7 @@ */ void CUsbMsClassController::GetDescriptorInfo(TUsbDescriptor& /*aDescriptorInfo*/) const { - OstTraceFunctionEntry0( CUSBMSCLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY ); - OstTrace1( TRACE_FATAL, CUSBMSCLASSCONTROLLER_GETDESCRIPTORINFO, - "CUsbMsClassController::GetDescriptorInfo;panic line=%d", (TInt)__LINE__ ); - __ASSERT_DEBUG( EFalse, User::Panic(KMsCcPanicCategory, EUnusedFunction) ); - OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_GETDESCRIPTORINFO_EXIT ); + __ASSERT_DEBUG( EFalse, _USB_PANIC(KMsCcPanicCategory, EUnusedFunction)); } /** @@ -212,11 +193,7 @@ */ void CUsbMsClassController::RunL() { - OstTraceFunctionEntry0( CUSBMSCLASSCONTROLLER_RUNL_ENTRY ); - OstTrace1( TRACE_FATAL, CUSBMSCLASSCONTROLLER_RUNL, - "CUsbMsClassController::RunL;panic line=%d", (TInt)__LINE__ ); - __ASSERT_DEBUG( EFalse, User::Panic(KMsCcPanicCategory, EUnusedFunction) ); - OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_RUNL_EXIT ); + __ASSERT_DEBUG( EFalse, _USB_PANIC(KMsCcPanicCategory, EUnusedFunction) ); } /** @@ -225,11 +202,7 @@ */ void CUsbMsClassController::DoCancel() { - OstTraceFunctionEntry0( CUSBMSCLASSCONTROLLER_DOCANCEL_ENTRY ); - OstTrace1( TRACE_FATAL, CUSBMSCLASSCONTROLLER_DOCANCEL, - "CUsbMsClassController::DoCancel;panic line=%d", (TInt)__LINE__ ); - __ASSERT_DEBUG( EFalse, User::Panic(KMsCcPanicCategory, EUnusedFunction) ); - OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_DOCANCEL_EXIT ); + __ASSERT_DEBUG( EFalse, _USB_PANIC(KMsCcPanicCategory, EUnusedFunction) ); } /** @@ -241,11 +214,7 @@ */ TInt CUsbMsClassController::RunError(TInt /*aError*/) { - OstTraceFunctionEntry0( CUSBMSCLASSCONTROLLER_RUNERROR_ENTRY ); - OstTrace1( TRACE_FATAL, CUSBMSCLASSCONTROLLER_RUNERROR, - "CUsbMsClassController::RunError;panic line=%d", (TInt)__LINE__ ); - __ASSERT_DEBUG( EFalse, User::Panic(KMsCcPanicCategory, EUnusedFunction) ); - OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_RUNERROR_EXIT ); + __ASSERT_DEBUG( EFalse, _USB_PANIC(KMsCcPanicCategory, EUnusedFunction) ); return KErrNone; } @@ -254,31 +223,21 @@ */ void CUsbMsClassController::ReadMassStorageConfigL() { - OstTraceFunctionEntry0( CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_ENTRY ); + LOG_FUNC // Try to connect to file server - RFs fs; - TInt fserr = fs.Connect(); - - if (fserr < 0) - { - OstTrace1( TRACE_FATAL, CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL, - "CUsbMsClassController::ReadMassStorageConfigL;leave err = %d", fserr ); - User::Leave(fserr); - } + RFs fs; + LEAVEIFERRORL(fs.Connect()); CleanupClosePushL(fs); RResourceFile resource; TRAPD(err, resource.OpenL(fs, KUsbMsResource)); - OstTrace1( TRACE_NORMAL, CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_DUP1, - "CUsbMsClassController::ReadMassStorageConfigL;Opened resource file with error %d", err ); + LOGTEXT2(_L8("Opened resource file with error %d"), err); if (err != KErrNone) { - OstTrace0( TRACE_NORMAL, CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_DUP2, - "CUsbMsClassController::ReadMassStorageConfigL;Unable to open resource file" ); + LOGTEXT(_L8("Unable to open resource file")); CleanupStack::PopAndDestroy(&fs); - OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_EXIT ); return; } @@ -290,10 +249,8 @@ TRAPD(ret, msConfigBuf = resource.AllocReadL(USBMS_CONFIG)); if (ret != KErrNone) { - OstTrace0( TRACE_NORMAL, CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_DUP3, - "CUsbMsClassController::ReadMassStorageConfigL;Failed to open mass storage configuration file" ); + LOGTEXT(_L8("Failed to open mass storage configuration file")); CleanupStack::PopAndDestroy(2, &fs); - OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_EXIT_DUP1 ); return; } CleanupStack::PushL(msConfigBuf); @@ -325,17 +282,11 @@ ConfigItem(productRev, iMsConfig.iProductRev, 4); // Debugging - OstTraceExt1( TRACE_NORMAL, CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_DUP4, - "CUsbMsClassController::ReadMassStorageConfigL;vendorId = %S\n", vendorId ); - - OstTraceExt1( TRACE_NORMAL, CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_DUP5, - "CUsbMsClassController::ReadMassStorageConfigL;productId = %S\n", productId ); - - OstTraceExt1( TRACE_NORMAL, CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_DUP6, - "CUsbMsClassController::ReadMassStorageConfigL;productRev = %S\n", productRev ); + LOGTEXT2(_L8("vendorId = %S\n"), &vendorId); + LOGTEXT2(_L8("productId = %S\n"), &productId); + LOGTEXT2(_L8("productRev = %S\n"), &productRev); CleanupStack::PopAndDestroy(3, &fs); // msConfigBuf, resource, fs - OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_EXIT_DUP2 ); } /** @@ -344,13 +295,11 @@ */ void CUsbMsClassController::ConfigItem(const TPtrC& source, TDes& target, TInt maxLength) { - OstTraceFunctionEntry0( CUSBMSCLASSCONTROLLER_CONFIGITEM_ENTRY ); if (source.Length() < maxLength) { maxLength = source.Length(); } - target.Copy(source.Ptr(), maxLength); - OstTraceFunctionExit0( CUSBMSCLASSCONTROLLER_CONFIGITEM_EXIT ); + target.Copy(source.Ptr(), maxLength); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/src/CUsbMsClassImpCollection.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/src/CUsbMsClassImpCollection.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/src/CUsbMsClassImpCollection.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-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" @@ -26,12 +26,6 @@ #include #include "CUsbMsClassController.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbMsClassImpCollectionTraces.h" -#endif - - // Define the private interface UIDs const TImplementationProxy UsbCCImplementationTable[] = { @@ -40,8 +34,7 @@ EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) { - OstTraceFunctionEntry0( CUSBMSCLASSIMPCOLLECTION_IMPLEMENTATIONGROUPPROXY_ENTRY ); aTableCount = sizeof(UsbCCImplementationTable) / sizeof(TImplementationProxy); - OstTraceFunctionExit0( CUSBMSCLASSIMPCOLLECTION_IMPLEMENTATIONGROUPPROXY_EXIT ); + return UsbCCImplementationTable; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/src/usbms.rss --- a/usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/src/usbms.rss Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/src/usbms.rss Wed Sep 01 12:35:00 2010 +0100 @@ -32,9 +32,8 @@ RESOURCE USBMASSSTORAGE_CONFIG usbms_config { - vendorId = "Nokia"; // no more than 8 characters - productId = "S60"; // no more than 16 characters - productRev = "1.0"; // no more than 4 characters + vendorId = "vendorId"; // no more than 8 characters + productId = "productId"; // no more than 16 characters + productRev = "rev"; // no more than 4 characters } - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/device/classdrivers/ms/classcontroller/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_FATAL=0x81 -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_FATAL[0x81]_CUSBMSCLASSCONTROLLER_DOCANCEL=0x5 -[TRACE]TRACE_FATAL[0x81]_CUSBMSCLASSCONTROLLER_GETDESCRIPTORINFO=0x3 -[TRACE]TRACE_FATAL[0x81]_CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL=0x7 -[TRACE]TRACE_FATAL[0x81]_CUSBMSCLASSCONTROLLER_RUNERROR=0x6 -[TRACE]TRACE_FATAL[0x81]_CUSBMSCLASSCONTROLLER_RUNL=0x4 -[TRACE]TRACE_FATAL[0x81]_CUSBMSCLASSCONTROLLER_START=0x1 -[TRACE]TRACE_FATAL[0x81]_CUSBMSCLASSCONTROLLER_STOP=0x2 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_CONFIGITEM_ENTRY=0x1c -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_CONFIGITEM_EXIT=0x1d -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_CONSTRUCT_ENTRY=0x7 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_CONSTRUCT_EXIT=0x8 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_CUSBMSCLASSCONTROLLER_CONS_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_CUSBMSCLASSCONTROLLER_CONS_EXIT=0x6 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_CUSBMSCLASSCONTROLLER_DES_ENTRY=0x3 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_CUSBMSCLASSCONTROLLER_DES_EXIT=0x4 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_DOCANCEL_ENTRY=0x14 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_DOCANCEL_EXIT=0x15 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY=0x10 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_GETDESCRIPTORINFO_EXIT=0x11 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_NEWL_ENTRY=0x1 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_NEWL_EXIT=0x2 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_ENTRY=0x18 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_EXIT=0x19 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_EXIT_DUP1=0x1a -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_EXIT_DUP2=0x1b -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_RUNERROR_ENTRY=0x16 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_RUNERROR_EXIT=0x17 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_RUNL_ENTRY=0x12 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_RUNL_EXIT=0x13 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_START_ENTRY=0x9 -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_START_EXIT=0xa -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_START_EXIT_DUP1=0xb -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_START_EXIT_DUP2=0xc -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_START_STOP_DUP1=0xf -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_STOP_ENTRY=0xd -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSCONTROLLER_STOP_EXIT=0xe -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSIMPCOLLECTION_IMPLEMENTATIONGROUPPROXY_ENTRY=0x1e -[TRACE]TRACE_FLOW[0x8A]_CUSBMSCLASSIMPCOLLECTION_IMPLEMENTATIONGROUPPROXY_EXIT=0x1f -[TRACE]TRACE_NORMAL[0x86]_CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_DUP1=0x4 -[TRACE]TRACE_NORMAL[0x86]_CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_DUP2=0x5 -[TRACE]TRACE_NORMAL[0x86]_CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_DUP3=0x6 -[TRACE]TRACE_NORMAL[0x86]_CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_DUP4=0x7 -[TRACE]TRACE_NORMAL[0x86]_CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_DUP5=0x8 -[TRACE]TRACE_NORMAL[0x86]_CUSBMSCLASSCONTROLLER_READMASSSTORAGECONFIGL_DUP6=0x9 -[TRACE]TRACE_NORMAL[0x86]_CUSBMSCLASSCONTROLLER_START_DUP1=0x1 -[TRACE]TRACE_NORMAL[0x86]_CUSBMSCLASSCONTROLLER_START_DUP2=0x2 -[TRACE]TRACE_NORMAL[0x86]_CUSBMSCLASSCONTROLLER_STOP_DUP1=0x3 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/group/bld.inf --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -/* -* 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: -* -*/ - -PRJ_PLATFORMS -armv5 - -PRJ_MMPFILES -ncmclasscontroller.mmp - -PRJ_EXPORTS -usbncmconfiguration.hby /epoc32/rom/include/usbncmconfiguration.hby -usbncm.iby /epoc32/rom/include/usbncm.iby - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/group/ncmcc_over_dummy_stubs.mmp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/group/ncmcc_over_dummy_stubs.mmp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* 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 -@SYMPurpose ncmclasscontroller.dll USB NCM Class Controller over dummy stubs - */ - -macro OVERDUMMY_NCMCC - -#include "ncmclasscontroller_base.mmp" - -target dummy_ncmclasscontroller.dll - -UID 0x10009d8d 0x2002EA9F - -sourcepath ../src -START resource ncmcc_over_dummy.rss - TARGET dummy_ncmclasscontroller.rsc -END - -// Dummy librarys -LIBRARY dummy_sock.lib -LIBRARY dummyusbsclddapi.lib -LIBRARY dummy_ncminternalsrv.lib diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/group/ncmclasscontroller.mmp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/group/ncmclasscontroller.mmp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* 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 -@SYMPurpose ncmclasscontroller.dll USB NCM Class Controller - */ - -#include "ncmclasscontroller_base.mmp" - -target ncmclasscontroller.dll - -UID 0x10009d8d 0x2002bcfd - -sourcepath ../src -START resource 2002bcfd.rss - TARGET ncmclasscontroller.rsc -END - -LIBRARY esock.lib -LIBRARY ncminternalsrv.lib -LIBRARY usbcsc_bil.lib -LIBRARY insock.lib -LIBRARY nifman.lib - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/group/ncmclasscontroller_base.mmp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/group/ncmclasscontroller_base.mmp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* -* 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 -@SYMPurpose ncmclasscontroller.dll USB NCM Class Controller - */ - -CAPABILITY CommDD NetworkControl NetworkServices LocalServices ProtServ -targettype plugin - -userinclude ../inc -userinclude ../../inc -userinclude ../traces - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -sourcepath ../src -source ncmclasscontroller.cpp -source ncmclassimpcollection.cpp -source ncmconnectionmanager.cpp -source ncmiapprogresswatcher.cpp -source ncmconnectionmanagerhelper.cpp -source ncmclassdescriptor.cpp -source ncmclientmanager.cpp -source ncmdhcpnotifwatcher.cpp -source ncmiapreader.cpp - -LIBRARY euser.lib -LIBRARY usbclasscontroller.lib -LIBRARY efsrv.lib -LIBRARY bafl.lib -LIBRARY commdb.lib -LIBRARY centralrepository.lib -LIBRARY commsfw.lib -LIBRARY esocksvr.lib -LIBRARY netmeta.lib -LIBRARY nodemessages.lib -LIBRARY random.lib -LIBRARY commsdataobjects.lib -LIBRARY commsdat.lib - - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/group/usbncm.iby --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/group/usbncm.iby Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* 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: -* Configuration for NCM functions -* -*/ - -#ifndef USBNCM_IBY -#define USBNCM_IBY - -// NCM Feature flag -#ifdef FF_AUTOMOTIVESTACK - -#include - -// *** NCM (networking control model) Class Controller. - -#ifdef USBNCM_PATCHDATA_KUSBNCM_CUSTOM_ETHERNET_FRAME_SIZE -patchdata ncmclasscontroller.dll@KEthernetFrameSize USBNCM_PATCHDATA_KUSBNCM_CUSTOM_ETHERNET_FRAME_SIZE -#endif - -USB_PLUGIN(ncmclasscontroller.dll,2002bcfd.rsc) -file=ABI_DIR\USB_DIR\ncmpkt.drv ncmpkt.drv -file=ABI_DIR\USB_DIR\ncminternalsrv.dll ncminternalsrv.dll - -#endif // FF_AUTOMOTIVESTACK - -#endif // USBNCM_IBY diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/group/usbncmconfiguration.hby --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/group/usbncmconfiguration.hby Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ -/* -* 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: -* Configuration for NCM functions -* -*/ - -#ifndef USBNCMCONFIGURATION_HBY -#define USBNCMCONFIGURATION_HBY - - -#define USBNCM_PATCHDATA_KUSBNCM_CUSTOM_ETHERNET_FRAME_SIZE 8192 - -#endif // USBNCMCONFIGURATION_HBY diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmclasscontroller.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmclasscontroller.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMCLASSCONTROLLER_H -#define NCMCLASSCONTROLLER_H - -#include -#include - -#include "ncmconnectionmanagerobserver.h" -#include "ncmcommon.h" - -#ifdef OVERDUMMY_NCMCC -#include -#else -#include "ncminternalsrv.h" -#endif // OVERDUMMY_NCMCC - -class CNcmConnectionManager; -class CNcmClientManager; - -/** - * NCM Class controller. - * It is derived from CUsbClassControllerPlugIn. The USB Manager will control - * NCM class through it. - * And it implements interface MNcmConnectionManagerObserver as well. - */ -NONSHARABLE_CLASS(CNcmClassController): - public CUsbClassControllerPlugIn, - public MNcmConnectionManagerObserver - { -public: - static CNcmClassController* NewL(MUsbClassControllerNotify& aOwner); - ~CNcmClassController(); - - // From MNcmConnectionManagerObserver - void McmoErrorIndication(TInt aError); - -private: - /** - * Two-phases construction: phase 1 - * @param[in] aOwner, an Interface to talk to the USB server. - */ - CNcmClassController(MUsbClassControllerNotify& aOwner); - /** - * Two-phases construction: phase 2 - */ - void ConstructL(); - - // From CActive - void RunL(); - void DoCancel(); - TInt RunError(TInt aError); - - // From CUsbClassControllerBase - void Start(TRequestStatus& aStatus); - void Stop(TRequestStatus& aStatus); - void GetDescriptorInfo(TUsbDescriptor& aDescriptorInfo) const; - - -private: - void RandomMacAddressL(); - -private: - TNcmMacAddress iHostMacAddress; - - CNcmConnectionManager* iConnectionMan; // Owned. - - // Not own. - TRequestStatus* iReportStatus; - - CNcmClientManager* iClientMgr; // Owned - - RNcmInternalSrv iNcmInternalSvr; - - TBool iConnectingToNcmPktDrv; - - TUint iDataBufferSize; // Buffer size of data end points - }; - -#endif // NCMCLASSCONTROLLER_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmclassdescriptor.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmclassdescriptor.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* -* 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 -*/ - - -#ifndef NCMCLASSDESCRIPTOR_H -#define NCMCLASSDESCRIPTOR_H - -#include - - -const TUint KUSBNcmClassSpecificBufferSize = 29; - - -/** - * Defined NCM Class Descriptor - */ -NONSHARABLE_CLASS(TNcmClassDescriptor) ///< Class-specific descriptor - { -public: - - //Header Functional Descriptor - TUint8 iHdrSize; ///< Header size - TUint8 iHdrType; ///< Type - TUint8 iHdrSubType; ///< Sub-type - TUint16 iHdrBcdCDC; ///< CDC version no in binary coded decimal - - //Union Functional Descriptor - TUint8 iUnSize; ///< Union descriptor size - TUint8 iUnType; ///< Union descriptor type - TUint8 iUnSubType; ///< Union descriptor sub-type - TUint8 iUnMasterInterface; ///< Master interface number - TUint8 iUnSlaveInterface; ///< Slave interface number - - //Ethernet Networking Functional Descriptor - TUint8 iEthFunLength; ///< Size of this functional descriptor - TUint8 iEthFunType; ///< CS_INTERFACE - TUint8 iEthFunSubtype; ///< Ethernet Networking functional descriptor subtype as defined in [USBCDC1.2] - TUint8 iMACAddress; ///< Index of string descriptor. The string descriptor holds the 48bit Ethernet MAC address. - TUint iEthernetStatistics; ///< Indicates which Ethernet statistics functions the device collects. - TUint16 iMaxSegmentSize; ///< The maximum segment size that the Ethernet device is capable of supporting. - TUint16 iNumberMCFilters; ///< Contains the number of multicast filters that can be configured by the host. - TUint8 iNumberPowerFilters; ///< Contains the number of pattern filters that are available for causing wake-up of the host. - - - //NCM Functional Descriptor - TUint8 iNcmFunLength; ///< Size of this functional descriptor - TUint8 iNcmFunType; ///< CS_INTERFACE - TUint8 iNcmFunSubtype; ///< NCM Functional Descriptor subtype - TUint16 iNcmVersion; ///< Release number of this specification in BCD - TUint8 iNetworkCapabilities; ///< Specifies the capabilities of this function - -public: - TDes8& Des(); - -private: - - TBuf8 iBuffer; - }; - -#endif // NCMCLASSDESCRIPTOR_H - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmclientmanager.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmclientmanager.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,102 +0,0 @@ -/* -* 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 -*/ - - -#ifndef NCMCLIENTMANAGER_H -#define NCMCLIENTMANAGER_H - -#include -#include - -#ifdef OVERDUMMY_NCMCC -#include -#else -#include -#endif // OVERDUMMY_NCMCC - -#include "ncmcommon.h" - -class RNcmInternalSrv; - -/** - * A class which encapsulates the operations related to USB shared chunk LDD - */ -class CNcmClientManager : public CBase - { -public: - /** - * Constructor - * @param[in] aHostMacAddress, the NCM interface MAC address - * which will be used to config. - */ - CNcmClientManager(const TNcmMacAddress& aHostMacAddress); - - ~CNcmClientManager(); - - /** - * Setup NCM interfaces - * @param[out] aDataEpBufferSize, NCM data interface EP buffer size - */ - void SetNcmInterfacesL(TUint& aDataEpBufferSize); - /** - * Transfer ownership of NCM interface handles to NCM internal - * server which is located in C32 process space - * @param[in] aServer, NCM internal server. - */ - void TransferInterfacesL(RNcmInternalSrv& aServer); - -private: - /** - * Setup NCM communication interface - */ - void SetCommunicationInterfaceL(); - /** - * Setup NCM data interface - * @param aDataEpBufferSize, NCM data interface EP buffer size - */ - void SetDataInterfaceL(TUint& aDataEpBufferSize); - /** - * Setup NCM class specific descriptors - * @param aDataInterfaceNumber, NCM data interface number - */ - TInt SetupClassSpecificDescriptor(TUint8 aDataInterfaceNumber); - /** - * Set NCM interface MAC address into NCM class specific descriptor - * @param[out] aStrIndex, the index of string which contains NCM - * interface MAC address - */ - TInt SetMacAddressString(TUint8& aStrIndex); - /** - * Get NCM data interface number - * @param[out] aInterfaceNumber, NCM data interface number - */ - TInt DataInterfaceNumber(TUint8& aInterfaceNumber); - -private: - const TNcmMacAddress& iHostMacAddress; - - TBool iCommLddInitiated; - RDevUsbcScClient iCommLdd; - TBool iDataLddInitiated; - RDevUsbcScClient iDataLdd; - }; - -#endif // NCMCLIENTMANAGER_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmconnectionmanager.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmconnectionmanager.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,166 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMCONNECTIONMANAGER_H -#define NCMCONNECTIONMANAGER_H - -#ifdef OVERDUMMY_NCMCC -#include -#include -#include -#else -#include -#include -#include -#include -#endif // OVERDUMMY_NCMCC - -#include -#include "ncmcommon.h" -#include "ncmiapprogressstateobserver.h" -#include "ncmiapconnectionobserver.h" -#include "ncmdhcpnotifobserver.h" -#include "ncmiapreaderobserver.h" - - -class MNcmConnectionManagerObserver; -class CNcmIapProgressWatcher; -class CNcmConnectionManHelper; -class CNcmDhcpNotifWatcher; -class CNcmIapReader; -class RNcmInternalSrv; - -/** - * CNcmConnectionManager to control ncm networking interface - * It handles: - * 1 Searching NCM IAP - * 2 Start NCM connection - * 3 IAP progress notification - * 4 DHCP provisioning request from NCM internal server - */ -NONSHARABLE_CLASS(CNcmConnectionManager) : public CBase, - public MNcmIapProgressStateObserver, - public MNcmConnectionObserver, - public MNcmDhcpNotificationObserver, - public MNcmIAPReaderObserver - { -public: - /** - * Constructs a CNcmConnectionManager object. - * @param[in] aOwner, NCM connection observer - * @param[in] aHostMacAddress, the NCM interface MAC address - * @param[in] aDataBufferSize, the EndPoint buffer size - * @param[in] aNcmInternalSvr, the NCM internal server - * @return Ownership of a new CNcmConnectionManager object - */ - static CNcmConnectionManager* NewL(MNcmConnectionManagerObserver& aOwner, - const TNcmMacAddress& aMacAddress, TUint aDataBufferSize, - RNcmInternalSrv& aNcmInternalSvr); - ~CNcmConnectionManager(); - - /** - * Start NCM connection - * @param aStatus complete status for this request. - */ - void Start(TRequestStatus& aStatus); - - /** - * Cancel starting of NCM connection - */ - void StartCancel(); - - /** - * Stop NCM connection - */ - void Stop(); - - // From MIapPorgressStateObserver - virtual void MipsoHandleClassFatalError(TInt aError); - - // From MNcmConnectionObserver - virtual void MicoHandleConnectionComplete(TInt aError); - - // From MNcmDhcpNotificationObserver - virtual void MdnoHandleDhcpNotification(TInt aError); - - // From MNcmIAPReaderObserver - virtual void MicoHandleIAPReadingComplete(TInt aError); - -private: - /** - * Two-phase construction: phase 1 - * @param[in] aObserver, NCM connection observer - * @param[in] aHostMacAddress, the NCM interface MAC address - * @param[in] aDataBufferSize, the EndPoint buffer size - * @param[in] aNcmInternalSvr, the NCM internal server - */ - CNcmConnectionManager(MNcmConnectionManagerObserver& aObserver, - const TNcmMacAddress& aHostMacAddress, TUint aDataBufferSize, - RNcmInternalSrv& aNcmInternalSvr); - /** - * Two-phase construction: phase 2 - */ - void ConstructL(); - - /** - * Reset NCM connection manager - */ - void Reset(); - - /* - * Change default MTU size on NCM connection - */ - void SetCustomMtuL(); - - /* - * Handle NCM connection building completion - */ - void HandleConnectionCompleteL(); - -private: - // Owned. - CNcmIapProgressWatcher* iIapPrgrsWatcher; - CNcmConnectionManHelper* iConnManHelper; - CNcmDhcpNotifWatcher* iDhcpNotifWatcher; - CNcmIapReader* iIapReader; - - // Not own. - TRequestStatus* iReportStatus; - - MNcmConnectionManagerObserver& iConnMgrObserver; - - // RSocketServ used for starting NCM IAP and configuring DHCP and NAPT, owned - RSocketServ iSocketServ; - - // RConnection used for starting NCM IAP and configuring DHCP server, owned - RConnection iConnection; - - TCommDbConnPref iConnPref; - - RProperty iProperty; - TBool iConnComplete; - - const TNcmMacAddress& iHostMacAddress; - const TUint iDataBufferSize; - RNcmInternalSrv& iNcmInternalSvr; -}; - -#endif // NCMCONNECTIONMANAGER_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmconnectionmanagerhelper.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmconnectionmanagerhelper.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMCONNECTIONMANAGERHELPER_H -#define NCMCONNECTIONMANAGERHELPER_H - -#include - -#ifdef OVERDUMMY_NCMCC -#include -#include -#else -#include -#include -#include -#endif // OVERDUMMY_NCMCC - -class MNcmConnectionObserver; - -/** - * CNcmConnectionManHelper is the handler for NCM connection. - * 1 Start a NCM connection - * 2 Cancel starting attempt - * 3 Stop a NCM connection - */ -NONSHARABLE_CLASS(CNcmConnectionManHelper) : public CActive - { -public: - /** - * Constructor - * @param[in] aObserver, IAP connection observer - * @param[in] aConnection, the NCM connection - */ - CNcmConnectionManHelper(MNcmConnectionObserver& aObserver, RConnection& aConnection); - - ~CNcmConnectionManHelper(); - void Start(TConnPref& aPref); - void Stop(); - -private: - - // From CActive - void RunL(); - void DoCancel(); - -private: - MNcmConnectionObserver& iObserver; // IAP connection observer - RConnection& iConnection; // The NCM connection - }; - -#endif // NCMCONNECTIONMANAGERHELPER_H - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmconnectionmanagerobserver.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmconnectionmanagerobserver.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMCONNECTIONMANAGEROBSERVER_H -#define NCMCONNECTIONMANAGEROBSERVER_H - -#include - -/** - * MNcmConnectionManagerObserver defines the interface for connection manager - * callback. - */ -class MNcmConnectionManagerObserver - { -public: - /* - * Called by NCM connection manager to report error to NCM connection - * observer. - * @param aError, error code reports to NCM connection observer - */ - virtual void McmoErrorIndication(TInt aError) = 0; - }; - -#endif // NCMCONNECTIONMANAGEROBSERVER_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmdhcpnotifobserver.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmdhcpnotifobserver.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMDHCPNOTIFOBSERVER_H -#define NCMDHCPNOTIFOBSERVER_H - -#include - -/** - * MdnoHandleDhcpNotification defines the interface for notification of Dhcp - * provisioning request - */ -class MNcmDhcpNotificationObserver - { -public: - /** - * Called by DHCP prvisioning requestion watcher to handle DHCP - * provisioning request notification from NCM internal server. - * @param aError, completion code of DHCP provisioning request - */ - virtual void MdnoHandleDhcpNotification(TInt aError) = 0; - }; - -#endif // NCMDHCPNOTIFOBSERVER_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmdhcpnotifwatcher.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmdhcpnotifwatcher.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMDHCPNOTIFWATCHER_H -#define NCMDHCPNOTIFWATCHER_H - -#include - -#ifdef OVERDUMMY_NCMCC -#include -#include -#else -#include -#include -#endif // OVERDUMMY_NCMCC - -class MNcmDhcpNotificationObserver; -class RNcmInternalSrv; - -/* - * CNcmDhcpNotifWatcher is handler of DHCP provisioning requestion from NCM - * internal server. - */ -NONSHARABLE_CLASS(CNcmDhcpNotifWatcher) : public CActive - { -public: - /** - * Constructor - * @param[in] aObserver, the observer of DHCP provisioning result. - * @param[in] aNcmInteralSvr, the NCM internal server. - */ - CNcmDhcpNotifWatcher(MNcmDhcpNotificationObserver& aObserver, - RNcmInternalSrv& aNcmInteralSvr); - - ~CNcmDhcpNotifWatcher(); - - /** - * Start the watcher to monitor DHCP provisioning requestion from - * NCM internal server. - */ - void StartL(); - -private: - - // From CActive - void RunL(); - void DoCancel(); - -private: - - MNcmDhcpNotificationObserver& iObserver; // DHCP provisioning result observer - RNcmInternalSrv& iNcmInteralSvr; // NCM internal server - }; - -#endif // NCMDHCPNOTIFWATCHER_H - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmiapconnectionobserver.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmiapconnectionobserver.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMIAPCONNECTIONOBSERVER_H -#define NCMIAPCONNECTIONOBSERVER_H - -#include - -/** MNcmConnectionObserver defines the interface to handle the Notification of - * NCM connection established. - */ -class MNcmConnectionObserver - { -public: - /** - * Called by connection watcher to handle NCM connection building - * completion. - */ - virtual void MicoHandleConnectionComplete(TInt aError) = 0; - }; - -#endif // NCMIAPCONNECTIONOBSERVER_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmiapprogressstateobserver.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmiapprogressstateobserver.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMIAPPROGRESSSTATEOBSERVER_H -#define NCMIAPPROGRESSSTATEOBSERVER_H - -#include - -/** - * MNcmIapProgressStateObserver defines the interface for events - * on IAP progress stage changing. - */ -class MNcmIapProgressStateObserver - { -public: - /** - * Called by connection watcher when it detects the class fatal error. - */ - virtual void MipsoHandleClassFatalError(TInt aError) = 0; - }; - -#endif // NCMIAPPROGRESSSTATEOBSERVER_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmiapprogresswatcher.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmiapprogresswatcher.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMIAPPROGRESSWATCHER_H -#define NCMIAPPROGRESSWATCHER_H - -#include - -#ifdef OVERDUMMY_NCMCC -#include -#include -#else -#include -#include -#endif // OVERDUMMY_NCMCC - -class MNcmIapProgressStateObserver; - -/** - * CNcmIapProgressWatcher will handle IAP state changes - */ -NONSHARABLE_CLASS(CNcmIapProgressWatcher) : public CActive - { -public: - /** - * Constructor - * @param[in] aObserver, the observer of IAP progress change. - * @param[in] aConnection, the NCM connection. - */ - CNcmIapProgressWatcher(MNcmIapProgressStateObserver& aObserver, - RConnection& aConnection); - - ~CNcmIapProgressWatcher(); - - /** - * Start IAP progress watcher - */ - void Start(); - -private: - // From CActive - void RunL(); - void DoCancel(); - -private: - - TNifProgressBuf iProgressInfoBuf; - MNcmIapProgressStateObserver& iObserver; - RConnection& iConnection; - }; - -#endif // NCMIAPPROGRESSWATCHER_H - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmiapreader.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmiapreader.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMIAPREADER_H -#define NCMIAPREADER_H - -#include - -class MNcmIAPReaderObserver; -class TCommDbConnPref; - -/** - * IAP reader reads NCM IAP from CommDB and set it into NCM connection preference. - */ -NONSHARABLE_CLASS(CNcmIapReader) : public CActive - { -public: - - /** - * Constructor - * @param[in] aObserver, the observer of IAP reading progress. - * @param[in] aConnection, the NCM connection preference. - */ - CNcmIapReader(MNcmIAPReaderObserver& aObserver, TCommDbConnPref& aConnPref); - - /** - * Destructor - */ - ~CNcmIapReader(); - - /** - * Start NCM IAP reader - */ - void Start(); - -private: - - // From CActive - void RunL(); - void DoCancel(); - -private: - void SearchNcmIapL(); - -private: - MNcmIAPReaderObserver& iObserver; - TCommDbConnPref& iConnPref; - }; - -#endif // NCMIAPREADER_H - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmiapreaderobserver.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/inc/ncmiapreaderobserver.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMIAPREADEROBSERVER_H -#define NCMIAPREADEROBSERVER_H - -#include - -/** -MNcmIAPReaderObserver defines the interface for handling IAP reading completion -*/ -class MNcmIAPReaderObserver - { -public: - /** - * Called by IAP reader when IAP reading completed - */ - virtual void MicoHandleIAPReadingComplete(TInt aError) = 0; - }; - -#endif // NCMIAPREADEROBSERVER_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/2002bcfd.rss --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/2002bcfd.rss Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* 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 - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = 0x2002bcfd; - interfaces = - { - INTERFACE_INFO - { - interface_uid = 0x101fbf21; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = 0x2002c305; - version_no = 1; - display_name = "NCM CC"; - default_data = ""; - opaque_data = ""; - } - }; - } - }; - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmcc_over_dummy.rss --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmcc_over_dummy.rss Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ -/* -* 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 - @prototype -*/ - - -#include - -RESOURCE REGISTRY_INFO theInfo - { - dll_uid = 0x2002EA9F; - interfaces = - { - INTERFACE_INFO - { - interface_uid = 0x101fbf21; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = 0x2002EA9F; - version_no = 1; - display_name = "Dummy NCM CC"; - default_data = ""; - opaque_data = ""; - } - }; - } - }; - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmclasscontroller.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmclasscontroller.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,397 +0,0 @@ -/* -* 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 -#include -#include -#include -#include -#include - -#include "ncmclasscontroller.h" -#include "ncmconnectionmanager.h" -#include "ncmclientmanager.h" - -// For OST tracing -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmclasscontrollerTraces.h" -#endif - - -using namespace UsbNcm; -_LIT(KNcmControllerPanic, "UsbNcmCC"); // must be <=16 chars -const TInt KNcmStartupPriority = 3; - -// MTU size. -extern const TUint KEthernetFrameSize = 8192; - -// Lengths of the various bits of the NCM descriptor. Taken from the NCM Specification rev 1.0. -const TInt KNcmInterfaceDescriptorLength = 3; -const TInt KNcmCcHeaderDescriptorLength = 5; -const TInt KNcmFunctionalDescriptorLength = 4; -const TInt KNcmCcUfdDescriptorLength = 5; -const TInt KNcmDataClassHeaderDescriptorLength = 5; -const TInt KNcmDeviceDescriptorLength = 18; -const TInt KNcmConfigurationDescriptorLength = 9; -const TInt KNcmCommunicationClassEndpointOutDescriptorLength = 9; -const TInt KNcmNotificationEndpointDescriptorLength = 7; -const TInt KNcmDataClassInterfaceDescriptorLength = 9; -const TInt KNcmDataClassEndpointInDescriptorLength = 7; -const TInt KNcmDataClassEndpointOutDescriptorLength = 7; - -const TInt KNcmDescriptorLength = KNcmInterfaceDescriptorLength - + KNcmCcHeaderDescriptorLength + KNcmFunctionalDescriptorLength - + KNcmCcUfdDescriptorLength + KNcmDataClassHeaderDescriptorLength - + KNcmDeviceDescriptorLength + KNcmConfigurationDescriptorLength - + KNcmCommunicationClassEndpointOutDescriptorLength - + KNcmNotificationEndpointDescriptorLength - + KNcmDataClassInterfaceDescriptorLength - + KNcmDataClassEndpointInDescriptorLength - + KNcmDataClassEndpointOutDescriptorLength; - -// Panic codes -enum TNcmClassControllerPanicCode - { - ENcmPanicBadState = 1, - ENcmPanicOutstandingRequestFromDevice, - ENcmPanicAlreadyActive, - ENcmPanicUnhandledError, - ENcmPanicBadApiCallStart, // Attempt to call Start() when in illegal state - ENcmPanicBadApiCallStop, // Attempt to call Stop() when in illegal state - ENcmPanicUnexpectedIapState, - ENcmPanicUnexpectedError - }; - -/** - * Constructs a CNcmClassController object. - * @param aOwner USB Device that owns and manages the class - * @return Ownership of a new CNcmClassController object - */ -CNcmClassController* CNcmClassController::NewL( - MUsbClassControllerNotify & aOwner) - { - OstTraceFunctionEntry0( CNCMCLASSCONTROLLER_NEWL_ENTRY ); - - CNcmClassController* self = - new (ELeave) CNcmClassController(aOwner); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - OstTraceFunctionExit1( CNCMCLASSCONTROLLER_NEWL_EXIT, ( TUint )( self ) ); - return self; - } - -/** - * Constructor. - * @param aOwner USB Device that owns and manages the class - */ -CNcmClassController::CNcmClassController( - MUsbClassControllerNotify& aOwner) : - CUsbClassControllerPlugIn(aOwner, KNcmStartupPriority) - { - OstTraceFunctionEntryExt( CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_ENTRY, this ); - - iState = EUsbServiceIdle; // needs explicit initialisation as non-zero - - OstTraceFunctionExit1( CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_EXIT, this ); - } - -/** - * Method to perform second phase construction. - */ -void CNcmClassController::ConstructL() - { - OstTraceFunctionEntry1( CNCMCLASSCONTROLLER_CONSTRUCTL_ENTRY, this ); - -#ifndef OVERDUMMY_NCMCC - TInt err = KErrNone; - - OstTrace0(TRACE_NORMAL, CNCMCLASSCONTROLLER_CONSTRUCTL, "About to load eusbcsc!"); - _LIT(KUsbSCLDDName, "eusbcsc"); - err = User::LoadLogicalDevice(KUsbSCLDDName); - OstTrace1( TRACE_NORMAL, CNCMCLASSCONTROLLER_CONSTRUCTL_LOAD_CSC_LDD, "LoadLogicalDevice() returns %d!", err ); - if (err != KErrNone && err != KErrAlreadyExists) - { - User::Leave(err); - } - OstTrace0(TRACE_NORMAL, CNCMCLASSCONTROLLER_CONSTRUCTL_CSC_LDD_LOADED, "Ldd eusbcsc loaded!"); -#endif // OVERDUMMY_NCMCC - - RandomMacAddressL(); // Create a random MAC address for NCM host side interface. - iConnectionMan = CNcmConnectionManager::NewL(*this, iHostMacAddress, iDataBufferSize, iNcmInternalSvr); - iClientMgr = new (ELeave) CNcmClientManager(iHostMacAddress); - OstTraceFunctionExit1( CNCMCLASSCONTROLLER_CONSTRUCTL_EXIT, this ); - } - -void CNcmClassController::RandomMacAddressL() - { - OstTraceFunctionEntry1( CNCMCLASSCONTROLLER_RANDOMMACADDRESSL_ENTRY, this ); - - //Create the NCM interface MAC address randomly - iHostMacAddress.SetLength(KEthernetAddressLength); - TRandom::RandomL(iHostMacAddress); - - //Mark it a locally administered address - iHostMacAddress[0] = 0x02; - iHostMacAddress[1] = 0x00; - iHostMacAddress[2] = 0x00; - OstTraceFunctionExit1( CNCMCLASSCONTROLLER_RANDOMMACADDRESSL_EXIT, this ); - } - -/** - * Destructor. - */ -CNcmClassController::~CNcmClassController() - { - OstTraceFunctionEntry1( CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_ENTRY_DESTROY, this ); - Cancel(); - - // Close internal server to release some resource - iNcmInternalSvr.Close(); - delete iClientMgr; - delete iConnectionMan; - -#ifndef OVERDUMMY_NCMCC - OstTrace0(TRACE_NORMAL, CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_PRE_UNLOAD_CSC_LDD, "About to unload Usbcsc!"); - _LIT(KUsbSCLDDName, "Usbcsc"); - TInt err = User::FreeLogicalDevice(KUsbSCLDDName); - OstTrace1(TRACE_NORMAL, CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_UNLOAD_LDD_RESULT, "FreeLogicalDevice() returns %d!", err); -#endif // OVERDUMMY_NCMCC - OstTraceFunctionExit1( CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_EXIT_DESTROY, this ); - } - -/** - * Called by UsbMan to start this class. - * @param aStatus Will be completed with success or failure. - */ -void CNcmClassController::Start(TRequestStatus& aStatus) - { - OstTraceFunctionEntryExt( CNCMCLASSCONTROLLER_START_ENTRY, this ); - OstTrace1(TRACE_NORMAL, CNCMCLASSCONTROLLER_START_PRINT_STATE, "iState=%d", iState); - - //Start() should only be called if the CC is idle state - __ASSERT_DEBUG((iState == EUsbServiceIdle), - User::Panic(KNcmControllerPanic, ENcmPanicBadApiCallStart)); - - // NB We enforce that the device doesn't re-post requests on us. - __ASSERT_DEBUG(!iReportStatus, - User::Panic(KNcmControllerPanic, ENcmPanicOutstandingRequestFromDevice)); - - // We should not be active before start - __ASSERT_DEBUG(!IsActive(), User::Panic(KNcmControllerPanic, ENcmPanicAlreadyActive)); - - aStatus = KRequestPending; - iReportStatus = &aStatus; - - iState = EUsbServiceStarting; - - // According to the latest discussion of 100ms limitation to - // each personality starting, the calling to iConnectionMan->Start - // will happen later. A controller will set sevice state to started - // immediately after calling to RDevUsbcScClient::SetInterface() - - TInt err = KErrNone; - - // Can not leave. Trap any error from SetNcmInterfacesL() - TRAP(err, iClientMgr->SetNcmInterfacesL(iDataBufferSize)); - User::RequestComplete(iReportStatus, err); - - if (KErrNone == err) - { - // Set service state to started - iState = EUsbServiceStarted; - - iStatus = KRequestPending; - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete(status, err); - } - OstTraceFunctionExit1( CNCMCLASSCONTROLLER_START_EXIT, this ); - } - -/** - * Called by UsbMan to stop this class. - * @param aStatus Will be completed with success or failure. - */ -void CNcmClassController::Stop(TRequestStatus& aStatus) - { - OstTraceFunctionEntryExt( CNCMCLASSCONTROLLER_STOP_ENTRY, this ); - OstTrace1( TRACE_NORMAL, CNCMCLASSCONTROLLER_STOP_PRINT_STATE, "iState=%d", iState ); - - __ASSERT_DEBUG(((iState == EUsbServiceStarted)||(iState == EUsbServiceStarting)), - User::Panic(KNcmControllerPanic, ENcmPanicBadApiCallStop)); - - // NB We enforce that the device doesn't re-post requests on us. - __ASSERT_DEBUG(!iReportStatus, - User::Panic(KNcmControllerPanic, ENcmPanicOutstandingRequestFromDevice)); - - if (IsActive()) // Networking connetion building is ongoing! - { - Cancel(); - } - else - { - iConnectionMan->Stop(); - } - - aStatus = KRequestPending; - iReportStatus = &aStatus; - User::RequestComplete(iReportStatus, KErrNone); - - iConnectingToNcmPktDrv = EFalse; - iState = EUsbServiceIdle; - OstTraceFunctionExit1( CNCMCLASSCONTROLLER_STOP_EXIT, this ); - } - -/** - * Returns information about the interfaces supported by this class. - * @param aDescriptorInfo Will be filled in with interface information. - */ -void CNcmClassController::GetDescriptorInfo( - TUsbDescriptor& aDescriptorInfo) const - { - OstTraceFunctionEntryExt( CNCMCLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY, this ); - - aDescriptorInfo.iNumInterfaces = 2; - aDescriptorInfo.iLength = KNcmDescriptorLength; - OstTraceFunctionExit1( CNCMCLASSCONTROLLER_GETDESCRIPTORINFO_EXIT, this ); - } - -void CNcmClassController::McmoErrorIndication(TInt aError) - { - OstTraceFunctionEntryExt( CNCMCLASSCONTROLLER_MCMOERRORINDICATION_ENTRY, this ); - - Owner().UccnError(aError); - - OstTraceFunctionExit1( CNCMCLASSCONTROLLER_MCMOERRORINDICATION_EXIT, this ); - } - -/** - * Called when connection manager completes. - */ -void CNcmClassController::RunL() - { - OstTraceFunctionEntry1( CNCMCLASSCONTROLLER_RUNL_ENTRY, this ); - TInt completionCode = iStatus.Int(); - OstTraceExt2( TRACE_NORMAL, CNCMCLASSCONTROLLER_RUNL_PRINT_INFO, "iState=%d; completionCode=%d", iState, completionCode ); - - // Goto RunError() to handle any exception - User::LeaveIfError(completionCode); - - // We should only be in starting state when connection manager completes. Stopping is a synchronous call. - __ASSERT_DEBUG(EUsbServiceStarted == iState, User::Panic(KNcmControllerPanic, - ENcmPanicBadState)); - - switch (iState) - { - case EUsbServiceStarted: - { - OstTrace0( TRACE_NORMAL, CNCMCLASSCONTROLLER_RUNL_STARTED, "EUsbServiceStarted" ); - if (iConnectingToNcmPktDrv) - { - OstTrace0( TRACE_FLOW, CNCMCLASSCONTROLLER_RUNL_TRANSFER_HANDLES, "An Ethernet connection over NCM built. Transfer interface handlers to NCM internal server." ); - // NCM Packet Driver Loaded in C32, now transfer LDD handles to packet driver side through NCM internal server - iClientMgr->TransferInterfacesL(iNcmInternalSvr); - - delete iClientMgr; - iClientMgr = NULL; - } - else - { - OstTrace0( TRACE_NORMAL, CNCMCLASSCONTROLLER_RUNL_BUILT_NCM_CONNECTION, "Going to build ethernet connection over NCM!" ); - iConnectingToNcmPktDrv = ETrue; - iStatus = KRequestPending; - SetActive(); - iConnectionMan->Start(iStatus); - } - - break; - } - - default: - { - OstTrace0( TRACE_ERROR, CNCMCLASSCONTROLLER_RUNL_DEFAULT, "Default::SHOULD NOT BE HERE!!!" ); - User::Panic(KNcmControllerPanic, ENcmPanicBadState); - break; - } - } - OstTraceFunctionExit1( CNCMCLASSCONTROLLER_RUNL_EXIT, this ); - } - -/** - * Implements cancellation of an outstanding request. - */ -void CNcmClassController::DoCancel() - { - OstTraceFunctionEntry1( CNCMCLASSCONTROLLER_DOCANCEL_ENTRY, this ); - - OstTraceExt2( TRACE_NORMAL, CNCMCLASSCONTROLLER_DOCANCEL_INFO_PRINT, "iState=%d; iReportStatus=%p", iState, iReportStatus ); - - // Update our iState. If we're starting, then roll back to idle. If we're - // stopping, role back to started. Nothing else is legal. - switch (iState) - { - case EUsbServiceStarted: - OstTrace0( TRACE_NORMAL, CNCMCLASSCONTROLLER_DOCANCEL_IDLE, "EUsbServiceIdle" ); - iState = EUsbServiceIdle; - if (iConnectingToNcmPktDrv) - { - iConnectionMan->StartCancel(); - } - __ASSERT_DEBUG(!iReportStatus, User::Panic(KNcmControllerPanic, ENcmPanicUnhandledError)); - - OstTraceFunctionExit1( CNCMCLASSCONTROLLER_DOCANCEL_EXIT, this ); - return; - - default: - OstTrace1(TRACE_FATAL, CNCMCLASSCONTROLLER_DOCANCEL_DEFAULT, "Default::Should not be here:iState=%d", iState); - User::Panic(KNcmControllerPanic, ENcmPanicBadState); - break; - } - - // Complete the client's request. - __ASSERT_DEBUG(iReportStatus, User::Panic(KNcmControllerPanic, ENcmPanicUnhandledError)); - User::RequestComplete(iReportStatus, KErrCancel); - - OstTraceFunctionExit1( CNCMCLASSCONTROLLER_DOCANCEL_EXIT_DUP1, this ); - } - -/** - * Called when RunL leaves. Does nothing, just return KErrNone. - * @return Error code. Simply return KErrNone. - */ -TInt CNcmClassController::RunError(TInt aError) - { - OstTraceFunctionEntryExt( CNCMCLASSCONTROLLER_RUNERROR_ENTRY, this ); - - if (KErrCancel != aError) - { - // Report this failure to the observer - // Finally this will report to usbman and NCM class will be stopped. - McmoErrorIndication(aError); - } - - OstTraceFunctionExitExt( CNCMCLASSCONTROLLER_RUNERROR_EXIT, this, KErrNone ); - return KErrNone; - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmclassdescriptor.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmclassdescriptor.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -/* -* 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 - */ - -#ifdef OVERDUMMY_NCMCC -#include -#else -#include -#endif // OVERDUMMY_NCMCC - -#include "ncmclassdescriptor.h" -// For OST tracing -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmclassdescriptorTraces.h" -#endif - - -/** - * This function packs the TNcmClassDescriptor class into a descriptor with - * the correct byte alignment for transmission on the USB bus. - * - * @return Correctly-aligned buffer. NB The buffer returned is a member of - * this class and has the same lifetime. - */ -TDes8& TNcmClassDescriptor::Des() - { - OstTraceFunctionEntry0( TNCMCLASSDESCRIPTOR_DES_ENTRY ); - TUint index = 0; - - iBuffer.SetLength(KUSBNcmClassSpecificBufferSize); - - iBuffer[index++] = iHdrSize; - iBuffer[index++] = iHdrType; - iBuffer[index++] = iHdrSubType; - LittleEndian::Put16(&iBuffer[index], iHdrBcdCDC); - index += 2; - - iBuffer[index++] = iUnSize; - iBuffer[index++] = iUnType; - iBuffer[index++] = iUnSubType; - iBuffer[index++] = iUnMasterInterface; - iBuffer[index++] = iUnSlaveInterface; - - iBuffer[index++] = iEthFunLength; - iBuffer[index++] = iEthFunType; - iBuffer[index++] = iEthFunSubtype; - iBuffer[index++] = iMACAddress; - LittleEndian::Put32(&iBuffer[index], iEthernetStatistics); - index += 4; - LittleEndian::Put16(&iBuffer[index], iMaxSegmentSize); - index += 2; - LittleEndian::Put16(&iBuffer[index], iNumberMCFilters); - index += 2; - iBuffer[index++] = iNumberPowerFilters; - - iBuffer[index++] = iNcmFunLength; - iBuffer[index++] = iNcmFunType; - iBuffer[index++] = iNcmFunSubtype; - LittleEndian::Put16(&iBuffer[index], iNcmVersion); - index += 2; - iBuffer[index++] = iNetworkCapabilities; - - OstTraceFunctionExit0( TNCMCLASSDESCRIPTOR_DES_EXIT ); - return iBuffer; - } - -// End of file - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmclassimpcollection.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmclassimpcollection.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -/* -* 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 -#include -#include -#include "ncmclasscontroller.h" - -// Define the private interface UIDs -const TImplementationProxy UsbCCImplementationTable[] = - { -#ifdef OVERDUMMY_NCMCC - IMPLEMENTATION_PROXY_ENTRY(0x2002EA9F, CNcmClassController::NewL), -#else - IMPLEMENTATION_PROXY_ENTRY(0x2002c305, CNcmClassController::NewL), -#endif // OVERDUMMY_NCMCC - }; - -EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) - { - aTableCount = sizeof(UsbCCImplementationTable) / sizeof(TImplementationProxy); - - return UsbCCImplementationTable; - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmclientmanager.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmclientmanager.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,556 +0,0 @@ -/* -* 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 "ncmclientmanager.h" - - -#ifdef OVERDUMMY_NCMCC -#include -#else -#include "ncminternalsrv.h" -#endif // OVERDUMMY_NCMCC - -#include "ncmclassdescriptor.h" -// For OST tracing -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmclientmanagerTraces.h" -#endif - - -// NCM Interface MTU size -extern const TUint KEthernetFrameSize; - -// NCM MAC Address String descriptor buffer length -const TUint KMacAddrStringDescSize = 32; - - -/** - * Construtor - * @param aMacAddress the NCM ethernet interface MAC address - */ -CNcmClientManager::CNcmClientManager(const TNcmMacAddress& aHostMacAddress): - iHostMacAddress(aHostMacAddress) - { - OstTraceFunctionEntryExt( CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_ENTRY, this ); - - // No implementation required - OstTraceFunctionExit1( CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_EXIT, this ); - } - -/** - * Destructor - */ -CNcmClientManager::~CNcmClientManager() - { - OstTraceFunctionEntry0( CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_ENTRY_DESTRUCTOR ); - - TInt err = KErrNone; - if (iCommLddInitiated) - { - RChunk* commChunk = NULL; - OstTrace0(TRACE_NORMAL, CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_PRE_CLOSE_COMM_INTERFACE, "About to get chunk handle for communication interface!"); - err = iCommLdd.GetDataTransferChunk(commChunk); - if (KErrNone == err) - { - OstTrace0(TRACE_NORMAL, CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_CLOSE_COMM_CHUNK, "About to close chunk handle for communication interface!"); - commChunk->Close(); - } - else - { - OstTrace1(TRACE_ERROR, CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_CLOSE_COMM_CHUNK_FAIL, "Can not get chunk handle for communication interface: err = %d", err); - } - - OstTrace0(TRACE_NORMAL, CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_CLOSE_COMM_INTERFACE, "About to close device handle for communication interface!"); - iCommLdd.Close(); - } - - if (iDataLddInitiated) - { - RChunk* dataChunk = NULL; - OstTrace0(TRACE_NORMAL, CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_PRE_CLOSE_DATA_INTERFACE, "About to get chunk handle for data interface!"); - err = iDataLdd.GetDataTransferChunk(dataChunk); - if (KErrNone == err) - { - OstTrace0(TRACE_NORMAL, CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_CLOSE_DATA_CHUNK, "About to close chunk handle for communication interface!"); - dataChunk->Close(); - } - else - { - OstTrace1(TRACE_ERROR, CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_CLOSE_DATA_CHUNK_FAIL, "Can not get chunk handle for data interface: err = %d", err); - } - - OstTrace0(TRACE_NORMAL, CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_CLOSE_DATA_INTERFACE, "About to close device handle for data interface!"); - iDataLdd.Close(); - } - OstTraceFunctionExit0( CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_ENTRY_DESTRUCTOR_EXIT ); - } - - -/** - * Setup NCM interfaces - * @param[out] aDataEpBufferSize, NCM data interface EP buffer size - */ -void CNcmClientManager::SetNcmInterfacesL(TUint& aDataEpBufferSize) - { - OstTraceFunctionEntryExt( CNCMCLIENTMANAGER_SETNCMINTERFACESL_ENTRY, this ); - - // Setup NCM communication interface - SetCommunicationInterfaceL(); - - // Setup NCM data interface - SetDataInterfaceL(aDataEpBufferSize); - - // Retrieve data interface number - TUint8 dataInterfaceNumber = 1; - User::LeaveIfError(DataInterfaceNumber(dataInterfaceNumber)); - - // Setup NCM class descriptor with correct interface number - User::LeaveIfError(SetupClassSpecificDescriptor(dataInterfaceNumber)); - OstTraceFunctionExit1( CNCMCLIENTMANAGER_SETNCMINTERFACESL_EXIT, this ); - } - -/** - * Transfer NCM interface handlers from NCM class controller to NCM - * packet driver through NCM internal server. - * @param aServer a reference to RNcmInternalSrv - */ -void CNcmClientManager::TransferInterfacesL(RNcmInternalSrv& aServer) - { - OstTraceFunctionEntryExt( CNCMCLIENTMANAGER_TRANSFERINTERFACESL_ENTRY, this ); - - RChunk* commChunk = NULL; - RChunk* dataChunk = NULL; - - OstTrace0(TRACE_NORMAL, CNCMCLIENTMANAGER_TRANSFERINTERFACESL_PRE_TRANSFER_INTERFACES, "About to Transfer handles to NCM internal server!"); - User::LeaveIfError(iCommLdd.GetDataTransferChunk(commChunk)); - User::LeaveIfError(iDataLdd.GetDataTransferChunk(dataChunk)); - User::LeaveIfError(aServer.TransferHandle(iCommLdd, *commChunk, - iDataLdd, *dataChunk)); - OstTrace0(TRACE_NORMAL, CNCMCLIENTMANAGER_TRANSFERINTERFACESL_INTERFACES_TRANSFERED, "Transfer handles to NCM internal server Done!"); - OstTraceFunctionExit1( CNCMCLIENTMANAGER_TRANSFERINTERFACESL_EXIT, this ); - } - -/** - * Setup NCM communication inteface - */ -void CNcmClientManager::SetCommunicationInterfaceL() - { - OstTraceFunctionEntry1( CNCMCLIENTMANAGER_SETCOMMUNICATIONINTERFACEL_ENTRY, this ); - - User::LeaveIfError(iCommLdd.Open(0)); - iCommLddInitiated = ETrue; - - TInt err = KErrNone; - - TUsbcScInterfaceInfoBuf ifc0; - TUsbcDeviceState deviceStatus; - - User::LeaveIfError(iCommLdd.DeviceStatus(deviceStatus)); - - if (deviceStatus == EUsbcDeviceStateConfigured) - { - User::Leave( KErrInUse); - } - - TUsbDeviceCaps dCaps; - User::LeaveIfError(iCommLdd.DeviceCaps(dCaps)); - - TInt epNum = dCaps().iTotalEndpoints; - - TUsbcEndpointData data[KUsbcMaxEndpoints]; - TPtr8 dataptr(reinterpret_cast (data), sizeof(data), - sizeof(data)); - - User::LeaveIfError(iCommLdd.EndpointCaps(dataptr)); - - TBool foundIntIN = EFalse; - const TUint KEndPointType = KUsbEpTypeInterrupt | KUsbEpDirIn; - for (TInt i = 0; i < epNum; i++) - { - const TUsbcEndpointData* epData = &data[i]; - if ((!epData->iInUse) && // Not in use - ((epData->iCaps.iTypesAndDir & KEndPointType) == KEndPointType)) - { - // EEndpoint1 is going to be our INTERRUPT (IN, write) endpoint - ifc0().iEndpointData[0].iType = KUsbEpTypeInterrupt; - ifc0().iEndpointData[0].iDir = KUsbEpDirIn; - ifc0().iEndpointData[0].iSize = epData->iCaps.MinPacketSize(); - ifc0().iEndpointData[0].iInterval = 0x01; - ifc0().iEndpointData[0].iInterval_Hs = 0x01; - - foundIntIN = ETrue; - break; - } - } - if (EFalse == foundIntIN) - { - OstTrace0( TRACE_ERROR, CNCMCLIENTMANAGER_SETCOMMUNICATIONINTERFACEL, "Can not find proper endpint for NCM communication interface" ); - User::Leave( KErrNotFound); - } - - /*********************************************************************************************/ - //Communication Class Interface (0x00) - /*********************************************************************************************/ - _LIT16(KIfClassName0, "USB Networking (NCM)"); - HBufC16* string0 = KIfClassName0().AllocLC(); - - ifc0().iString = string0; - ifc0().iTotalEndpointsUsed = 1; - ifc0().iClass.iClassNum = 0x02; - ifc0().iClass.iSubClassNum = 0x0D; - ifc0().iClass.iProtocolNum = 0x00; - - User::LeaveIfError(iCommLdd.SetInterface(0, ifc0)); - - err = iCommLdd.FinalizeInterface(); - if (KErrNone != err) - { - OstTrace1(TRACE_ERROR, CNCMCLIENTMANAGER_SETCOMMUNICATIONINTERFACEL_FAIL_TO_INIT, "Failed to FinalizeInterface, err %d", err); - User::Leave(err); - } - CleanupStack::PopAndDestroy(string0); - OstTraceFunctionExit1( CNCMCLIENTMANAGER_SETCOMMUNICATIONINTERFACEL_EXIT, this ); - } - -/** - * Setup NCM data interface - * @param aDataEpBufferSize, the determined data interface - * endpoint buffer size. - */ -void CNcmClientManager::SetDataInterfaceL(TUint& aDataEpBufferSize) - { - OstTraceFunctionEntryExt( CNCMCLIENTMANAGER_SETDATAINTERFACEL_ENTRY, this ); - - const TUint KMaxScBufferSize = 1048576; // Up limit of end point buffer - const TUint KMinScBufferSize = 262144; // Lower limit of end point buffer - const TUint KMaxScReadSize = 65536; - - User::LeaveIfError(iDataLdd.Open(0)); - iDataLddInitiated = ETrue; - - TUsbcScInterfaceInfoBuf ifc0, ifc1; - TUsbDeviceCaps dCaps; - User::LeaveIfError(iDataLdd.DeviceCaps(dCaps)); - - TBool isResourceAllocationV2 = ((dCaps().iFeatureWord1 - & KUsbDevCapsFeatureWord1_EndpointResourceAllocV2) != 0); - - TUsbcDeviceState deviceStatus; - - User::LeaveIfError(iDataLdd.DeviceStatus(deviceStatus)); - if (deviceStatus == EUsbcDeviceStateConfigured) - { - User::Leave(KErrInUse); - } - - TInt epNum = dCaps().iTotalEndpoints; - TUsbcEndpointData data[KUsbcMaxEndpoints]; - TPtr8 dataptr(reinterpret_cast (data), sizeof(data), - sizeof(data)); - - User::LeaveIfError(iDataLdd.EndpointCaps(dataptr)); - - const TUint KNcmDataInterfaceEpNumber = 2; - TBool foundBulkIN = EFalse; - TBool foundBulkOUT = EFalse; - TInt maxPacketSize = 0; - const TUint KEndPointBulkInType = KUsbEpTypeBulk | KUsbEpDirIn; - const TUint KEndPointBulkOutType = KUsbEpTypeBulk | KUsbEpDirOut; - for (TInt i = 0; i < epNum; i++) - { - const TUsbcEndpointData* epData = &data[i]; - - // Check if this endpoint is in use - if (epData->iInUse) - { - continue; - } - - maxPacketSize = epData->iCaps.MaxPacketSize(); - if (!foundBulkIN && - ((epData->iCaps.iTypesAndDir & KEndPointBulkInType) == KEndPointBulkInType)) - { - // EEndpoint1 is going to be our TX (IN, write) endpoint - ifc1().iEndpointData[0].iType = KUsbEpTypeBulk; - ifc1().iEndpointData[0].iDir = KUsbEpDirIn; - ifc1().iEndpointData[0].iSize = maxPacketSize; - ifc1().iEndpointData[0].iInterval_Hs = 0x0; - ifc1().iEndpointData[0].iBufferSize = KMaxScBufferSize; - - if (isResourceAllocationV2) - { - ifc1().iEndpointData[0].iFeatureWord1 |= - (KUsbcEndpointInfoFeatureWord1_DMA | KUsbcEndpointInfoFeatureWord1_DoubleBuffering); - } - - foundBulkIN = ETrue; - if (foundBulkIN && foundBulkOUT) - { - break; - } - continue; - } - - if (!foundBulkOUT && - ((epData->iCaps.iTypesAndDir & KEndPointBulkOutType) == KEndPointBulkOutType)) - { - // EEndpoint2 is going to be our RX (OUT, read) endpoint - ifc1().iEndpointData[1].iType = KUsbEpTypeBulk; - ifc1().iEndpointData[1].iDir = KUsbEpDirOut; - ifc1().iEndpointData[1].iSize = maxPacketSize; - ifc1().iEndpointData[1].iInterval_Hs = 0x1; - ifc1().iEndpointData[1].iBufferSize = KMaxScBufferSize; - ifc1().iEndpointData[1].iReadSize = KMaxScReadSize; - - if (isResourceAllocationV2) - { - ifc1().iEndpointData[1].iFeatureWord1 |= - (KUsbcEndpointInfoFeatureWord1_DMA | KUsbcEndpointInfoFeatureWord1_DoubleBuffering); - } - - foundBulkOUT = ETrue; - if (foundBulkIN && foundBulkOUT) - { - break; - } - continue; - } - } - - // Leave if no properly endpoint is found - if (EFalse == foundBulkIN || EFalse == foundBulkOUT) - { - User::Leave(KErrNotFound); - } - - _LIT16(KIfClassName0, "NCM Data Interface 0"); - - HBufC16* string0 = KIfClassName0().AllocL(); - CleanupStack::PushL(string0); - ifc0().iString = string0; - ifc0().iTotalEndpointsUsed = 0; - ifc0().iClass.iClassNum = 0x0A; - ifc0().iClass.iSubClassNum = 0x00; - ifc0().iClass.iProtocolNum = 0x01; - User::LeaveIfError(iDataLdd.SetInterface(0, ifc0)); - - _LIT16(KIfClassName1, "NCM Data Interface 1"); - HBufC16* string1 = KIfClassName1().AllocL(); - CleanupStack::PushL(string1); - ifc1().iString = string1; - ifc1().iTotalEndpointsUsed = KNcmDataInterfaceEpNumber; - ifc1().iClass.iClassNum = 0x0A; - ifc1().iClass.iSubClassNum = 0x00; - ifc1().iClass.iProtocolNum = 0x01; - - // Try to allocate expected memory for data interface endpoints - aDataEpBufferSize = KMaxScBufferSize; - - TInt err = KErrNone; - FOREVER - { - OstTrace1(TRACE_NORMAL, CNCMCLIENTMANAGER_SETDATAINTERFACEL_TRY_NEW_BUF_SIZE, "Try buffer size: %d", aDataEpBufferSize); - err = iDataLdd.SetInterface(1, ifc1); - if (KErrNoMemory == err) - { - // Reduce buffer size and retry - aDataEpBufferSize = aDataEpBufferSize / 2; - if (aDataEpBufferSize < KMinScBufferSize) - { - User::Leave(KErrNoMemory); - } - ifc1().iEndpointData[0].iBufferSize = aDataEpBufferSize; - ifc1().iEndpointData[1].iBufferSize = aDataEpBufferSize; - continue; - } - else - { - OstTrace1(TRACE_ERROR, CNCMCLIENTMANAGER_SETDATAINTERFACEL_SET_INTERFACE_FAIL, "Set data interface and the returned err code is %d", err); - // Leave with error code - User::LeaveIfError(err); - break; - } - } - - CleanupStack::PopAndDestroy(2, string0); - - User::LeaveIfError(iDataLdd.FinalizeInterface()); - OstTraceFunctionExit1( CNCMCLIENTMANAGER_SETDATAINTERFACEL_EXIT, this ); - } - -/** - * Setup the Class Descriptors - * @param aDataInterfaceNumber The interface number of the data class - * @return Error. - */ -TInt CNcmClientManager::SetupClassSpecificDescriptor(TUint8 aDataInterfaceNumber) - { - OstTraceFunctionEntryExt( CNCMCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_ENTRY, this ); - - TInt res; - - TNcmClassDescriptor descriptor; - - // Header Functional Descriptor- CDC spec table 15 - descriptor.iHdrSize = 0x05; - descriptor.iHdrType = 0x24; - descriptor.iHdrSubType = 0x00; - descriptor.iHdrBcdCDC = 0x0120; - - // Ethernet Networking Functional Descriptor- ECM spec table 3 - descriptor.iEthFunLength = 0x0D; - descriptor.iEthFunType = 0x24; - descriptor.iEthFunSubtype = 0x0F; - - // Generate the MAC address new NCM interface - res = SetMacAddressString(descriptor.iMACAddress); - - if (res != KErrNone) - { - OstTraceFunctionExitExt( CNCMCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_EXIT, this, res ); - return res; - } - - descriptor.iEthernetStatistics = 0; - descriptor.iMaxSegmentSize = KEthernetFrameSize; - descriptor.iNumberMCFilters = 0; - descriptor.iNumberPowerFilters = 0; - - // NCM Functional Descriptor- NCM spec table 5-2 - descriptor.iNcmFunLength = 0x06; - descriptor.iNcmFunType = 0x24; - descriptor.iNcmFunSubtype = 0x1A; - descriptor.iNcmVersion = 0x0100; - descriptor.iNetworkCapabilities = 0; - - // Union functional descriptor- CDC spec table 16 - descriptor.iUnSize = 0x05; - descriptor.iUnType = 0x24; - descriptor.iUnSubType = 0x06; - descriptor.iUnMasterInterface = 0; - descriptor.iUnSlaveInterface = aDataInterfaceNumber; - - OstTrace0( TRACE_NORMAL, CNCMCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_PRE_SET_BLOCK, "About to call SetCSInterfaceDescriptorBlock" ); - res = iCommLdd.SetCSInterfaceDescriptorBlock(0, descriptor.Des()); - if (res != KErrNone) - { - OstTraceFunctionExitExt( CNCMCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_EXIT_DUP1, this, res ); - return res; - } - - OstTraceFunctionExitExt( CNCMCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_EXIT_DUP2, this, KErrNone ); - return KErrNone; - } - -/** - * Set the MAC address string in descriptor - * @param aStrIndex the MAC address string index - */ -TInt CNcmClientManager::SetMacAddressString(TUint8& aStrIndex) - { - OstTraceFunctionEntryExt( CNCMCLIENTMANAGER_SETMACADDRESSSTRING_ENTRY, this ); - - TBuf16 str; - - // Search for MAC address string from index 0x10 - aStrIndex = 0x10; - - TInt ret = KErrNone; -#ifndef OVERDUMMY_NCMCC - while (aStrIndex++ < 0xFF && ret != KErrNotFound) - { - ret = iDataLdd.GetStringDescriptor(aStrIndex, str); - } -#endif // OVERDUMMY_NCMCC - - if (aStrIndex < 0xFF) - { - TBuf8 macAddrStr; - _LIT8(KMacAddressFormat, "%02X%02X%02X%02X%02X%02X"); - OstTraceExt1(TRACE_NORMAL, CNCMCLIENTMANAGER_SETMACADDRESSSTRING, "The MAC address is %s", iHostMacAddress); - macAddrStr.AppendFormat(KMacAddressFormat, iHostMacAddress[0], - iHostMacAddress[1], iHostMacAddress[2], iHostMacAddress[3], - iHostMacAddress[4], iHostMacAddress[5]); - str.Copy(macAddrStr); - ret = iDataLdd.SetStringDescriptor(aStrIndex, str); - } - - OstTraceFunctionExitExt( CNCMCLIENTMANAGER_SETMACADDRESSSTRING_EXIT, this, ret ); - return ret; - } - -/** - * Get NCM data interface number - * @param aInterfaceNumber NCM data interface number - * @return Error. - */ -TInt CNcmClientManager::DataInterfaceNumber(TUint8& aInterfaceNumber) - { - OstTraceFunctionEntryExt( CNCMCLIENTMANAGER_DATAINTERFACENUMBER_ENTRY, this ); - - TInt interfaceSize = 0; - - // 0 means the main interface in the LDD API - TInt res = iDataLdd.GetInterfaceDescriptorSize(0, interfaceSize); - - if ( KErrNone == res ) - { - OstTraceFunctionExitExt( CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT, this, res ); - return res; - } - - HBufC8* interfaceBuf = HBufC8::New(interfaceSize); - if ( !interfaceBuf ) - { - OstTraceFunctionExitExt( CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP1, this, KErrNoMemory); - return KErrNoMemory; - } - - TPtr8 interfacePtr = interfaceBuf->Des(); - interfacePtr.SetLength(0); - // 0 means the main interface in the LDD API - res = iDataLdd.GetInterfaceDescriptor(0, interfacePtr); - - if ( KErrNone == res ) - { - delete interfaceBuf; - OstTraceFunctionExitExt( CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP2, this, res ); - return res; - } - - OstTrace1(TRACE_NORMAL, CNCMCLIENTMANAGER_DATAINTERFACENUMBER_INTERFACE_INFO, "***Interface length =% d", interfacePtr.Length()); - for ( TInt i = 0 ; i < interfacePtr.Length() ; i++ ) - { - OstTrace1(TRACE_NORMAL, CNCMCLIENTMANAGER_DATAINTERFACENUMBER_INTERFACE_INFO2, "***** %x", interfacePtr[i]); - } - - const TUint8* buffer = reinterpret_cast(interfacePtr.Ptr()); - // 2 is where the interface number is, according to the LDD API - aInterfaceNumber = buffer[2]; - OstTraceExt1(TRACE_NORMAL, CNCMCLIENTMANAGER_DATAINTERFACENUMBER, "Interface number = %hhu", aInterfaceNumber); - - delete interfaceBuf; - - OstTraceFunctionExitExt( CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP3, this, KErrNone ); - return KErrNone; - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmconnectionmanager.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmconnectionmanager.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,479 +0,0 @@ -/* -* 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 - */ - -#ifndef OVERDUMMY_NCMCC -#include -#include -#endif // OVERDUMMY_NCMCC - -#include -#include -#include -#include - -#include "ncmconnectionmanager.h" -#include "ncmiapprogresswatcher.h" -#include "ncmiapreader.h" -#include "ncmdhcpnotifwatcher.h" - -#ifdef OVERDUMMY_NCMCC -#include -#else -#include "ncminternalsrv.h" -#endif // OVERDUMMY_NCMCC - -#include "ncmclasscontroller.h" -#include "ncmconnectionmanagerobserver.h" -#include "ncmconnectionmanagerhelper.h" - -// For OST tracing -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmconnectionmanagerTraces.h" -#endif - -using namespace UsbNcm; - -#if defined(_DEBUG) -_LIT(KNcmConnManagerPanic, "UsbNcmCM"); // must be <=16 chars -#endif - -extern const TUint KEthernetFrameSize; - -// Panic codes -enum TNcmCMPanicCode - { - ENcmCMPanicOutstandingRequestFromDevice = 1, - ENcmCMPanicNoRegisteredWatcher = 2, - ENcmCMEndMark - }; - -/** - * Constructs a CNcmConnectionManager object. - * @param[in] aObserver, NCM connection observer - * @param[in] aHostMacAddress, the NCM interface MAC address - * @param[in] aDataBufferSize, the EndPoint buffer size - * @param[in] aNcmInternalSvr, the NCM internal server - * @return Ownership of a new CNcmConnectionManager object - */ -CNcmConnectionManager* CNcmConnectionManager::NewL( - MNcmConnectionManagerObserver& aObserver, - const TNcmMacAddress& aMacAddress, TUint aDataBufferSize, - RNcmInternalSrv& aNcmInternalSvr) - { - OstTraceFunctionEntry0(CNCMCONNECTIONMANAGER_NEWL_ENTRY); - - CNcmConnectionManager* self = new (ELeave) CNcmConnectionManager(aObserver, - aMacAddress, aDataBufferSize, aNcmInternalSvr); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - - OstTraceFunctionExit0(CNCMCONNECTIONMANAGER_NEWL_EXIT); - return self; - } - -/** - * Method to perform second phase construction. - */ -void CNcmConnectionManager::ConstructL() - { - OstTraceFunctionEntry0(CNCMCONNECTIONMANAGER_CONSTRUCTL_ENTRY); - - TInt err = RProperty::Define(KUsbmanSvrUid, KKeyNcmSharedState, RProperty::EInt, - KAllowAllPolicy, KCommDDPolicy); - - if (KErrNone != err) - { - OstTrace1( TRACE_ERROR, CNCMCONNECTIONMANAGER_CONSTRUCTL, "Define NCM shared state P&S key fail: err=%d", err ); - User::Leave(err); - } - - User::LeaveIfError(iProperty.Attach(KUsbmanSvrUid, KKeyNcmSharedState)); - User::LeaveIfError(iProperty.Set(ENcmStateIntial)); - - User::LeaveIfError(iSocketServ.Connect()); - User::LeaveIfError(iConnection.Open(iSocketServ)); - - iIapPrgrsWatcher = new (ELeave) CNcmIapProgressWatcher(*this, iConnection); - iConnManHelper = new (ELeave) CNcmConnectionManHelper(*this, iConnection); - iDhcpNotifWatcher = new (ELeave) CNcmDhcpNotifWatcher(*this, iNcmInternalSvr); - iIapReader = new (ELeave) CNcmIapReader(*this, iConnPref); - - OstTraceFunctionExit0(CNCMCONNECTIONMANAGER_CONSTRUCTL_EXIT); - } - -/** - * Called when NCM connection starting attempt completed - */ -void CNcmConnectionManager::HandleConnectionCompleteL() - { - OstTraceFunctionEntry0( CNCMCONNECTIONMANAGER_HANDLECONNECTIONCOMPLETEL_ENTRY ); - OstTrace0(TRACE_NORMAL, CNCMCONNECTIONMANAGER_HANDLECONNECTIONCOMPLETEL_CHANGE_MTU, "About to change default MTU size!"); - // Change default MTU size - SetCustomMtuL(); - - OstTrace0(TRACE_NORMAL, CNCMCONNECTIONMANAGER_HANDLECONNECTIONCOMPLETEL_CONN_NCM_INTERNAL_SVR, "About to connect to internal NCM server!"); - - // Connect to internal server in packet driver - User::LeaveIfError(iNcmInternalSvr.Connect()); - - iNcmInternalSvr.TransferBufferSize(iDataBufferSize); - iNcmInternalSvr.SetIapId(iConnPref.IapId()); - iDhcpNotifWatcher->StartL(); - OstTraceFunctionExit0( CNCMCONNECTIONMANAGER_HANDLECONNECTIONCOMPLETEL_EXIT ); - } - -/** - * Destructor. - */ -CNcmConnectionManager::~CNcmConnectionManager() - { - OstTraceFunctionEntry0(CNCMCONNECTIONMANAGER_CNCMCONNECTIONMANAGER_DESTRUCTOR_ENTRY); - - delete iIapReader; - delete iDhcpNotifWatcher; - delete iConnManHelper; - delete iIapPrgrsWatcher; - - iConnection.Close(); - iSocketServ.Close(); - iProperty.Close(); - - RProperty::Delete(KKeyNcmSharedState); - - OstTraceFunctionExit0(CNCMCONNECTIONMANAGER_CNCMCONNECTIONMANAGER_DESTRUCTOR_EXIT); - } - -/** - * Constructor. - * @param[in] aObserver, NCM connection observer - * @param[in] aHostMacAddress, the NCM interface MAC address - * @param[in] aDataBufferSize, the EndPoint buffer size - * @param[in] aNcmInternalSvr, the NCM internal server - */ -CNcmConnectionManager::CNcmConnectionManager(MNcmConnectionManagerObserver& aObserver, - const TNcmMacAddress& aHostMacAddress, TUint aDataBufferSize, - RNcmInternalSrv& aNcmInternalSvr): - iConnMgrObserver(aObserver), - iHostMacAddress(aHostMacAddress), iDataBufferSize(aDataBufferSize), - iNcmInternalSvr(aNcmInternalSvr) - { - // No implementation needed. - } - -/** - *Called by class controller to start the connection building process. - *@param aStatus, reference to ncm class controller's iStatus - */ -void CNcmConnectionManager::Start(TRequestStatus& aStatus) - { - OstTraceFunctionEntry0(CNCMCONNECTIONMANAGER_START_ENTRY); - - __ASSERT_DEBUG(!iReportStatus, - User::Panic(KNcmConnManagerPanic, ENcmCMPanicOutstandingRequestFromDevice)); - - aStatus = KRequestPending; - iReportStatus = &aStatus; - - Reset(); - - // Preparing IAP information - iIapReader->Start(); - OstTraceFunctionExit0(CNCMCONNECTIONMANAGER_START_EXIT); - } - -/** - * Cancel ongoing starting attempt - */ -void CNcmConnectionManager::StartCancel() - { - OstTraceFunctionEntry0(CNCMCONNECTIONMANAGER_STARTCANCEL_ENTRY); - - __ASSERT_DEBUG(iReportStatus, - User::Panic(KNcmConnManagerPanic, ENcmCMPanicNoRegisteredWatcher)); - - Stop(); - - User::RequestComplete(iReportStatus, KErrCancel); - - OstTraceFunctionExit0(CNCMCONNECTIONMANAGER_STARTCANCEL_EXIT); - } - -/** - * Called by class controller to stop the connection. - */ -void CNcmConnectionManager::Stop() - { - OstTraceFunctionEntry0(CNCMCONNECTIONMANAGER_STOP_ENTRY); - - // Cancel any current ongoing operations - Reset(); - - // Reset shared state - iProperty.Set(ENcmStateIntial); - - iConnManHelper->Stop(); - OstTraceFunctionExit0(CNCMCONNECTIONMANAGER_STOP_EXIT); - } - -/** - * Reset conneciton manager itself - */ -void CNcmConnectionManager::Reset() - { - OstTraceFunctionEntry0(CNCMCONNECTIONMANAGER_RESET_ENTRY); - - iConnComplete = EFalse; - - iIapReader->Cancel(); - iDhcpNotifWatcher->Cancel(); - iIapPrgrsWatcher->Cancel(); - iConnManHelper->Cancel(); - - OstTraceFunctionExit0(CNCMCONNECTIONMANAGER_RESET_EXIT); - } -/** - * Change the default MTU size on NCM networking connection - */ -void CNcmConnectionManager::SetCustomMtuL() - { - OstTraceFunctionEntry0(CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_ENTRY); - - RSocket socket; - User::LeaveIfError(socket.Open(iSocketServ, KAfInet, KSockStream, KProtocolInetTcp, - iConnection)); - - TPckgBuf interfaceInfo; - TPckgBuf interfaceName; - - TUint cnt = 0; - iConnection.EnumerateConnections(cnt); // Count all underlying interfaces - - TUint iap = iConnPref.IapId(); - TInt index = 1; - for (index = 1; index <= cnt; index++) - { - TConnectionInfoBuf info; - iConnection.GetConnectionInfo(index, info); - if (info().iIapId == iap) - { - break; - } - } - - if (index > cnt) - { - OstTrace0( TRACE_NORMAL, CNCMCONNECTIONMANAGER_SETCUSTOMMTUL, "Can not find an interface based on NCM!" ); - User::Leave(KErrNotFound); - } - - interfaceName().iIndex = index; - OstTraceExt2( TRACE_NORMAL, CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_INTER_INFO, ";cnt=%d;interfaceName().iIndex=%u", cnt, interfaceName().iIndex ); - User::LeaveIfError(iConnection.Control(KCOLProvider, KConnGetInterfaceName, interfaceName)); - OstTraceExt3( TRACE_NORMAL, CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_NEW_MTU_SIZE, ";Interface Name=%S, ;current MTU=%d. MTU size will be changed to %d!", interfaceName().iName, interfaceInfo().iMtu, KEthernetFrameSize); - - TInt err = socket.SetOpt(KSoInetEnumInterfaces, KSolInetIfCtrl); - if (err != KErrNone) - { - OstTrace1(TRACE_NORMAL, CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_START_INTER_ENUM, "Failed to set KSoInetEnumInterfaces option [%d]", err); - User::LeaveIfError(err); - } - - err = KErrNotFound; - while (socket.GetOpt(KSoInetNextInterface, KSolInetIfCtrl, interfaceInfo) == KErrNone) - { - OstTraceExt1(TRACE_NORMAL, CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_INTER_NAME, "InterfaceInfo().iName = %S", interfaceInfo().iName); - OstTrace1(TRACE_NORMAL, CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_INTER_MTU, "InterfaceInfo().iMtu = %d", interfaceInfo().iMtu); - if (interfaceInfo().iName == interfaceName().iName) - { - // found the interface - err = KErrNone; - break; - } - } - if (KErrNone != err) - { - OstTrace1(TRACE_ERROR, CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_SEARCH_FAIL, "Can not find NCM connection: err=%x", err); - User::LeaveIfError(err); - } - - // Set new MTU size - TPckgBuf newinterfaceInfo; - newinterfaceInfo().iMtu = KEthernetFrameSize; - newinterfaceInfo().iDoPrefix = 0; - newinterfaceInfo().iDoId = 0; - newinterfaceInfo().iDoState = 0; - newinterfaceInfo().iDoAnycast = 0; - newinterfaceInfo().iDoProxy = 0; - newinterfaceInfo().iAlias = interfaceInfo().iAlias; - newinterfaceInfo().iDelete = interfaceInfo().iDelete; - newinterfaceInfo().iState = interfaceInfo().iState; - newinterfaceInfo().iSpeedMetric = interfaceInfo().iSpeedMetric; - newinterfaceInfo().iFeatures = interfaceInfo().iFeatures; - newinterfaceInfo().iTag = interfaceInfo().iTag; - newinterfaceInfo().iName = interfaceInfo().iName; - newinterfaceInfo().iSpeedMetric = interfaceInfo().iSpeedMetric; - newinterfaceInfo().iFeatures = interfaceInfo().iFeatures; - newinterfaceInfo().iHwAddr = interfaceInfo().iHwAddr; - newinterfaceInfo().iAddress = interfaceInfo().iAddress; - newinterfaceInfo().iNetMask = interfaceInfo().iNetMask; - newinterfaceInfo().iDefGate = interfaceInfo().iDefGate; - newinterfaceInfo().iNameSer2 = interfaceInfo().iNameSer2; - newinterfaceInfo().iNameSer1 = interfaceInfo().iNameSer1; - - OstTrace0( TRACE_NORMAL, CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_PRE_SETMTU, "About to change the default MTU size." ); - User::LeaveIfError(socket.SetOpt(KSoInetConfigInterface, KSolInetIfCtrl, newinterfaceInfo)); - - socket.Close(); - - OstTraceFunctionExit0(CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_EXIT); - } - -/** - * Called by connection watcher when it detects the class fatal error. - */ -void CNcmConnectionManager::MipsoHandleClassFatalError(TInt aError) - { - OstTraceFunctionEntryExt( CNCMCONNECTIONMANAGER_MIPSOHANDLECLASSFATALERROR_ENTRY, this ); - - Reset(); - - __ASSERT_DEBUG(!iReportStatus, User::Panic(KNcmConnManagerPanic, ENcmCMPanicOutstandingRequestFromDevice)); - - OstTrace1(TRACE_ERROR, CNCMCONNECTIONMANAGER_MIPSOHANDLECLASSFATALERROR, "NCM connection fatal error occurs: %d", aError); - - iConnMgrObserver.McmoErrorIndication(aError); - - OstTraceFunctionExit1( CNCMCONNECTIONMANAGER_MIPSOHANDLECLASSFATALERROR_EXIT, this ); - } - -/** - * Called by connection help when it get notification the - * connection over NCM has been established. - */ -void CNcmConnectionManager::MicoHandleConnectionComplete(TInt aError) - { - OstTraceFunctionEntryExt( CNCMCONNECTIONMANAGER_MICOHANDLECONNECTIONCOMPLETE_ENTRY, this ); - - // Reset shared state - iProperty.Set(ENcmStateIntial); - - if (KErrNone == aError) - { - TRAPD(err, HandleConnectionCompleteL()); - User::RequestComplete(iReportStatus, err); - } - else - { - // Leave if connection build failed - User::RequestComplete(iReportStatus, aError); - } - - OstTraceFunctionExit1( CNCMCONNECTIONMANAGER_MICOHANDLECONNECTIONCOMPLETE_EXIT, this ); - } - -/** - * Called by DHCP notification watcher. - * When the NCM internal server send DHCP request notification to - * the watcher, watcher call this function to do DHCP provisioning - * for NCM connection. - */ -void CNcmConnectionManager::MdnoHandleDhcpNotification(TInt aError) - { - OstTraceFunctionEntryExt( CNCMCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_ENTRY, this ); - if (KErrNone != aError) - { - // Report this failure to the observer - // Finally this will report to usbman and NCM class will be stopped. - iConnMgrObserver.McmoErrorIndication(aError); - OstTraceFunctionExit1( CNCMCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_EXIT, this ); - return; - } - - // Doing DHCP for NCM - aError = KErrNone; - - // Configuring DHCP server to assign the IP address to PC(host) - TRequestStatus stat; - OstTrace0(TRACE_NORMAL, CNCMCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_CALL_IOCTL, "About to call to Ioctl()"); - - TNcmMacAddress macAddr = iHostMacAddress; - iConnection.Ioctl(KCOLConfiguration, KConnDhcpSetHwAddressParams, stat, - &macAddr); - User::WaitForRequest(stat); - aError = stat.Int(); - OstTrace1( TRACE_NORMAL, CNCMCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_RETURN_IOCTL, "Return from Ioctl:aError=%d", aError ); - - if (KErrNone == aError) - { - // Disable timer on interface and wont let interface coming down due to timer expiry. - iConnection.SetOpt(KCOLProvider, KConnDisableTimers, ETrue); - iIapPrgrsWatcher->Start(); - } - else - { - // Silent stop the NCM connection. - iConnManHelper->Stop(); - - // Report this failure to the observer - // Finally this will report to usbman and NCM class will be stopped. - iConnMgrObserver.McmoErrorIndication(aError); - } - - // Set DHCP result to NCM internal server - iNcmInternalSvr.SetDhcpResult(aError); - OstTraceFunctionExit1( CNCMCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_EXIT_DUP1, this ); - } - -/** - * Called by IAP reader. - * When IAP reader finished reading NCM IAP preference from CentRep, - * it will call this function to start building ethernet connection - * using NCM IAP configuration. - */ -void CNcmConnectionManager::MicoHandleIAPReadingComplete(TInt aError) - { - OstTraceFunctionEntryExt( CNCMCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_ENTRY, this ); - if (KErrNone != aError) - { - OstTrace1( TRACE_ERROR, CNCMCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_IAP_RESULT, "IAP reading failed with error;aError=%d", aError ); - User::RequestComplete(iReportStatus, aError); - - OstTraceFunctionExit1( CNCMCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_EXIT, this ); - return; - } - - aError = iProperty.Set(ENcmStartRequested); - - if (KErrNone != aError) - { - OstTrace1( TRACE_ERROR, CNCMCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_SET_SHARED_STATE, "Property set failed with error:;aError=%d", aError ); - User::RequestComplete(iReportStatus, aError); - - OstTraceFunctionExit1( CNCMCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_EXIT_DUP1, this ); - return; - } - - iConnManHelper->Start(iConnPref); - OstTraceFunctionExit1( CNCMCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_EXIT_DUP2, this ); - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmconnectionmanagerhelper.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmconnectionmanagerhelper.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,116 +0,0 @@ -/* -* 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 "ncmconnectionmanagerhelper.h" -#include "ncmiapconnectionobserver.h" -#include "ncmconnectionmanager.h" - -// For OST tracing -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmconnectionmanagerhelperTraces.h" -#endif - -/** - * Constructor. - * @param aObserver The object which is interested in the IAP connection completion - * @param aConnection The reference of the NCM connection to be used - */ -CNcmConnectionManHelper::CNcmConnectionManHelper(MNcmConnectionObserver& aObserver, - RConnection& aConnection) - : CActive(CActive::EPriorityStandard) - , iObserver(aObserver) - , iConnection(aConnection) - { - OstTraceFunctionEntryExt( CNCMCONNECTIONMANHELPER_CNCMCONNECTIONMANHELPER_ENTRY, this ); - CActiveScheduler::Add(this); - OstTraceFunctionExit1( CNCMCONNECTIONMANHELPER_CNCMCONNECTIONMANHELPER_EXIT, this ); - } - - -/** - * Destructor. - */ -CNcmConnectionManHelper::~CNcmConnectionManHelper() - { - OstTraceFunctionEntry1( CNCMCONNECTIONMANHELPER_CNCMCONNECTIONMANHELPER_ENTRY_DESTRUCTOR, this ); - if (IsActive()) - { - Cancel(); - } - else - { - Stop(); - } - OstTraceFunctionExit1( CNCMCONNECTIONMANHELPER_CNCMCONNECTIONMANHELPER_ENTRY_DESTRUCTOR_EXIT, this ); - } - -/** - * Start the connection. - * @param aPref NCM connect preference - */ -void CNcmConnectionManHelper::Start(TConnPref& aPref) - { - OstTraceFunctionEntryExt( CNCMCONNECTIONMANHELPER_START_ENTRY, this ); - if (!IsActive()) - { - iConnection.Start(aPref, iStatus); - SetActive(); - } - OstTraceFunctionExit1( CNCMCONNECTIONMANHELPER_START_EXIT, this ); - } - -/** - * Stop the connection. - */ -void CNcmConnectionManHelper::Stop() - { - OstTraceFunctionEntry1( CNCMCONNECTIONMANHELPER_STOP_ENTRY, this ); - - TInt err = iConnection.Stop(RConnection::EStopAuthoritative); - OstTrace1( TRACE_NORMAL, CNCMCONNECTIONMANHELPER_STOP_RETURN_CODE, "Return code from Stop() is:;err=%d", err ); - OstTraceFunctionExit1( CNCMCONNECTIONMANHELPER_STOP_EXIT, this ); - } -/** - * Implements cancellation of an outstanding request. - */ -void CNcmConnectionManHelper::DoCancel() - { - OstTraceFunctionEntry0( CNCMCONNECTIONMANHELPER_DOCANCEL_ENTRY ); - - TInt err = iConnection.Stop(RConnection::EStopAuthoritative); - - OstTrace1( TRACE_NORMAL, CNCMCONNECTIONMANHELPER_DOCNCEL, "Return code from Stop() is:;err=%d", err ); - OstTraceFunctionExit0( CNCMCONNECTIONMANHELPER_DOCANCEL_EXIT ); - } - -/** - * Called when connection completed. - */ -void CNcmConnectionManHelper::RunL() - { - OstTraceFunctionEntry0( CNCMCONNECTIONMANHELPER_RUNL_ENTRY ); - iObserver.MicoHandleConnectionComplete(iStatus.Int()); - OstTraceFunctionExit0( CNCMCONNECTIONMANHELPER_RUNL_EXIT ); - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmdhcpnotifwatcher.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmdhcpnotifwatcher.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,122 +0,0 @@ -/* -* 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 "ncmdhcpnotifwatcher.h" -#include "ncmconnectionmanager.h" -#include "ncmdhcpnotifobserver.h" - -#ifdef OVERDUMMY_NCMCC -#include -#else -#include "ncminternalsrv.h" - -#endif // OVERDUMMY_NCMCC - -// For OST trace -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmdhcpnotifwatcherTraces.h" -#endif - -/** - * Constructor. - * @param aObserver The AO which handle the DHCP provisioning request from NCM internal server - * @param aNcmInteralSvr The reference of the NCM internal server client API handle - */ -CNcmDhcpNotifWatcher::CNcmDhcpNotifWatcher(MNcmDhcpNotificationObserver& aObserver, - RNcmInternalSrv& aNcmInteralSvr) - : CActive(CActive::EPriorityStandard), - iObserver(aObserver), - iNcmInteralSvr(aNcmInteralSvr) - { - OstTraceFunctionEntryExt( CNCMDHCPNOTIFWATCHER_CNCMDHCPNOTIFWATCHER_ENTRY, this ); - - CActiveScheduler::Add(this); - OstTraceFunctionExit1( CNCMDHCPNOTIFWATCHER_CNCMDHCPNOTIFWATCHER_EXIT, this ); - } - - -/** - * Destructor. - */ -CNcmDhcpNotifWatcher::~CNcmDhcpNotifWatcher() - { - OstTraceFunctionEntry0( CNCMDHCPNOTIFWATCHER_CNCMDHCPNOTIFWATCHER_ENTRY_DESTROY ); - Cancel(); - OstTraceFunctionExit0( CNCMDHCPNOTIFWATCHER_CNCMDHCPNOTIFWATCHER_EXIT_DESTROY ); - } - -/** - * Start observing the connection stage changes. - */ -void CNcmDhcpNotifWatcher::StartL() - { - OstTraceFunctionEntry0( CNCMDHCPNOTIFWATCHER_START_ENTRY ); - - if(!IsActive()) - { - iNcmInteralSvr.DhcpProvisionNotify(iStatus); - SetActive(); - } - else - { - // Report this to NCM connection manager - OstTrace0( TRACE_FATAL, CNCMDHCPNOTIFWATCHER_STARTL, "DHCP notifier already actived!" ); - User::Leave(KErrInUse); - } - - OstTraceFunctionExit0( CNCMDHCPNOTIFWATCHER_START_EXIT ); - } - -/** - * Implements cancellation of an outstanding request. Cancels the connection progress notification request. - */ -void CNcmDhcpNotifWatcher::DoCancel() - { - OstTraceFunctionEntry0( CNCMDHCPNOTIFWATCHER_DOCANCEL_ENTRY ); - - iNcmInteralSvr.DhcpProvisionNotifyCancel(); - OstTraceFunctionExit0( CNCMDHCPNOTIFWATCHER_DOCANCEL_EXIT ); - } - -/** - * Called when got DHCP provisioning request from NCM internal server. - */ -void CNcmDhcpNotifWatcher::RunL() - { - OstTraceFunctionEntry0( CNCMDHCPNOTIFWATCHER_RUNL_ENTRY ); - - TInt completionCode = iStatus.Int(); - if (KErrCancel != completionCode) - { - // Doing DHCP - iObserver.MdnoHandleDhcpNotification(iStatus.Int()); - - if (KErrNone == completionCode) - { - // Restart the watcher - StartL(); - } - } - OstTraceFunctionExit0( CNCMDHCPNOTIFWATCHER_RUNL_EXIT ); - } - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmiapprogresswatcher.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmiapprogresswatcher.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,122 +0,0 @@ -/* -* 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 "ncmiapprogresswatcher.h" -#include "ncmiapprogressstateobserver.h" -#include "ncmconnectionmanager.h" - -// For OST Tracing -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmiapprogresswatcherTraces.h" -#endif - -/** - * Constructor. - * @param aObserver The object which is interested in the IAP progress stage change - * @param aConnection The reference of the NCM connection to be used - */ -CNcmIapProgressWatcher::CNcmIapProgressWatcher(MNcmIapProgressStateObserver& aObserver, RConnection& aConnection) - : CActive(CActive::EPriorityStandard) - , iObserver(aObserver) - , iConnection(aConnection) - { - OstTraceFunctionEntryExt( CNCMIAPPROGRESSWATCHER_CNCMIAPPROGRESSWATCHER_ENTRY, this ); - - CActiveScheduler::Add(this); - OstTraceFunctionExit1( CNCMIAPPROGRESSWATCHER_CNCMIAPPROGRESSWATCHER_EXIT, this ); - } - - -/** - * Destructor. - */ -CNcmIapProgressWatcher::~CNcmIapProgressWatcher() - { - OstTraceFunctionEntry0( CNCMIAPPROGRESSWATCHER_CNCMIAPPROGRESSWATCHER_ENTRY_DESTRUCTOR ); - - Cancel(); - OstTraceFunctionExit0( CNCMIAPPROGRESSWATCHER_CNCMIAPPROGRESSWATCHER_ENTRY_DESTRUCTOR_EXIT ); - } - -/** - * Start observing the connection stage changes. - */ -void CNcmIapProgressWatcher::Start() - { - OstTraceFunctionEntry0( CNCMIAPPROGRESSWATCHER_START_ENTRY ); - - if (!IsActive()) - { - iConnection.ProgressNotification(iProgressInfoBuf, iStatus); - SetActive(); - } - OstTraceFunctionExit0( CNCMIAPPROGRESSWATCHER_START_EXIT ); - } - -/** - * Implements cancellation of an outstanding request. Cancels the connection progress notification request. - */ -void CNcmIapProgressWatcher::DoCancel() - { - OstTraceFunctionEntry0( CNCMIAPPROGRESSWATCHER_DOCANCEL_ENTRY ); - - iConnection.CancelProgressNotification(); - OstTraceFunctionExit0( CNCMIAPPROGRESSWATCHER_DOCANCEL_EXIT ); - } - -/** - * Called when connection stage changed. - */ -void CNcmIapProgressWatcher::RunL() - { - OstTraceFunctionEntry0( CNCMIAPPROGRESSWATCHER_RUNL_ENTRY ); - - OstTrace1( TRACE_NORMAL, CNCMIAPPROGRESSWATCHER_RUNL_COMPLETION_CODE, ";iStatus.Int()=%d", iStatus.Int() ); - OstTraceExt2( TRACE_NORMAL, CNCMIAPPROGRESSWATCHER_RUNL_INFO, ";iProgressInfoBuf().iStage=%d;iProgressInfoBuf().iError=%d", iProgressInfoBuf().iStage, iProgressInfoBuf().iError ); - - - TInt completionCode = iStatus.Int(); - if (KErrNone == completionCode) - { - switch (iProgressInfoBuf().iStage) - { - case KConnectionUninitialised: - { - iObserver.MipsoHandleClassFatalError(KErrDisconnected); - break; - } - case ENcmPktDrvFatalError: - { - iObserver.MipsoHandleClassFatalError(iProgressInfoBuf().iError); - break; - } - default: - { - // Request the next notification - OstTrace0( TRACE_NORMAL, CNCMIAPPROGRESSWATCHER_RUNL_RESTART_WATCHER, "Request the next notification" ); - Start(); - } - } - } - OstTraceFunctionExit0( CNCMIAPPROGRESSWATCHER_RUNL_EXIT ); - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmiapreader.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/src/ncmiapreader.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,210 +0,0 @@ -/* -* 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 - -#ifdef OVERDUMMY_NCMCC -#include -#else -#include -#endif - -#include - -#include "ncmiapreaderobserver.h" -#include "ncmiapreader.h" - -// For OST Tracing -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmiapreaderTraces.h" -#endif - - -_LIT(KNcmIapReaderPanic, "UsbNcmIapReader"); // must be <=16 chars - -// Panic codes -enum TNcmIapReaderPanicCode - { - ENcmIapReaderPanicOutstandingRequest = 1, - ENcmIapReaderPanicTooManyIAPs = 2, - ENcmIapReaderEndMark - }; - -// NCM configuration item names -_LIT(KBearerNifName, "ethint"); -_LIT(KBearerLddFileName, "eusbcsc"); -_LIT(KBearerPktDrvName, "ncmpkt.drv"); - -/** - * Constructs a CNcmIapReader object. - * @param aObserver An MNcmIAPReaderObserver instance which handles IAP reading completing - * @param aConnPref The reference of the NCM connection aConnPref - */ -CNcmIapReader::CNcmIapReader(MNcmIAPReaderObserver& aObserver, TCommDbConnPref& aConnPref) -: CActive(CActive::EPriorityStandard), - iObserver(aObserver), - iConnPref(aConnPref) - { - OstTraceFunctionEntryExt( CNCMIAPREADER_CNCMIAPREADER_ENTRY, this ); - CActiveScheduler::Add(this); - OstTraceFunctionExit1( CNCMIAPREADER_CNCMIAPREADER_EXIT, this ); - } - -/** - * Destructor. - */ -CNcmIapReader::~CNcmIapReader() - { - OstTraceFunctionEntry0( CNCMIAPREADER_CNCMIAPREADER_ENTRY_DESTRUCTOR ); - - Cancel(); - OstTraceFunctionExit0( CNCMIAPREADER_CNCMIAPREADER_ENTRY_DESTRUCTOR_EXIT ); - } - -/** - * Start the connection. - */ -void CNcmIapReader::Start() - { - OstTraceFunctionEntry0( CNCMIAPREADER_START_ENTRY ); - - __ASSERT_ALWAYS(!IsActive(), - User::Panic(KNcmIapReaderPanic, ENcmIapReaderPanicOutstandingRequest)); - - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete(status, KErrNone); - - OstTraceFunctionExit0( CNCMIAPREADER_START_EXIT ); - } - -/** - * Implements cancellation of an outstanding request. - */ -void CNcmIapReader::DoCancel() - { - OstTraceFunctionEntry0( CNCMIAPREADER_DOCANCEL_ENTRY ); - - TRequestStatus* status = &iStatus; - User::RequestComplete(status, KErrCancel); - OstTraceFunctionExit0( CNCMIAPREADER_DOCANCEL_EXIT ); - } - -/** - * Simulate an async way and give - * the scheduler a chance to schedule all AOs. - */ -void CNcmIapReader::RunL() - { - OstTraceFunctionEntry0( CNCMIAPREADER_RUNL_ENTRY ); - - // Reading - TRAPD(err, SearchNcmIapL()) - OstTrace1( TRACE_NORMAL, CNCMIAPREADER_RUNL_GETIAP, "Get NCM IAP with error code %d", err ); - - - // Complete connection manager - iObserver.MicoHandleIAPReadingComplete(err); - OstTraceFunctionExit0( CNCMIAPREADER_RUNL_EXIT ); - } - -/** - * Search NCM IAP in current commDB and set it into the ncm connection manager. - */ -void CNcmIapReader::SearchNcmIapL() - { - OstTraceFunctionEntry0( CNCMIAPREADER_GETNCMIAPIDL_ENTRY ); - - using namespace CommsDat; - CMDBSession* dbs = CMDBSession::NewLC(KCDLatestVersion); // Current version is 1.1 - - CMDBRecordSet* lanBearerTable = - new (ELeave) CMDBRecordSet(KCDTIdLANBearerRecord); - CleanupStack::PushL(lanBearerTable); - // Load the table into memory - lanBearerTable->LoadL(*dbs); - - TInt numLanBearers = lanBearerTable->iRecords.Count(); - OstTrace1( TRACE_NORMAL, CNCMIAPREADER_GETNCMIAPIDL_COUNT_LAN_BEARER, "Found %d Lan Bearer!", numLanBearers ); - TInt chosenLanBearer = KErrNotFound; - TInt i = 0; - for(i = 0; i(lanBearerTable->iRecords[i]); - if ((lanBearer->iLanBearerNifName.GetL().Compare(KBearerNifName()) == 0) && - (lanBearer->iLanBearerLddFilename.GetL().Compare(KBearerLddFileName()) == 0) && - (lanBearer->iLanBearerPacketDriverName.GetL().Compare(KBearerPktDrvName()) == 0)) - { - // Matched all check points. We found LAN bearer for NCM - chosenLanBearer = lanBearer->RecordId(); - break; - } - } - CleanupStack::PopAndDestroy(lanBearerTable); // lanBearerTable - if (KErrNotFound == chosenLanBearer) - { - OstTrace0( TRACE_ERROR, CNCMIAPREADER_GETNCMIAPIDL, "Can not find NCM Lan Bearer!" ); - User::Leave(KErrNotFound); - } - OstTrace1( TRACE_NORMAL, CNCMIAPREADER_GETNCMIAPIDL_CHOSEN_LAN_BEARER, "Chosen Lan Bearer %d!", chosenLanBearer ); - - CMDBRecordSet * iapTable = - new (ELeave) CMDBRecordSet(KCDTIdIAPRecord); - CleanupStack::PushL(iapTable); - // Load the table into memory - iapTable->LoadL(*dbs); - - TInt numIaps = iapTable->iRecords.Count(); - TInt chosenIAP = KErrNotFound; - TInt iapLanBearer = KErrNotFound; - for (i = 0; i < numIaps; i++) - { - CCDIAPRecord* iap = - static_cast (iapTable->iRecords[i]); - OstTrace1( TRACE_NORMAL, CNCMIAPREADER_GETNCMIAPIDL_RECORD_ID, "Id of current IAP is %d!", iap->RecordId() ); - OstTrace1( TRACE_NORMAL, CNCMIAPREADER_GETNCMIAPIDL_RECORD_BEARER_ID, "Lan Bearer Id of current IAP is %d!", TMDBElementId(iap->iBearer) ); - iapLanBearer = TMDBElementId(iap->iBearer); - if ((iap->iBearerType.GetL().Compare(TPtrC(KCDTypeNameLANBearer)) == 0) && - (iapLanBearer == chosenLanBearer)) - { - // NCM IAP found! - // Panic if there is more than NCM IAP found - OstTrace1( TRACE_NORMAL, CNCMIAPREADER_SEARCHNCMIAPL_ONLY_ONE_NCM_IAP, "NCM IAP found: Current chosenIAP value is %d", chosenIAP ); - - __ASSERT_ALWAYS(KErrNotFound == chosenIAP, User::Panic(KNcmIapReaderPanic, ENcmIapReaderPanicTooManyIAPs)); - chosenIAP = iap->RecordId(); - break; - } - } - CleanupStack::PopAndDestroy(2, dbs); // iapTable, dbs - if(chosenIAP == KErrNotFound) - { - OstTrace0( TRACE_ERROR, CNCMIAPREADER_GETNCMIAPIDL_NOT_FOUND, "Can not find NCM IAP!" ); - User::Leave(KErrNotFound); - } - OstTrace1( TRACE_NORMAL, CNCMIAPREADER_GETNCMIAPIDL_CHOSEN_IAP_ID, "Chosen IAP is %d!", chosenIAP ); - iConnPref.SetIapId(chosenIAP); - OstTraceFunctionExit0( CNCMIAPREADER_GETNCMIAPIDL_EXIT ); - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classcontroller/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,480 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_ERROR=0x82 -[GROUP]TRACE_FATAL=0x81 -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_ERROR[0x82]_CNCMCLASSCONTROLLER_RUNL_DEFAULT=0x11 -[TRACE]TRACE_ERROR[0x82]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_CLOSE_COMM_CHUNK_FAIL=0x12 -[TRACE]TRACE_ERROR[0x82]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_CLOSE_DATA_CHUNK_FAIL=0x13 -[TRACE]TRACE_ERROR[0x82]_CNCMCLIENTMANAGER_SETCOMMUNICATIONINTERFACEL=0x14 -[TRACE]TRACE_ERROR[0x82]_CNCMCLIENTMANAGER_SETCOMMUNICATIONINTERFACEL_FAIL_TO_INIT=0x15 -[TRACE]TRACE_ERROR[0x82]_CNCMCLIENTMANAGER_SETDATAINTERFACEL_SET_INTERFACE_FAIL=0x16 -[TRACE]TRACE_ERROR[0x82]_CNCMCONNECTIONMANAGER_CONSTRUCTL=0x17 -[TRACE]TRACE_ERROR[0x82]_CNCMCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_IAP_RESULT=0x1a -[TRACE]TRACE_ERROR[0x82]_CNCMCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_SET_SHARED_STATE=0x1b -[TRACE]TRACE_ERROR[0x82]_CNCMCONNECTIONMANAGER_MIPSOHANDLECLASSFATALERROR=0x19 -[TRACE]TRACE_ERROR[0x82]_CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_SEARCH_FAIL=0x18 -[TRACE]TRACE_ERROR[0x82]_CNCMIAPREADER_GETNCMIAPIDL=0x1c -[TRACE]TRACE_ERROR[0x82]_CNCMIAPREADER_GETNCMIAPIDL_NOT_FOUND=0x1d -[TRACE]TRACE_FATAL[0x81]_CNCMCLASSCONTROLLER_DOCANCEL_DEFAULT=0x5 -[TRACE]TRACE_FATAL[0x81]_CNCMDHCPNOTIFWATCHER_STARTL=0x6 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_ENTRY=0xde -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_ENTRY_DESTROY=0xe4 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_EXIT=0xdf -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_EXIT_DESTROY=0xe5 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_CONSTRUCTL_ENTRY=0xe0 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_CONSTRUCTL_EXIT=0xe1 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_DOCANCEL_ENTRY=0xf1 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_DOCANCEL_EXIT=0xf2 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_DOCANCEL_EXIT_DUP1=0xf3 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY=0xea -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_GETDESCRIPTORINFO_EXIT=0xeb -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_MCMOERRORINDICATION_ENTRY=0xec -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_MCMOERRORINDICATION_EXIT=0xed -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_NEWL_ENTRY=0xdc -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_NEWL_EXIT=0xdd -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_RANDOMMACADDRESSL_ENTRY=0xe2 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_RANDOMMACADDRESSL_EXIT=0xe3 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_RUNERROR_ENTRY=0xf4 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_RUNERROR_EXIT=0xf5 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_RUNL_ENTRY=0xee -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_RUNL_EXIT=0xf0 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_RUNL_TRANSFER_HANDLES=0xef -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_START_ENTRY=0xe6 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_START_EXIT=0xe7 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_STOP_ENTRY=0xe8 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_STOP_EXIT=0xe9 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_ENTRY=0x102 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_ENTRY_DESTRUCTOR=0xfc -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_ENTRY_DESTRUCTOR_EXIT=0xfd -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_EXIT=0x103 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CONSTRUCTL_ENTRY=0x104 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_CONSTRUCTL_EXIT=0x105 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_ENTRY=0x110 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT=0x111 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP1=0x112 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP2=0x113 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP3=0x114 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_NEWLC_ENTRY=0xf8 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_NEWLC_EXIT=0xf9 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_NEWL_ENTRY=0xfa -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_NEWL_EXIT=0xfb -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_SETCOMMUNICATIONINTERFACEL_ENTRY=0x106 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_SETCOMMUNICATIONINTERFACEL_EXIT=0x107 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_SETDATAINTERFACEL_ENTRY=0x108 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_SETDATAINTERFACEL_EXIT=0x109 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_SETMACADDRESSSTRING_ENTRY=0x10e -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_SETMACADDRESSSTRING_EXIT=0x10f -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_SETNCMINTERFACESL_ENTRY=0xfe -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_SETNCMINTERFACESL_EXIT=0xff -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_ENTRY=0x10a -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_EXIT=0x10b -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_EXIT_DUP1=0x10c -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_EXIT_DUP2=0x10d -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_TRANSFERINTERFACESL_ENTRY=0x100 -[TRACE]TRACE_FLOW[0x8A]_CNCMCLIENTMANAGER_TRANSFERINTERFACESL_EXIT=0x101 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_CNCMCONNECTIONMANAGER_DESTRUCTOR_ENTRY=0x11b -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_CNCMCONNECTIONMANAGER_DESTRUCTOR_EXIT=0x11c -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_CONSTRUCTL_ENTRY=0x117 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_CONSTRUCTL_EXIT=0x118 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_HANDLECONNECTIONCOMPLETEL_ENTRY=0x119 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_HANDLECONNECTIONCOMPLETEL_EXIT=0x11a -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_ENTRY=0x12b -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_EXIT=0x12c -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_EXIT_DUP1=0x12d -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_MICOHANDLECONNECTIONCOMPLETE_ENTRY=0x129 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_MICOHANDLECONNECTIONCOMPLETE_EXIT=0x12a -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_ENTRY=0x12e -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_EXIT=0x12f -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_EXIT_DUP1=0x130 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_EXIT_DUP2=0x131 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_MIPSOHANDLECLASSFATALERROR_ENTRY=0x127 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_MIPSOHANDLECLASSFATALERROR_EXIT=0x128 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_NEWL_ENTRY=0x115 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_NEWL_EXIT=0x116 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_RESET_ENTRY=0x123 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_RESET_EXIT=0x124 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_ENTRY=0x125 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_EXIT=0x126 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_STARTCANCEL_ENTRY=0x11f -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_STARTCANCEL_EXIT=0x120 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_START_ENTRY=0x11d -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_START_EXIT=0x11e -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_STOP_ENTRY=0x121 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANAGER_STOP_EXIT=0x122 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_CNCMCONNECTIONMANHELPER_ENTRY=0x134 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_CNCMCONNECTIONMANHELPER_ENTRY_DESTRUCTOR=0x136 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_CNCMCONNECTIONMANHELPER_ENTRY_DESTRUCTOR_EXIT=0x137 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_CNCMCONNECTIONMANHELPER_EXIT=0x135 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_CONSTRUCTL_ENTRY=0x138 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_CONSTRUCTL_EXIT=0x139 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_DOCANCEL_ENTRY=0x13e -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_DOCANCEL_EXIT=0x13f -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_NEWL_ENTRY=0x132 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_NEWL_EXIT=0x133 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_RUNL_ENTRY=0x140 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_RUNL_EXIT=0x141 -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_START_ENTRY=0x13a -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_START_EXIT=0x13b -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_STOP_ENTRY=0x13c -[TRACE]TRACE_FLOW[0x8A]_CNCMCONNECTIONMANHELPER_STOP_EXIT=0x13d -[TRACE]TRACE_FLOW[0x8A]_CNCMDHCPNOTIFWATCHER_CNCMDHCPNOTIFWATCHER_ENTRY=0x142 -[TRACE]TRACE_FLOW[0x8A]_CNCMDHCPNOTIFWATCHER_CNCMDHCPNOTIFWATCHER_ENTRY_DESTROY=0x144 -[TRACE]TRACE_FLOW[0x8A]_CNCMDHCPNOTIFWATCHER_CNCMDHCPNOTIFWATCHER_EXIT=0x143 -[TRACE]TRACE_FLOW[0x8A]_CNCMDHCPNOTIFWATCHER_CNCMDHCPNOTIFWATCHER_EXIT_DESTROY=0x145 -[TRACE]TRACE_FLOW[0x8A]_CNCMDHCPNOTIFWATCHER_DOCANCEL_ENTRY=0x148 -[TRACE]TRACE_FLOW[0x8A]_CNCMDHCPNOTIFWATCHER_DOCANCEL_EXIT=0x149 -[TRACE]TRACE_FLOW[0x8A]_CNCMDHCPNOTIFWATCHER_RUNL_ENTRY=0x14a -[TRACE]TRACE_FLOW[0x8A]_CNCMDHCPNOTIFWATCHER_RUNL_EXIT=0x14b -[TRACE]TRACE_FLOW[0x8A]_CNCMDHCPNOTIFWATCHER_START_ENTRY=0x146 -[TRACE]TRACE_FLOW[0x8A]_CNCMDHCPNOTIFWATCHER_START_EXIT=0x147 -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_CNCMIAPPROGRESSWATCHER_ENTRY=0x14e -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_CNCMIAPPROGRESSWATCHER_ENTRY_DESTRUCTOR=0x150 -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_CNCMIAPPROGRESSWATCHER_ENTRY_DESTRUCTOR_EXIT=0x151 -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_CNCMIAPPROGRESSWATCHER_EXIT=0x14f -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_CONSTRUCTL_ENTRY=0x152 -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_CONSTRUCTL_EXIT=0x153 -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_DOCANCEL_ENTRY=0x156 -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_DOCANCEL_EXIT=0x157 -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_NEWL_ENTRY=0x14c -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_NEWL_EXIT=0x14d -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_RUNL_ENTRY=0x158 -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_RUNL_EXIT=0x159 -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_START_ENTRY=0x154 -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPPROGRESSWATCHER_START_EXIT=0x155 -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPREADER_CNCMIAPREADER_ENTRY=0x15a -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPREADER_CNCMIAPREADER_ENTRY_DESTRUCTOR=0x15c -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPREADER_CNCMIAPREADER_ENTRY_DESTRUCTOR_EXIT=0x15d -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPREADER_CNCMIAPREADER_EXIT=0x15b -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPREADER_DOCANCEL_ENTRY=0x160 -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPREADER_DOCANCEL_EXIT=0x161 -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPREADER_GETNCMIAPIDL_ENTRY=0x164 -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPREADER_GETNCMIAPIDL_EXIT=0x165 -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPREADER_RUNL_ENTRY=0x162 -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPREADER_RUNL_EXIT=0x163 -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPREADER_START_ENTRY=0x15e -[TRACE]TRACE_FLOW[0x8A]_CNCMIAPREADER_START_EXIT=0x15f -[TRACE]TRACE_FLOW[0x8A]_TNCMCLASSDESCRIPTOR_DES_ENTRY=0xf6 -[TRACE]TRACE_FLOW[0x8A]_TNCMCLASSDESCRIPTOR_DES_EXIT=0xf7 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_PRE_UNLOAD_CSC_LDD=0x53 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_UNLOAD_LDD_RESULT=0x54 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_CONSTRUCTL=0x50 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_CONSTRUCTL_CSC_LDD_LOADED=0x52 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_CONSTRUCTL_LOAD_CSC_LDD=0x51 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_DOCANCEL_IDLE=0x5b -[TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_DOCANCEL_INFO_PRINT=0x5a -[TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_RUNL_BUILT_NCM_CONNECTION=0x59 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_RUNL_PRINT_INFO=0x57 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_RUNL_STARTED=0x58 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_START_PRINT_STATE=0x55 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_STOP_PRINT_STATE=0x56 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_CLOSE_COMM_CHUNK=0x5d -[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_CLOSE_COMM_INTERFACE=0x5e -[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_CLOSE_DATA_CHUNK=0x60 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_CLOSE_DATA_INTERFACE=0x61 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_PRE_CLOSE_COMM_INTERFACE=0x5c -[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_CNCMCLIENTMANAGER_PRE_CLOSE_DATA_INTERFACE=0x5f -[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER=0x69 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_INTERFACE_INFO=0x67 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_DATAINTERFACENUMBER_INTERFACE_INFO2=0x68 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_SETDATAINTERFACEL_TRY_NEW_BUF_SIZE=0x64 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_SETMACADDRESSSTRING=0x66 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_PRE_SET_BLOCK=0x65 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_TRANSFERINTERFACESL_INTERFACES_TRANSFERED=0x63 -[TRACE]TRACE_NORMAL[0x86]_CNCMCLIENTMANAGER_TRANSFERINTERFACESL_PRE_TRANSFER_INTERFACES=0x62 -[TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_HANDLECONNECTIONCOMPLETEL_CHANGE_MTU=0x6a -[TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_HANDLECONNECTIONCOMPLETEL_CONN_NCM_INTERNAL_SVR=0x6b -[TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_CALL_IOCTL=0x73 -[TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_RETURN_IOCTL=0x74 -[TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_SETCUSTOMMTUL=0x6c -[TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_INTER_INFO=0x6d -[TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_INTER_MTU=0x71 -[TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_INTER_NAME=0x70 -[TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_NEW_MTU_SIZE=0x6e -[TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_PRE_SETMTU=0x72 -[TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANAGER_SETCUSTOMMTUL_START_INTER_ENUM=0x6f -[TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANHELPER_DOCNCEL=0x76 -[TRACE]TRACE_NORMAL[0x86]_CNCMCONNECTIONMANHELPER_STOP_RETURN_CODE=0x75 -[TRACE]TRACE_NORMAL[0x86]_CNCMIAPPROGRESSWATCHER_RUNL_COMPLETION_CODE=0x77 -[TRACE]TRACE_NORMAL[0x86]_CNCMIAPPROGRESSWATCHER_RUNL_INFO=0x78 -[TRACE]TRACE_NORMAL[0x86]_CNCMIAPPROGRESSWATCHER_RUNL_RESTART_WATCHER=0x79 -[TRACE]TRACE_NORMAL[0x86]_CNCMIAPREADER_GETNCMIAPIDL_CHOSEN_IAP_ID=0x7f -[TRACE]TRACE_NORMAL[0x86]_CNCMIAPREADER_GETNCMIAPIDL_CHOSEN_LAN_BEARER=0x7c -[TRACE]TRACE_NORMAL[0x86]_CNCMIAPREADER_GETNCMIAPIDL_COUNT_LAN_BEARER=0x7b -[TRACE]TRACE_NORMAL[0x86]_CNCMIAPREADER_GETNCMIAPIDL_RECORD_BEARER_ID=0x7e -[TRACE]TRACE_NORMAL[0x86]_CNCMIAPREADER_GETNCMIAPIDL_RECORD_ID=0x7d -[TRACE]TRACE_NORMAL[0x86]_CNCMIAPREADER_RUNL_GETIAP=0x7a -[TRACE]TRACE_NORMAL[0x86]_CNCMIAPREADER_SEARCHNCMIAPL_ONLY_ONE_NCM_IAP=0x4f -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_CCONNECTIONMANAGER_CONSTRUCTL=0xc -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_CCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_IAP_RESULT=0x1 -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_CCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_SET_SHARED_STATE=0x2 -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_CCONNECTIONMANAGER_MIPSOHANDLECLASSFATALERROR=0xb -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_CCONNECTIONMANAGER_SETCUSTOMMTUL_SEARCH_FAIL=0x8 -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_CIAPREADER_GETNCMIAPIDL=0xd -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_CIAPREADER_GETNCMIAPIDL_NOT_FOUND=0x3 -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_CNCMCLASSCONTROLLER_RUNL_DEFAULT=0xf -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_CUSBCLIENTMANAGER_CUSBCLIENTMANAGER_CLOSE_COMM_CHUNK_FAIL=0x4 -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_CUSBCLIENTMANAGER_CUSBCLIENTMANAGER_CLOSE_DATA_CHUNK_FAIL=0x5 -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_CUSBCLIENTMANAGER_SETCOMMUNICATIONINTERFACEL=0xe -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_CUSBCLIENTMANAGER_SETCOMMUNICATIONINTERFACEL_FAIL_TO_INIT=0x6 -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_CUSBCLIENTMANAGER_SETDATAINTERFACEL_SET_INTERFACE_FAIL=0x7 -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_CUSBNCMCLASSCONTROLLER_DOCANCEL_DEFAULT=0xa -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_CUSBNCMCLASSCONTROLLER_RUNL_DEFAULT=0x10 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CDHCPNOTIFWATCHER_STARTL=0x2 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CNCMCLASSCONTROLLER_DOCANCEL_DEFAULT=0x3 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBNCMCLASSCONTROLLER_DOCANCEL_DEFAULT=0x4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_CCONNECTIONMANAGER_DESTRUCTOR_ENTRY=0x6 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_CCONNECTIONMANAGER_DESTRUCTOR_EXIT=0x7 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_CCONNECTIONMANAGER_ENTRY=0x8 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_CCONNECTIONMANAGER_EXIT=0x9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_CONSTRUCTL=0x1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_CONSTRUCTL_ENTRY=0x2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_CONSTRUCTL_EXIT=0x3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_HANDLECONNECTIONCOMPLETEL_ENTRY=0x4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_HANDLECONNECTIONCOMPLETEL_EXIT=0x5 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_ENTRY=0x1c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_EXIT=0x9a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_EXIT_DUP1=0x9b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_MICOHANDLECONNECTIONCOMPLETE_ENTRY=0x1a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_MICOHANDLECONNECTIONCOMPLETE_EXIT=0x1b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_ENTRY=0x1e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_EXIT=0x1f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_EXIT_DUP1=0x9c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_EXIT_DUP2=0x9d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_MIPSOHANDLECLASSFATALERROR_ENTRY=0x18 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_MIPSOHANDLECLASSFATALERROR_EXIT=0x19 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_MIPSOHANDLEIAPTEARDOWN_ENTRY=0x16 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_MIPSOHANDLEIAPTEARDOWN_EXIT=0x17 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_NEWL_ENTRY=0x14 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_NEWL_EXIT=0x15 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_RESET_ENTRY=0x10 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_RESET_EXIT=0x11 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_SETCUSTOMMTUL_ENTRY=0x12 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_SETCUSTOMMTUL_EXIT=0x13 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_STARTCANCEL_ENTRY=0xc -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_STARTCANCEL_EXIT=0xd -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_START_ENTRY=0xa -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_START_EXIT=0xb -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_STOP_ENTRY=0xe -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANAGER_STOP_EXIT=0xf -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_CCONNECTIONMANHELPER_ENTRY=0x22 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_CCONNECTIONMANHELPER_ENTRY_DESTRUCTOR=0x24 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_CCONNECTIONMANHELPER_ENTRY_DESTRUCTOR_EXIT=0x25 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_CCONNECTIONMANHELPER_EXIT=0x23 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_CONSTRUCTL_ENTRY=0x26 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_CONSTRUCTL_EXIT=0x27 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_DOCANCEL_ENTRY=0x2e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_DOCANCEL_EXIT=0x2f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_NEWL_ENTRY=0x20 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_NEWL_EXIT=0x21 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_RUNL_ENTRY=0x30 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_RUNL_EXIT=0x31 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_SILENTSTOP_ENTRY=0x2c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_SILENTSTOP_EXIT=0x2d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_START_ENTRY=0x28 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_START_EXIT=0x29 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_STOP_ENTRY=0x2a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CCONNECTIONMANHELPER_STOP_EXIT=0x2b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CDHCPNOTIFWATCHER_CDHCPNOTIFWATCHER_ENTRY=0x34 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CDHCPNOTIFWATCHER_CDHCPNOTIFWATCHER_ENTRY_DESTROY=0x9e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CDHCPNOTIFWATCHER_CDHCPNOTIFWATCHER_EXIT=0x35 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CDHCPNOTIFWATCHER_CDHCPNOTIFWATCHER_EXIT_DESTROY=0x9f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CDHCPNOTIFWATCHER_CONSTRUCTL_ENTRY=0x38 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CDHCPNOTIFWATCHER_CONSTRUCTL_EXIT=0x39 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CDHCPNOTIFWATCHER_DOCANCEL_ENTRY=0x3c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CDHCPNOTIFWATCHER_DOCANCEL_EXIT=0x3d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CDHCPNOTIFWATCHER_NEWL_ENTRY=0x32 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CDHCPNOTIFWATCHER_NEWL_EXIT=0x33 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CDHCPNOTIFWATCHER_RUNL_ENTRY=0x3e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CDHCPNOTIFWATCHER_RUNL_EXIT=0x3f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CDHCPNOTIFWATCHER_START_ENTRY=0x3a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CDHCPNOTIFWATCHER_START_EXIT=0x3b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPPROGRESSWATCHER_CIAPPROGRESSWATCHER_ENTRY=0x42 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPPROGRESSWATCHER_CIAPPROGRESSWATCHER_ENTRY_DESTRUCTOR=0x44 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPPROGRESSWATCHER_CIAPPROGRESSWATCHER_ENTRY_DESTRUCTOR_EXIT=0x45 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPPROGRESSWATCHER_CIAPPROGRESSWATCHER_EXIT=0x43 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPPROGRESSWATCHER_CONSTRUCTL_ENTRY=0x46 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPPROGRESSWATCHER_CONSTRUCTL_EXIT=0x47 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPPROGRESSWATCHER_DOCANCEL_ENTRY=0x4a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPPROGRESSWATCHER_DOCANCEL_EXIT=0x4b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPPROGRESSWATCHER_NEWL_ENTRY=0x40 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPPROGRESSWATCHER_NEWL_EXIT=0x41 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPPROGRESSWATCHER_RUNL_ENTRY=0x4c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPPROGRESSWATCHER_RUNL_EXIT=0x4d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPPROGRESSWATCHER_START_ENTRY=0x48 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPPROGRESSWATCHER_START_EXIT=0x49 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPREADER_CIAPREADER_ENTRY=0x50 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPREADER_CIAPREADER_ENTRY_DESTRUCTOR=0x52 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPREADER_CIAPREADER_ENTRY_DESTRUCTOR_EXIT=0x53 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPREADER_CIAPREADER_EXIT=0x51 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPREADER_CONSTRUCTL_ENTRY=0x54 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPREADER_CONSTRUCTL_EXIT=0x55 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPREADER_DOCANCEL_ENTRY=0x58 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPREADER_DOCANCEL_EXIT=0x59 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPREADER_GETNCMIAPIDL_ENTRY=0x5c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPREADER_GETNCMIAPIDL_EXIT=0x5d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPREADER_NEWL_ENTRY=0x4e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPREADER_NEWL_EXIT=0x4f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPREADER_RUNL_ENTRY=0x5a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPREADER_RUNL_EXIT=0x5b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPREADER_START_ENTRY=0x56 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CIAPREADER_START_EXIT=0x57 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_ENTRY=0xaa -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_ENTRY_DESTROY=0xb0 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_EXIT=0xab -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_EXIT_DESTROY=0xb1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_CONSTRUCTL_ENTRY=0xac -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_CONSTRUCTL_EXIT=0xad -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_DOCANCEL_ENTRY=0xbd -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_DOCANCEL_EXIT=0xbe -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_DOCANCEL_EXIT_DUP1=0xbf -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY=0xb6 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_GETDESCRIPTORINFO_EXIT=0xb7 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_MCMOERRORINDICATION_ENTRY=0xb8 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_MCMOERRORINDICATION_EXIT=0xb9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_NEWL_ENTRY=0xa8 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_NEWL_EXIT=0xa9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_RANDOMMACADDRESSL_ENTRY=0xae -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_RANDOMMACADDRESSL_EXIT=0xaf -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_RUNERROR_ENTRY=0xc0 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_RUNERROR_EXIT=0xc1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_RUNL_ENTRY=0xba -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_RUNL_EXIT=0xbc -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_RUNL_TRANSFER_HANDLES=0xbb -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_START_ENTRY=0xb2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_START_EXIT=0xb3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_STOP_ENTRY=0xb4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CNCMCLASSCONTROLLER_STOP_EXIT=0xb5 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_CONSTRUCTL_ENTRY=0x6c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_CONSTRUCTL_EXIT=0x6d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_CUSBCLIENTMANAGER_ENTRY=0x6a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_CUSBCLIENTMANAGER_ENTRY_DESTRUCTOR=0x64 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_CUSBCLIENTMANAGER_ENTRY_DESTRUCTOR_EXIT=0x65 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_CUSBCLIENTMANAGER_EXIT=0x6b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_DATAINTERFACENUMBER_ENTRY=0x78 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_DATAINTERFACENUMBER_EXIT=0x79 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP1=0xa2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP2=0xa3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_DATAINTERFACENUMBER_EXIT_DUP3=0xa4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_NEWLC_ENTRY=0x60 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_NEWLC_EXIT=0x61 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_NEWL_ENTRY=0x62 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_NEWL_EXIT=0x63 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_SETCOMMUNICATIONINTERFACEL_ENTRY=0x6e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_SETCOMMUNICATIONINTERFACEL_EXIT=0x6f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_SETDATAINTERFACEL_ENTRY=0x70 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_SETDATAINTERFACEL_EXIT=0x71 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_SETMACADDRESSSTRING_ENTRY=0x76 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_SETMACADDRESSSTRING_EXIT=0x77 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_SETNCMINTERFACESL_ENTRY=0x66 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_SETNCMINTERFACESL_EXIT=0x67 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_ENTRY=0x72 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_EXIT=0x73 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_EXIT_DUP1=0xa0 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_EXIT_DUP2=0xa1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_TRANSFERINTERFACESL_ENTRY=0x68 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBCLIENTMANAGER_TRANSFERINTERFACESL_EXIT=0x69 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_CONSTRUCTL_ENTRY=0xc6 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_CONSTRUCTL_EXIT=0xc7 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_CUSBNCMCLASSCONTROLLER_ENTRY=0xc4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_CUSBNCMCLASSCONTROLLER_ENTRY_DESTROY=0xca -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_CUSBNCMCLASSCONTROLLER_EXIT=0xc5 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_CUSBNCMCLASSCONTROLLER_EXIT_DESTROY=0xcb -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_DOCANCEL_ENTRY=0xd7 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_DOCANCEL_EXIT=0xd8 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_DOCANCEL_EXIT_DUP1=0xd9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY=0xd0 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_GETDESCRIPTORINFO_EXIT=0xd1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_MCMOERRORINDICATION_ENTRY=0xd2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_MCMOERRORINDICATION_EXIT=0xd3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_NEWL_ENTRY=0xc2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_NEWL_EXIT=0xc3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_RANDOMMACADDRESSL_ENTRY=0xc8 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_RANDOMMACADDRESSL_EXIT=0xc9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_RUNERROR_ENTRY=0xda -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_RUNERROR_EXIT=0xdb -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_RUNL_ENTRY=0xd4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_RUNL_EXIT=0xd6 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_RUNL_TRANSFER_HANDLES=0xd5 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_START_ENTRY=0xcc -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_START_EXIT=0xcd -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_STOP_ENTRY=0xce -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBNCMCLASSCONTROLLER_STOP_EXIT=0xcf -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_EXIT=0x7d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_EXIT=0x7e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CDHCPNOTIFWATCHER_CDHCPNOTIFWATCHER_ENTRY=0x36 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CDHCPNOTIFWATCHER_CDHCPNOTIFWATCHER_EXIT=0x37 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CUSBCLIENTMANAGER_DATAINTERFACENUMBER_EXIT=0x7a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CUSBCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_EXIT=0x74 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CUSBNCMCLASSCONTROLLER_CUSBNCMCLASSCONTROLLER_ENTRY=0x88 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CUSBNCMCLASSCONTROLLER_CUSBNCMCLASSCONTROLLER_EXIT=0x89 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CUSBNCMCLASSCONTROLLER_DOCANCEL_EXIT=0x97 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP2_CCONNECTIONMANAGER_MICOHANDLEIAPREADINGCOMPLETE_EXIT=0x7f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP2_CUSBCLIENTMANAGER_DATAINTERFACENUMBER_EXIT=0x7b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP2_CUSBCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_EXIT=0x75 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP3_CUSBCLIENTMANAGER_DATAINTERFACENUMBER_EXIT=0x7c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_TUSBNCMCLASSDESCRIPTOR_DES_ENTRY=0x5e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_TUSBNCMCLASSDESCRIPTOR_DES_EXIT=0x5f -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CCONNECTIONMANAGER_HANDLECONNECTIONCOMPLETEL_CHANGE_MTU=0x1 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CCONNECTIONMANAGER_HANDLECONNECTIONCOMPLETEL_CONN_NCM_INTERNAL_SVR=0x2 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_CALL_IOCTL=0x33 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CCONNECTIONMANAGER_MDNOHANDLEDHCPNOTIFICATION_RETURN_IOCTL=0x34 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CCONNECTIONMANAGER_SETCUSTOMMTUL=0x3 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CCONNECTIONMANAGER_SETCUSTOMMTUL_INTER_INFO=0x4 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CCONNECTIONMANAGER_SETCUSTOMMTUL_INTER_MTU=0x8 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CCONNECTIONMANAGER_SETCUSTOMMTUL_INTER_NAME=0x7 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CCONNECTIONMANAGER_SETCUSTOMMTUL_NEW_MTU_SIZE=0x5 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CCONNECTIONMANAGER_SETCUSTOMMTUL_PRE_SETMTU=0x25 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CCONNECTIONMANAGER_SETCUSTOMMTUL_START_INTER_ENUM=0x6 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CCONNECTIONMANHELPER_DOCNCEL=0xd -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CCONNECTIONMANHELPER_SILENTSTOP=0xc -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CCONNECTIONMANHELPER_STOP_RETURN_CODE=0xb -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CIAPPROGRESSWATCHER_RUNL_COMPLETION_CODE=0xe -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CIAPPROGRESSWATCHER_RUNL_INFO=0xf -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CIAPPROGRESSWATCHER_RUNL_RESTART_WATCHER=0x35 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CIAPREADER_GETNCMIAPIDL=0x13 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CIAPREADER_GETNCMIAPIDL_CHOSEN_IAP_ID=0x17 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CIAPREADER_GETNCMIAPIDL_CHOSEN_LAN_BEARER=0x14 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CIAPREADER_GETNCMIAPIDL_COUNT_LAN_BEARER=0x12 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CIAPREADER_GETNCMIAPIDL_RECORD_BEARER_ID=0x16 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CIAPREADER_GETNCMIAPIDL_RECORD_ID=0x15 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CIAPREADER_RUNL_GETIAP=0x10 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_PRE_UNLOAD_CSC_LDD=0x3a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_CNCMCLASSCONTROLLER_UNLOAD_LDD_RESULT=0x3b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_CONSTRUCTL=0x37 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_CONSTRUCTL_CSC_LDD_LOADED=0x39 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_CONSTRUCTL_LOAD_CSC_LDD=0x38 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_DOCANCEL_IDLE=0x42 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_DOCANCEL_INFO_PRINT=0x41 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_RUNL_BUILT_NCM_CONNECTION=0x40 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_RUNL_PRINT_INFO=0x3e -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_RUNL_STARTED=0x3f -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_START_PRINT_STATE=0x3c -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMCLASSCONTROLLER_STOP_PRINT_STATE=0x3d -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CNCMIAPREADER_SEARCHNCMIAPL_ENSURE_ONLY_ONE_NCM_IAP=0x36 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBCLIENTMANAGER_CUSBCLIENTMANAGER_CLOSE_COMM_CHUNK=0x19 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBCLIENTMANAGER_CUSBCLIENTMANAGER_CLOSE_COMM_INTERFACE=0x1a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBCLIENTMANAGER_CUSBCLIENTMANAGER_CLOSE_DATA_CHUNK=0x1c -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBCLIENTMANAGER_CUSBCLIENTMANAGER_CLOSE_DATA_INTERFACE=0x1d -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBCLIENTMANAGER_CUSBCLIENTMANAGER_PRE_CLOSE_COMM_INTERFACE=0x18 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBCLIENTMANAGER_CUSBCLIENTMANAGER_PRE_CLOSE_DATA_INTERFACE=0x1b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBCLIENTMANAGER_DATAINTERFACENUMBER=0x24 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBCLIENTMANAGER_DATAINTERFACENUMBER_INTERFACE_INFO=0x22 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBCLIENTMANAGER_DATAINTERFACENUMBER_INTERFACE_INFO2=0x23 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBCLIENTMANAGER_SETDATAINTERFACEL_TRY_NEW_BUF_SIZE=0x20 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBCLIENTMANAGER_SETMACADDRESSSTRING=0x21 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBCLIENTMANAGER_SETUPCLASSSPECIFICDESCRIPTOR_PRE_SET_BLOCK=0x26 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBCLIENTMANAGER_TRANSFERINTERFACESL_INTERFACES_TRANSFERED=0x1f -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBCLIENTMANAGER_TRANSFERINTERFACESL_PRE_TRANSFER_INTERFACES=0x1e -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBNCMCLASSCONTROLLER_CONSTRUCTL=0x43 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBNCMCLASSCONTROLLER_CONSTRUCTL_CSC_LDD_LOADED=0x45 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBNCMCLASSCONTROLLER_CONSTRUCTL_LOAD_CSC_LDD=0x44 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBNCMCLASSCONTROLLER_CUSBNCMCLASSCONTROLLER_PRE_UNLOAD_CSC_LDD=0x46 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBNCMCLASSCONTROLLER_CUSBNCMCLASSCONTROLLER_UNLOAD_LDD_RESULT=0x47 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBNCMCLASSCONTROLLER_DOCANCEL_IDLE=0x4e -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBNCMCLASSCONTROLLER_DOCANCEL_INFO_PRINT=0x4d -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBNCMCLASSCONTROLLER_RUNL_BUILT_NCM_CONNECTION=0x4c -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBNCMCLASSCONTROLLER_RUNL_PRINT_INFO=0x4a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBNCMCLASSCONTROLLER_RUNL_STARTED=0x4b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBNCMCLASSCONTROLLER_START_PRINT_STATE=0x48 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBNCMCLASSCONTROLLER_STOP_PRINT_STATE=0x49 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/group/bld.inf --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* 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: -* -*/ - - -PRJ_PLATFORMS -ARMV5 - -#include "../ncmpktdrv/group/bld.inf" - -PRJ_MMPFILES - - -PRJ_TESTMMPFILES - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/client/bwins/ncminternalsrvu.def --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/client/bwins/ncminternalsrvu.def Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -EXPORTS - ?SetDhcpResult@RNcmInternalSrv@@QAEHH@Z @ 1 NONAME ; int RNcmInternalSrv::SetDhcpResult(int) - ?Version@RNcmInternalSrv@@QBE?AVTVersion@@XZ @ 2 NONAME ; class TVersion RNcmInternalSrv::Version(void) const - ?TransferHandle@RNcmInternalSrv@@QAEHAAVRHandleBase@@000@Z @ 3 NONAME ; int RNcmInternalSrv::TransferHandle(class RHandleBase &, class RHandleBase &, class RHandleBase &, class RHandleBase &) - ??0RNcmInternalSrv@@QAE@XZ @ 4 NONAME ; RNcmInternalSrv::RNcmInternalSrv(void) - ?DhcpProvisionNotify@RNcmInternalSrv@@QAEXAAVTRequestStatus@@@Z @ 5 NONAME ; void RNcmInternalSrv::DhcpProvisionNotify(class TRequestStatus &) - ?DhcpProvisionNotifyCancel@RNcmInternalSrv@@QAEXXZ @ 6 NONAME ; void RNcmInternalSrv::DhcpProvisionNotifyCancel(void) - ?Connect@RNcmInternalSrv@@QAEHXZ @ 7 NONAME ; int RNcmInternalSrv::Connect(void) - ?SetIapId@RNcmInternalSrv@@QAEHI@Z @ 8 NONAME ; int RNcmInternalSrv::SetIapId(unsigned int) - ??1RNcmInternalSrv@@QAE@XZ @ 9 NONAME ; RNcmInternalSrv::~RNcmInternalSrv(void) - ?TransferBufferSize@RNcmInternalSrv@@QAEHI@Z @ 10 NONAME ; int RNcmInternalSrv::TransferBufferSize(unsigned int) - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/client/eabi/ncminternalsrvu.def --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/client/eabi/ncminternalsrvu.def Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -EXPORTS - _ZN15RNcmInternalSrv13SetDhcpResultEi @ 1 NONAME - _ZN15RNcmInternalSrv14TransferHandleER11RHandleBaseS1_S1_S1_ @ 2 NONAME - _ZN15RNcmInternalSrv19DhcpProvisionNotifyER14TRequestStatus @ 3 NONAME - _ZN15RNcmInternalSrv25DhcpProvisionNotifyCancelEv @ 4 NONAME - _ZN15RNcmInternalSrv7ConnectEv @ 5 NONAME - _ZN15RNcmInternalSrv8SetIapIdEj @ 6 NONAME - _ZN15RNcmInternalSrvC1Ev @ 7 NONAME - _ZN15RNcmInternalSrvC2Ev @ 8 NONAME - _ZN15RNcmInternalSrvD1Ev @ 9 NONAME - _ZN15RNcmInternalSrvD2Ev @ 10 NONAME - _ZNK15RNcmInternalSrv7VersionEv @ 11 NONAME - _ZN15RNcmInternalSrv18TransferBufferSizeEj @ 12 NONAME - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/client/group/bld.inf --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/client/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -/* -* 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: -* -*/ - -PRJ_PLATFORMS -ARMV5 - -PRJ_EXPORTS - -PRJ_MMPFILES -ncminternalsrv.mmp - -PRJ_TESTMMPFILES diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/client/group/ncminternalsrv.mmp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/client/group/ncminternalsrv.mmp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -/* -* 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: -* -*/ - - - -TARGET ncminternalsrv.dll -TARGETTYPE DLL - -UID 0x1000008d 0x2002E6A5 -VENDORID 0x70000001 - - -//Being run in usbsvr.exe(usbman) -CAPABILITY CommDD PowerMgmt TrustedUI ProtServ NetworkControl NetworkServices LocalServices ReadUserData WriteUserData ReadDeviceData WriteDeviceData - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -USERINCLUDE ../../../../inc -USERINCLUDE ../../server/inc - - -SOURCEPATH ../src -SOURCE ncminternalsrv.cpp - -LIBRARY euser.lib - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/group/bld.inf --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -/* -* 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: -* -*/ - - -PRJ_PLATFORMS -ARMV5 - -#include "../pktdrv/group/bld.inf" -#include "../client/group/bld.inf" - -PRJ_MMPFILES - - -PRJ_TESTMMPFILES - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/eabi/ncmpktu.def --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/eabi/ncmpktu.def Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - NewNcmPktDrvFactoryL @ 1 NONAME - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/group/bld.inf --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -/* -* 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: -* -*/ - -PRJ_PLATFORMS -ARMV5 - -PRJ_EXPORTS - -PRJ_MMPFILES -pktdrv.mmp - - - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/group/pktdrv.mmp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/group/pktdrv.mmp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -/* -* 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: -* -*/ - -TARGET ncmpkt.drv -TARGETTYPE DLL - -UID 0x1000053f 0x2002C306 -VENDORID 0x70000001 - - -// Being run in C32EXE -CAPABILITY CommDD PowerMgmt TrustedUI ProtServ NetworkControl NetworkServices LocalServices ReadUserData WriteUserData ReadDeviceData WriteDeviceData - - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - - -USERINCLUDE ../inc -USERINCLUDE ../../server/inc -USERINCLUDE ../../../../inc/ -USERINCLUDE ../traces - - -SOURCEPATH ../src -SOURCE ncmpktdrvfactory.cpp -SOURCE ncmpktdrv.cpp -SOURCE ncmengine.cpp -SOURCE ncmcommunicationinterface.cpp -SOURCE ncmcomminterfacesenderandreceiver.cpp -SOURCE ncmnotificationdescriptor.cpp -SOURCE ncmdatainterface.cpp -SOURCE ncmdatareceiver.cpp -SOURCE ncmdatasender.cpp -SOURCE ncmntbparser.cpp -SOURCE ncmntbbuilder.cpp -SOURCE ncmntb16builder.cpp -SOURCE ncmbuffermanager.cpp -SOURCE ncmntbbuildpolicy.cpp -SOURCE ncmntbbuildsimplepolicy.cpp -SOURCE ncmsharedstatemanager.cpp -SOURCE ncmcoexistbearerwatcher.cpp - -#include "../../server/group/server.mmh" - -LIBRARY euser.lib mbufmgr.lib esock.lib ethint.lib usbcsc_bil.lib -LIBRARY efsrv.lib random.lib -LIBRARY nodemessages.lib -LIBRARY netmeta.lib - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/group/pktdrv_overdummyusbldd.mmp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/group/pktdrv_overdummyusbldd.mmp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -/* -* 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: -* -*/ - - - -TARGET ncmpkt.drv -TARGETTYPE DLL - -UID 0x1000053f 0x2002C306 -VENDORID 0x70000001 -#include - -// Being run in C32EXE -CAPABILITY CommDD PowerMgmt TrustedUI ProtServ NetworkControl NetworkServices LocalServices ReadUserData WriteUserData ReadDeviceData WriteDeviceData - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -USERINCLUDE ../inc -USERINCLUDE ../../server/inc -USERINCLUDE ../../../../inc/ -USERINCLUDE ../traces - -MACRO __OVER_DUMMYUSBSCLDD__ - -SOURCEPATH ../src -SOURCE ncmpktdrvfactory.cpp -SOURCE ncmpktdrv.cpp -SOURCE ncmengine.cpp -SOURCE ncmcommunicationinterface.cpp -SOURCE ncmcomminterfacesenderandreceiver.cpp -SOURCE ncmnotificationdescriptor.cpp -SOURCE ncmdatainterface.cpp -SOURCE ncmdatareceiver.cpp -SOURCE ncmdatasender.cpp -SOURCE ncmntbparser.cpp -SOURCE ncmntbbuilder.cpp -SOURCE ncmntb16builder.cpp -SOURCE ncmbuffermanager.cpp -SOURCE ncmntbbuildpolicy.cpp -SOURCE ncmntbbuildsimplepolicy.cpp -SOURCE ncmsharedstatemanager.cpp -SOURCE ncmcoexistbearerwatcher.cpp - -#include "../../server/group/server.mmh" - -LIBRARY euser.lib esock.lib -LIBRARY efsrv.lib random.lib -LIBRARY dummyusbsclddapi.lib diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmbuffermanager.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmbuffermanager.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -// 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 the License "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// -// - - -/** -@file -@internalComponent -*/ - - -#ifndef NCMBUFFERMANAGER_H -#define NCMBUFFERMANAGER_H - -#include -#include "ncmpktdrvcommon.h" - - - -/** -Responsible for share chunk buffer managerment -*/ - -NONSHARABLE_CLASS(CNcmBufferManager) : public CBase - - { -public: - static CNcmBufferManager* NewL(); - ~CNcmBufferManager(); - /** - * get a free buffer block - * - * @param aBuffer to store the buffer block - * @return KErrNone if success - * KErrCongestion if there is not enough buffer block, should start flow control - */ - TInt GetBuffer(TNcmBuffer& aBuffer); - /** - * free a buffer block - * - * @param aBuffer store the buffer block to free - */ - void FreeBuffer(const TNcmBuffer& aBuffer); - void InitBufferArea(TAny* aBuf, TInt aLength); - /** - * get a free buffer block - * - * @param aSize new ntb size - * @return KErrNone if success - * KErrUnknown if too big ntb size, can't create enought buffer block - */ - TInt SetBufferCellSize(TInt aSize); - TBool IsCongestion(); - TInt RequiredBufferCount(); - inline void SetAlignSize(TInt aSize); - inline TInt FreeBufferCount(); - -private: - CNcmBufferManager(); - -private: - /** - * array of free buffer blocks - */ - RArray iFreeQueue; - /** - * share chunk LDD buffer area - */ - TUint8* iBuf; - TInt iLen; - TInt iCellSize; - TInt iAlignSize; - /** - * there is enough buffer blocks or not - */ - TBool iIsCongestion; - - }; - -inline void CNcmBufferManager::SetAlignSize(TInt aSize) - { - iAlignSize = aSize; - } - -inline TInt CNcmBufferManager::FreeBufferCount() - { - return iFreeQueue.Count(); - } - - -#endif //NCMBUFFERMANAGER_H - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmcoexistbearerwatcher.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmcoexistbearerwatcher.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMCOEXISTBEARERWATCHER_H -#define NCMCOEXISTBEARERWATCHER_H - -#include -#include - -#include "ncmpktdrvcommon.h" - - -/** -The IPBearerCoexistence P&S key watcher. -*/ -NONSHARABLE_CLASS(CNcmCoexistBearerWatcher) : public CActive - { -public: - static CNcmCoexistBearerWatcher* NewL(); - ~CNcmCoexistBearerWatcher(); - - /** - Set the IP Over USB active if none is actived, or wait - @param[in] aStatus, asychronous request status. - @return KErrCompletion, successfully active IP Over USB. - KErrNone, asychronous call, the result will be returned by aStatus later. - other, system-wide error code. - */ - TInt SetIpOverUsbActive(TRequestStatus& aStatus); - /** Deactive IP Over USB */ - TInt SetIpOverUsbDeactive(); - /** Check whether IP Over USB Bearer is actived or not. */ - inline TBool IsIpOverUsbActived() const; - -private: - //From CActive - void RunL(); - void DoCancel(); - - CNcmCoexistBearerWatcher(); - void ConstructL(); - TInt DoActive(); - -private: - enum TIPBearerCoexistenceStatus - { - EIPBearerNoneActive = 0, - EIPBearerIPOverUSB = 1, - EIPBearerBTPan = 2 - }; - -private: - RProperty iProperty; - TRequestStatus* iReportStatus; - TIPBearerCoexistenceStatus iBearerState; - }; - -// Inline functions -#include "ncmcoexistbearerwatcher.inl" - -#endif /* NCMCOEXISTBEARERWATCHER_H */ diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmcoexistbearerwatcher.inl --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmcoexistbearerwatcher.inl Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMCOEXISTBEARERWATCHER_INL -#define NCMCOEXISTBEARERWATCHER_INL - -inline TBool CNcmCoexistBearerWatcher::IsIpOverUsbActived() const - { - return EIPBearerIPOverUSB==iBearerState; - } - -#endif //NCMCOEXISTBEARERWATCHER_INL diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmcomminterfacesenderandreceiver.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmcomminterfacesenderandreceiver.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ -/* -* 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: -* header file of class for read and write data from share chunk LDD -* -*/ - - -/** -@file -@internalComponent -*/ - -#ifndef NCMCOMMINTERFACESENDERANDRECEIVER_H -#define NCMCOMMINTERFACESENDERANDRECEIVER_H - -#include - -#ifndef __OVER_DUMMYUSBSCLDD__ -#include -#else -#include -#endif - - - -class CNcmCommunicationInterface; - -/** -Responsible for sending and receiving data on Control Endpoint -*/ - -NONSHARABLE_CLASS(CNcmCommInterfaceSenderAndReceiver) : public CActive - { -public: - static CNcmCommInterfaceSenderAndReceiver* NewL(RDevUsbcScClient& aPort, CNcmCommunicationInterface& aCommInterface); - ~CNcmCommInterfaceSenderAndReceiver(); - void Start(); - void Stop(); - /** - * read aLength data from LDD - * - * @param aStatus complete status for this request. - * @param aBuf buffer to store data. - * @param aLength length to read. - */ - TInt Read(TRequestStatus& aStatus, TDes8& aBuf, TInt aLength); - /** - * write aLength data to LDD - * - * @param aStatus complete status for this request. - * @param aBuf buffer of data. - * @param aLength length to write. - */ - TInt Write(TRequestStatus& aStatus, TDesC8& aBuf, TInt aLength); - -private: - enum TNcmControlEndpointState - { - EUnInit = 1, - EIdle, - EReceiving, - ESending - }; - - CNcmCommInterfaceSenderAndReceiver(RDevUsbcScClient& aPort, CNcmCommunicationInterface& aCommInterface); - void ReadData(); - -private: - /** - * derived from CActive - */ - void RunL(); - void DoCancel(); - -private: - RDevUsbcScClient& iPort; - /** - * LDD control endpoint buffer - */ - TEndpointBuffer iEp0Buffer; - CNcmCommunicationInterface& iCommInterface; - /** - * point to buffer to store data of Read function, this is not ownership - */ - TDes8* iReceiveBuf; - /** - * length of data left to be read from LDD for a Read request - */ - TInt iToReceiveLength; - /** - * complete status for Read and Write function, this is not ownership - */ - TRequestStatus* iCompleteStatus; - TNcmControlEndpointState iState; - - }; - - -#endif //NCMCOMMINTERFACESENDERANDRECEIVER_H - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmcommunicationinterface.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmcommunicationinterface.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ -/* -* 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: -* header file for NCM communication interface class -* -*/ - -/** -@file -@internalComponent -*/ - -#ifndef NCMCOMMUNICATIONINTERFACE_H -#define NCMCOMMUNICATIONINTERFACE_H - -#include - -#ifndef __OVER_DUMMYUSBSCLDD__ -#include -#else //!__OVER_DUMMYUSBSCLDD__ -#include -#endif// __OVER_DUMMYUSBSCLDD__ - -#include "ncmcomminterfacesenderandreceiver.h" -#include "ncmpktdrvcommon.h" - -const TUint KSetupPacketLength = 8; -const TUint KNtbParamStructLength = 28; -const TUint KNtbInputSizeStructLength = 4; - -_LIT(KNcmCommInterface, "NcmCommunicationInterface"); - -enum TNcmCommErrorCode - { - EInternalError, - EInvalidSetupPacketLength, - EInvalidOutSetupPacket, - EInvalidInSetupPacket, - EInvalidLengthToRead, - EInvalidDataPacketLength, - EInvalidFilterOffset - }; - -/** -* The interface to Ncm engine -*/ - -NONSHARABLE_CLASS(MNcmControlObserver) -{ -public: - virtual TInt HandleSetNtbInputSize(TDes8& aBuf) = 0; - virtual TInt HandleGetNtbParam(TDes8& aBuf) = 0; - virtual TInt HandleGetNtbInputSize(TDes8& aBuf) = 0; - virtual void ControlError(TInt aError) = 0; -}; - -/** -* implement NCM control interface -*/ - -NONSHARABLE_CLASS(CNcmCommunicationInterface) : public CActive - { -public: - static CNcmCommunicationInterface* NewL(MNcmControlObserver& aEngine, RDevUsbcScClient& aLdd); - ~CNcmCommunicationInterface(); - TInt Start(); - void Stop(); - void ControlMsgError(TNcmCommErrorCode aCode); - TInt SendConnectionNotification(TBool aConnected); - TInt SendSpeedNotification(TInt aUSBitRate, TInt aDSBitRate); - -public: - inline RDevUsbcScClient& Ldd(); - inline TBool IsStarted(); - -private: - enum TNcmCommRWState - { - EStateInitial = 0, - EStateReadSetup, - EStateReadDataout, - EStateWriteDatain - }; - - enum TUsbRequestType - { - EGetNtbParameters = 0x80, - EGetNtbInputSize = 0x85, - ESetNtbInputSize = 0x86 - }; - -private: - CNcmCommunicationInterface(MNcmControlObserver& aEngine, RDevUsbcScClient& aLdd); - void ConstructL(); - void RunL(); - void DoCancel(); - void ReadSetup(); - void DecodeSetup(); - void ReadDataOut(); - void WriteDataIn(); - void ParseDataOut(); - TInt WriteInterruptData(TInt aEndPoint, TDesC8& aDes, TInt aLength); - TInt GetInterfaceNumber(); - - -private: - - MNcmControlObserver& iEngine; - /** - * USB request type - */ - TUint8 iRequestType; - /** - * data stage data length - */ - TUint16 iDataStageLength; - /** - * usb setup packet - */ - TBuf8 iSetupPacket; - /** - * control transfer data - */ - TBuf8 iDataBuffer; - TNcmCommRWState iRWState; - TBool iStarted; - RDevUsbcScClient& iPort; - /** - * instance to CNcmCommInterfaceSenderAndReceiver - */ - CNcmCommInterfaceSenderAndReceiver* iSenderAndReceiver; - /** - * communication interface number - */ - TUint8 iInterfaceNumber; - - }; - -// Inline functions -#include "ncmcommunicationinterface.inl" - -#endif //NCMCOMMUNICATIONINTERFACE_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmcommunicationinterface.inl --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmcommunicationinterface.inl Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -/* -* 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: -* NCM communication interface class inl file -* -*/ - -/** -@file -@internalComponent -*/ - -#ifndef NCMCOMMUNICATIONINTERFACE_INL -#define NCMCOMMUNICATIONINTERFACE_INL - -inline RDevUsbcScClient& CNcmCommunicationInterface::Ldd() - { - return iPort; - } - -inline TBool CNcmCommunicationInterface::IsStarted() - { - return iStarted; - } - - -#endif //NCMCOMMUNICATIONINTERFACE_INL \ No newline at end of file diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmdatainterface.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmdatainterface.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,115 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMDATAINTERFACE_H -#define NCMDATAINTERFACE_H - -#include -#ifndef __OVER_DUMMYUSBSCLDD__ -#include -#include -#include -#else -#include -#include -#endif - -#include "ncmpktdrvcommon.h" - -class CNcmDataSender; -class CNcmDataReceiver; - -/** -The interface to NCM data channel. -*/ -NONSHARABLE_CLASS(MNcmDataObserver) -{ -public: - /** - Process received datagram parsed from NCM. - @param[in] aPacket, contains the datagram(ethernet frame) to be dealed with. - */ - virtual void ProcessReceivedDatagram(RMBufPacket& aPacket) = 0; - /** - Notify the upper layer(TCP/IP stack) to continue to send data. - */ - virtual void ResumeSending() = 0; - /** - Notify unrecoverable error in data channel. - */ - virtual void DataError(TInt aError) = 0; - /** - Notify the Data Interface's alt-setting changes, which commonly from 0 to 1, or vice versa. - @param[in] aIfAltSet, the alt-setting number. - */ - virtual void HandleAltSetting(TInt aIfAltSet) = 0; -}; - -/** -Maintain the logic of Ncm data channel -*/ -NONSHARABLE_CLASS(CNcmDataInterface) : public CActive - { -public: - static CNcmDataInterface* NewL(MNcmDataObserver& aEngine, RDevUsbcScClient& aLdd); - ~CNcmDataInterface(); - - inline TBool IsStarted() const; - void Start(); - void Stop(); - TInt Send(RMBufChain& aPacket); - - TInt GetSpeed(TInt& aSpeed); - TInt GetNtbInputSize(TDes8& aSize); - TInt SetNtbInputSize(TDesC8& aSize); - TInt GetNtbParam(TDes8& aParam); - TInt SetInEpBufferSize(TUint aSize); - - void ActivateLdd(); - inline void DataError(TInt aErroCode) const; - inline void ResumeSending() const; - inline void ProcessDatagram(RMBufPacket& aPacket) const; - inline TInt AltSetting() const; - -private: - CNcmDataInterface(MNcmDataObserver& aEngine, RDevUsbcScClient& aLdd); - void ConstructL(); - - //From CActive - void RunL(); - void DoCancel(); - -private: - TBool iStarted; - CNcmDataSender* iSender; - CNcmDataReceiver* iReceiver; - MNcmDataObserver& iEngine; - - RDevUsbcScClient& iLdd; - TInt iAltSetting; - TUint iIfState; - }; - -// inline functions -#include "ncmdatainterface.inl" - -#endif // NCMDATAINTERFACE_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmdatainterface.inl --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmdatainterface.inl Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMDATAINTERFACE_INL -#define NCMDATAINTERFACE_INL - -/** - * Indicate whether DataInterface is started or not, called by Engine. - */ -inline TBool CNcmDataInterface::IsStarted() const - { - return iStarted; - } - -/** - * Return current alternate setting. - */ -inline TInt CNcmDataInterface::AltSetting() const - { - return iAltSetting; - } - -/** - * Notify the Engine that unrecoverable data error, like no memory, etc. - */ -inline void CNcmDataInterface::DataError(TInt aError) const - { - iEngine.DataError(aError); - } - -/** - * Resume sending, used when KStopSending returned by last send. - */ -inline void CNcmDataInterface::ResumeSending() const - { - iEngine.ResumeSending(); - } - -/** - * Process(upwards simply) received NCM Datagram (ethernet frame). - */ -void CNcmDataInterface::ProcessDatagram(RMBufPacket& aPacket) const - { - iEngine.ProcessReceivedDatagram(aPacket); - } - - -#endif //NCMDATAINTERFACE_INL diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmdatareceiver.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmdatareceiver.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -/* -* 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 -*/ -#ifndef NCMDATARECEIVER_H -#define NCMDATARECEIVER_H - -#include - -#ifndef __OVER_DUMMYUSBSCLDD__ -#include -#else -#include -#endif - -#include "ncmpktdrvcommon.h" -#include "ncmntbparser.h" - - -class CNcmDataInterface; - -/** -Responsible for receiving NCM packet data -*/ -NONSHARABLE_CLASS(CNcmDataReceiver) : public CActive, public MNcmNdpFrameObserver - { -public: - static CNcmDataReceiver* NewL(RDevUsbcScClient& aPort, CNcmDataInterface& aParent); - ~CNcmDataReceiver(); - - void Start(); - void Stop(); - - //from MNcmNdpFrameObserver - void ProcessEtherFrame(RMBufPacket&); - void ExpireBuffer(TAny*); - - inline TUint NtbOutMaxSize() const; -private: - void ConstructL(); - CNcmDataReceiver(RDevUsbcScClient& aPort, CNcmDataInterface& aParent); - - //From CActive - void RunL(); - void DoCancel(); - - void ReadData(); - -private: - RDevUsbcScClient& iPort; - TEndpointBuffer iEpIn; - TUint8* iBuf; - TUint iBufLen; - TBool iZlp; - CNcmNtbParser* iNtbParser; - CNcmDataInterface& iParent; - }; - -// inline functions -#include "ncmdatareceiver.inl" - -#endif //NCMDATARECEIVER_H - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmdatareceiver.inl --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmdatareceiver.inl Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -/* -* 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 -*/ -#ifndef NCMDATARECEIVER_INL -#define NCMDATARECEIVER_INL - -inline TUint CNcmDataReceiver::NtbOutMaxSize() const - { - return iNtbParser ? iNtbParser->NtbOutMaxSize() : 0xFFFF; - } - -#endif //NCMDATARECEIVER_INL diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmdatasender.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmdatasender.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,143 +0,0 @@ -/* -* 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 -*/ - - -#ifndef NCMDATASENDER_H -#define NCMDATASENDER_H - -#include - -#ifndef __OVER_DUMMYUSBSCLDD__ -#include -#else -#include -#include -#endif - -#include "ncmntbbuilder.h" -#include "ncmpktdrvcommon.h" - - -class CNcmDataInterface; -class RDevUsbcScClient; -class CNcmBufferManager; -class CNcmNtbBuildPolicy; - - -NONSHARABLE_CLASS(MNcmNtbBuildObserver) - { -public: - /** - * send a NTB out, this is interface with CNtbBuilder - * - * @param aBuffer contain a whole NTB. - */ - virtual void SendNtbPayload(TNcmBuffer& aBuffer) = 0; - }; - - - -/** -Responsible for sending Ncm packet data -*/ - -NONSHARABLE_CLASS(CNcmDataSender) : public CActive, - public MNcmNtbBuildObserver - - { -public: - static CNcmDataSender* NewL(RDevUsbcScClient& aPort, CNcmDataInterface& aParent); - ~CNcmDataSender(); - -public: - /** derived from MNcmNtbBuildObserver */ - void SendNtbPayload(TNcmBuffer& aBuffer); - -public: - /** - * change NtbInMax size - * - * @param aSize, new NtbInMax size - * @param aIsAltZero, is alternate setting 0 - * @return KErrNone if success, - * KErrArgument if the aSize is bigger than 65535, - * KErrUnknown if aSize is too bigger and can't create enough buffer block - */ - TInt SetNtbInMaxSize(TInt aSize, TBool aIsAltZero=ETrue); - void RunL(); - void Start(); - /** - * send a ethernet frame - * - * @param aPacket, the ethernet frame - * @return KErrNone if success, - * KErrNotReady if sender is not started. - * KErrCongestion if there is less buffers, need to start flow control. - */ - TInt Send(RMBufChain& aPacket); - void GetNtbParam(TNcmNtbInParam& aParam); - void Stop(); - TInt SetInEpBufferSize(TUint aSize); - inline TInt NtbInMaxSize(); - -private: - CNcmDataSender(RDevUsbcScClient& aPort, CNcmDataInterface& aParent); - void ConstructL(); - void SendNtbComplete(); - TInt StartNewNtb(); - void DoCancel(); - -private: - RDevUsbcScClient& iPort; - CNcmDataInterface& iParent; - /** - * LDD Endpoint buffer for in NCM in endpoint - */ - TEndpointBuffer iEpOut; - /** - * store the buffers to be sent to LDD - */ - RArray iTxArray; - /** - * store the buffer is on sending - */ - TNcmBuffer iSendingBuffer; - /** - * there is a buffer currenly on sending - */ - TBool iIsSending; - TBool iStarted; - CNcmNtbBuilder* iNtbBuilder; - CNcmBufferManager* iBufferManager; - CNcmNtbBuildPolicy* iBuildPolicy; - /** - * networking may send packet when data sender is not started, use this to determin if do send resuming when start - */ - TBool iStopSending; - - }; - -// Inline functions -#include "ncmdatasender.inl" - -#endif //NCMDATASENDER_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmdatasender.inl --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmdatasender.inl Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -// 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 the License "Eclipse Public License v1.0" -// which accompanies this distribution, and is available -// at the URL "http://www.eclipse.org/legal/epl-v10.html". -// -// Initial Contributors: -// Nokia Corporation - initial contribution. -// -// Contributors: -// -// Description: -// -// - - -/** -@file -@internalComponent -*/ - - - -#ifndef NCMDATASENDER_INL -#define NCMDATASENDER_INL - - - -inline TInt CNcmDataSender::NtbInMaxSize() - { - return iNtbBuilder->NtbInMaxSize(); - } - - -#endif - - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmengine.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmengine.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,133 +0,0 @@ -/* -* 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 -*/ -#ifndef NCMENGINE_H -#define NCMENGINE_H - - -#ifndef __OVER_DUMMYUSBSCLDD__ -#include -#else -#include -#endif - -#include - -#include "ncmpktdrvcommon.h" -#include "ncmcommunicationinterface.h" -#include "ncmdatainterface.h" -#include "ncmsharedstatemanager.h" - -class CNcmPktDrv; - -/** -NCM Engine: coordinate with Data Interface, Comm Interface and Shared State Manager. -*/ -NONSHARABLE_CLASS(CNcmEngine) : public CActive, - public MNcmDataObserver, - public MNcmControlObserver, - public MShareStateObserver - { -public: - static CNcmEngine* NewL(CNcmPktDrv& aPktDrv); - ~CNcmEngine(); - - //Start the engine, called by TransferHandle after PktDrvBase's StartInterface; - TInt Start(RMessagePtr2& aMsg); - //Stop the engine, called by PktDrvBase's StopInterface; - void Stop(); - - //Send a Packet to USB Host. - TInt Send(RMBufChain &aPacket); - //Get the Interface Mac Address; - TUint8* InterfaceAddress(); - - //From MNcmControlObserver - TInt HandleSetNtbInputSize(TDes8&); - TInt HandleGetNtbParam(TDes8&); - TInt HandleGetNtbInputSize(TDes8&); - void ControlError(TInt aError); - - //From MNcmDataObserver - void ProcessReceivedDatagram(RMBufPacket&); - void ResumeSending(); - void DataError(TInt aError); - void HandleAltSetting(TInt aIfNum); - TInt SetInEpBufferSize(TUint aSize); - - //From MShareStateObserver - void NotifyDhcpStarted(); - - inline TInt SetStateToWatcher(TInt aType, TInt aValue) const; - inline TInt RegisterNotify(const RMessage2& aMsg) const; - inline TInt DeRegisterNotify() const; - -#ifdef __OVER_DUMMYUSBSCLDD__ -public: - TInt State() const {return iEngineState;} -#endif - -private: - //From CActive - void RunL(); - void DoCancel(); - - CNcmEngine(); - CNcmEngine(CNcmPktDrv& aPktDrv); - void ConstructL(); - - void InitLddL(const RMessagePtr2& aMsg); - void RandomMacAddressL(TNcmMacAddress& aMacAddress); - void DoNcmStarted(); - void StartDataLayer(); - void StopDataLayer(); - -private: - enum TNcmEngineState - { - ENcmStateUninitialized = 0, - ENcmStateStarting, - ENcmStateStarted, - ENcmStatePaused, - ENcmStateStopped, - ENcmStateMax - }; - -private: - CNcmPktDrv& iPktDrv; - - CNcmDataInterface* iDataInterface; - CNcmCommunicationInterface* iCommInterface; - CNcmSharedStateManager* iSharedStateManager; - - TNcmEngineState iEngineState; - TUint iDeviceState; - - TNcmMacAddress iSymbianMacAddress; - - RDevUsbcScClient iDataLdd; - RDevUsbcScClient iCommLdd; - }; - -//inline functions -#include "ncmengine.inl" - -#endif // NCMENGINE_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmengine.inl --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmengine.inl Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* -* 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 -*/ -#ifndef NCMENGINE_INL -#define NCMENGINE_INL - -//Assumption: NcmEngine & NcmServer are existed simultaneously!! -#ifdef _DEBUG -_LIT(KEnginePanic, "CNcmEnginePanic"); -#endif -/** - * Set IapId and Dhcp Provision Result to SharedState manager. - */ -inline TInt CNcmEngine::SetStateToWatcher(TInt aType, TInt aValue) const - { - __ASSERT_DEBUG(iSharedStateManager, User::Panic(KEnginePanic, __LINE__)); - return iSharedStateManager->SetStateValue(aType, aValue); - } - -/** - * Register the callback of Class Controller to do Dhcp Provision. - */ -inline TInt CNcmEngine::RegisterNotify(const RMessage2& aMsg) const - { - __ASSERT_DEBUG(iSharedStateManager, User::Panic(KEnginePanic, __LINE__)); - return iSharedStateManager->RegisterNotify(aMsg); - } - -/* - * Deregister the callback. - */ -inline TInt CNcmEngine::DeRegisterNotify() const - { - __ASSERT_DEBUG(iSharedStateManager, User::Panic(KEnginePanic, __LINE__)); - return iSharedStateManager->DeRegisterNotify(); - } - - -#endif //NCMENGINE_INL diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmnotificationdescriptor.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmnotificationdescriptor.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -/* -* 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: -* header file for NCM notification message class -* -*/ - - - -#ifndef NCMNOTIFICATIONDESCRIPTOR_H -#define NCMNOTIFICATIONDESCRIPTOR_H - -#include - - -const TUint KUSBNotificationNetworkConnection = 8; - -/** - * USB NetworkConnection Notification - */ - -NONSHARABLE_CLASS(TUSBNotificationNetworkConnection) - { -public: - TUint8 iRequestType; ///< Request type - TUint8 iNotification; ///< Notification number - TUint16 iValue; ///< Notification value - TUint16 iIndex; ///< Notification index - TUint16 iLength; ///< Notification length -public: - TDes8& Des(); - -private: - TBuf8 iBuffer; - }; - -const TUint KUSBNotificationConnectionSpeedChange = 16; - -/** - * USB ConnectionSpeedChange Notification - */ - -NONSHARABLE_CLASS(TUSBNotificationConnectionSpeedChange) - { -public: - TUint8 iRequestType; ///< Request type - TUint8 iNotification; ///< Notification number - TUint16 iValue; ///< Notification value - TUint16 iIndex; ///< Notification index - TUint16 iLength; ///< Notification length - TUint32 iUSBitRate; ///< upstream bit rate, in bits per second - TUint32 iDSBitRate; ///< downstream bit rate, in bits per second -public: - TDes8& Des(); - -private: - TBuf8 iBuffer; - }; - -#endif // NCMNOTIFICATIONDESCRIPTOR_H - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmntb16builder.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmntb16builder.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -/* -* 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: -* header file for NTB16 build class -* -*/ - - -/** -@file -@internalComponent -*/ - - -#ifndef NCMNTB16BUILDER_H -#define NCMNTB16BUILDER_H - -#include -#include "ncmntbbuilder.h" -#include "ncmpktdrvcommon.h" - - -class MNcmNtbBuildObserver; - - -NONSHARABLE_CLASS(TDatagramEntry) - { -public: - TUint16 iWDatagramIndex; - TUint16 iWDatagramLength; - }; - -/** -Responsible for build NTB16 payload -*/ - -NONSHARABLE_CLASS(CNcmNtb16Builder) : public CNcmNtbBuilder - { -public: - static CNcmNtbBuilder* NewL(MNcmNtbBuildObserver&); - ~CNcmNtb16Builder(); - -public: -/** -*derived from CNcmNtbBuilder -*/ - void StartNewNtb(const TNcmBuffer& aBuffer); - TInt AppendPacket(const RMBufChain& aPacket); - TInt SetNtbInMaxSize(TInt aSize); - void CompleteNtbBuild(); - void Reset(); - -private: - CNcmNtb16Builder(MNcmNtbBuildObserver&); - void ConstructL(); - void BuildNtbHeader(); - void BuildNdp(); - - -private: - /** - * offset of NDP in buffer - */ - TUint16 iNdpOffset; - /** - * length of NDP - */ - TUint16 iNdpLength; - /** - * offset of next datagram can be in. - */ - TUint16 iDatagramOffset; - /** - * array of datagrams index and length in NTB. - */ - RArray iPacketsArray; - }; - - -#endif //NCMNTB16BUILDER_H - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmntbbuilder.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmntbbuilder.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,129 +0,0 @@ -/* -* 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: -* header file for NTB build base class -* -*/ - - - -/** -@file -@internalComponent -*/ - - -#ifndef NCMNTBBUILDER_H -#define NCMNTBBUILDER_H - -#include - -#include "ncmpktdrvcommon.h" - - -class MNcmNtbBuildObserver; -class RMBufChain; -class CNcmNtbBuildPolicy; -class TNcmNtbInParam; - - -const TInt KErrBufferFull = -6667; - - -/** -Base class for build NTB -*/ - -NONSHARABLE_CLASS(CNcmNtbBuilder) : public CBase - { -public: - /** - * append a ethernet frame to current NTB - * - * @param aPacket ethernet packet buffer - * @return KErrNone if success - * KErrBufferFull if current NTB is full and can't insert the new packet to NTB and send the current NTB immediately - */ - virtual TInt AppendPacket(const RMBufChain& aPacket) = 0; - /** - * complete the current NTB - * - */ - virtual void CompleteNtbBuild(); - /** - * change the NtbInMaxSize - * - * @param aSize new size - * @return KErrNone if success - * KErrArgument if the size is bigger than allowed size in NCM spec. - */ - virtual TInt SetNtbInMaxSize(TInt aSize) = 0; - /** - * prepare build a new NTB - * - * @param aBuffer buffer to construct NTB - */ - virtual void StartNewNtb(const TNcmBuffer& aBuffer); - /** - * reset builder to intial state. - */ - virtual void Reset(); - -public: - ~CNcmNtbBuilder(); - void GetNtbParam(TNcmNtbInParam& aParam); - inline void SetBuildPolicy(CNcmNtbBuildPolicy& aPolicy); - /** - * @return ETrue if has called StartNewNtb for current NTB - * EFalse otherwise - */ - inline TBool IsNtbStarted(); - inline TInt NtbInMaxSize(); - inline TInt MinNtbInMaxSize(); - -protected: - CNcmNtbBuilder(MNcmNtbBuildObserver&); - void SendNtbPayload(); - -protected: - /** - * refer to NCM spec for following five variable meaning. - */ - TInt iNtbInMaxSize; - TInt iNdpInDivisor; - TInt iNdpInPayloadRemainder; - TInt iNdpInAlignment; - TUint16 iSequence; - - MNcmNtbBuildObserver& iObserver; - /** - * buffer contains NTB - */ - TNcmBuffer iBuffer; - /** - * point to builder policy, this is not ownership - */ - CNcmNtbBuildPolicy* iBuildPolicy; - /** - * a NTB is started or not. - */ - TBool iNtbStarted; - }; - - -// Inline functions -#include "ncmntbbuilder.inl" - - -#endif /* NCMNTBBUILDER_H */ diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmntbbuilder.inl --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmntbbuilder.inl Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* -* 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: -* NTB build base class inl file -* -*/ - - -/** -@file -@internalComponent -*/ - - -#ifndef NCMNTBBUILDER_INL -#define NCMNTBBUILDER_INL - -const TInt KMinNtbInMaxSize = 2048; - -inline TInt CNcmNtbBuilder::NtbInMaxSize() - { - return iNtbInMaxSize; - } - -inline void CNcmNtbBuilder::SetBuildPolicy(CNcmNtbBuildPolicy& aPolicy) - { - iBuildPolicy = &aPolicy; - } - -inline TBool CNcmNtbBuilder::IsNtbStarted() - { - return iNtbStarted; - } - -inline TInt CNcmNtbBuilder::MinNtbInMaxSize() - { - return KMinNtbInMaxSize; - } - - - -#endif diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmntbbuildpolicy.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmntbbuildpolicy.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* -* 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: -* Header file NTB build policy base class -* -*/ - - -/** -@file -@internalComponent -*/ - -#ifndef NCMNTBBUILDPOLICY_H -#define NCMNTBBUILDPOLICY_H - - -#include -#include "ncmpktdrvcommon.h" - -class CNcmNtbBuilder; - -/** -base class for ntb build policy -*/ - -NONSHARABLE_CLASS(CNcmNtbBuildPolicy) : public CActive - { -public: - /** - * call by builder when begin a new NTB - */ - virtual void StartNewNtb() = 0; - /** - * call by builder when a ethernet frame is added to NTB - */ - virtual void UpdateNtb(TInt aSize) = 0; - /** - * call by builder when complete a NTB - */ - virtual void CompleteNtbBuild() = 0; - virtual void UpdateBufferSize(TInt aSize) = 0; - virtual void UpdateFreeBufferCount(TInt aCount) = 0; - virtual void UpdateTotalBufferCount(TInt aCount) = 0; - ~CNcmNtbBuildPolicy(); - inline CNcmNtbBuilder& NtbBuilder(); - -protected: - CNcmNtbBuildPolicy(CNcmNtbBuilder&); - CNcmNtbBuilder& iNtbBuilder; -}; - - -inline CNcmNtbBuilder& CNcmNtbBuildPolicy::NtbBuilder() - { - return iNtbBuilder; - } - - -#endif //NCMNTBBUILDPOLICY_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmntbbuildsimplepolicy.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmntbbuildsimplepolicy.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -/* -* 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: -* Header file for simple NTB build policy -* -*/ - - -/** -@file -@internalComponent -*/ - - -#ifndef NCMNTBBUILDSIMPLEPOLICY_H -#define NCMNTBBUILDSIMPLEPOLICY_H - - -#include -#include "ncmntbbuildpolicy.h" - - -/** -* a simple build policy, fix packets count in a NTB and a timer to restrict maxiam time delay -*/ - -NONSHARABLE_CLASS(CNcmNtbBuildSimplePolicy) : public CNcmNtbBuildPolicy - { -public: - static CNcmNtbBuildPolicy* NewL(CNcmNtbBuilder& aPolicy); - ~CNcmNtbBuildSimplePolicy(); - -public: - /** - derived from CNcmNtbBuildPolicy - */ - virtual void StartNewNtb(); - virtual void UpdateNtb(TInt aSize); - virtual void CompleteNtbBuild(); - - virtual void UpdateBufferSize(TInt aSize); - virtual void UpdateFreeBufferCount(TInt aCount); - virtual void UpdateTotalBufferCount(TInt aCount); - -private: - void RunL(); - void DoCancel(); - void ConstructL(); - CNcmNtbBuildSimplePolicy(CNcmNtbBuilder& aPolicy); - /** - * timer for maxiam packet time delay - */ - RTimer iTimer; - /** - * packets number in current NTB - */ - TInt iPacketsCount; - TInt iTotalBufferCount; - TInt iFreeBufferCount; - TInt iBufferSize; - -}; - - -#endif //NCMNTBBUILDSIMPLEPOLICY_H - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmntbparser.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmntbparser.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,210 +0,0 @@ -/* -* 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 -*/ -#ifndef NCMNTBPARSER_H -#define NCMNTBPARSER_H - -#include - -//DEBUG MACRO to dump the parsed NDP info. -//#define DEBUG_DUMP_NTBINNER -#ifdef DEBUG_DUMP_NTBINNER -#include -#endif - -#ifndef __OVER_DUMMYUSBSCLDD__ -#include -#else -#include -#endif - -#include "ncmpktdrvcommon.h" - -/** - * interface for parsed NDP(ethernet frame). - */ -NONSHARABLE_CLASS(MNcmNdpFrameObserver) - { -public: - virtual void ProcessEtherFrame(RMBufPacket&) = 0; - virtual void ExpireBuffer(TAny*) = 0; - }; - -#ifdef DEBUG_DUMP_NTBINNER -class NTHNDPDumper : public MNcmNdpFrameObserver - { -public: - inline void ProcessEtherFrame(RMBufPacket& aPacket) - { - RDebug::Printf("NTHNDPDumper::parsed Ethernet Frame, length=%d", aPacket.Length()); - aPacket.Free(); - } - inline void ExpireBuffer(TAny* aBuf) - { - } - inline void FatalError(TInt aErrCode) - { - RDebug::Printf("NTHNDPDumper::Fatal Error=%d", aErrCode); - } - }; -#endif //DEBUG_DUMP_NTBINNER - -/** - * NCM NTH for NTB16 - */ -NONSHARABLE_CLASS(TNcmNth16) - { -public: - TUint8 dwSignature[4]; - TUint16 wHeaderLength; - TUint16 wSequence; - TUint16 wBlockLength; - TUint16 wNdpIndex; - -public: - inline void Dump(); - }; - -/** - * NCM NDP 16 - */ -NONSHARABLE_CLASS(TNcmNdp16) - { -public: - TUint8 dwSignature[4]; - TUint16 wLength; - TUint16 wNextNdpIndex; - TUint16 wDatagram0Index; - TUint16 wDatagram0Length; - TUint16 wDatagram1Index; - TUint16 wDatagram1Length; - -public: - inline void Dump(); - }; - -/** - * NCM packet parser - * NOTE:the buffer to be parsed was not guaranteed as a whole USB transfer. - * So, a internal state is used to remember previous parsed result. - */ -NONSHARABLE_CLASS(CNcmNtbParser) : public CBase - { -public: - virtual TInt Parse(const TUint8* aBuf, TInt aBufLen, TBool aZlp = EFalse) = 0; - virtual void Reset(TInt aResetType=0) = 0; - virtual TUint NtbOutMaxSize() const = 0; - virtual ~CNcmNtbParser(); - -protected: - inline CNcmNtbParser(MNcmNdpFrameObserver&); - - MNcmNdpFrameObserver& iObserver; - }; - -/** - * NCM NTB 16 parser - */ -NONSHARABLE_CLASS(CNcmNtb16Parser): public CNcmNtbParser - { -public: - //From CNcmNtbParser - TInt Parse(const TUint8* aBuf, TInt aBufLen, TBool aZlp = EFalse); - TUint NtbOutMaxSize() const; - void Reset(TInt aType = 0); - - virtual ~CNcmNtb16Parser(); - - static CNcmNtb16Parser* NewL(MNcmNdpFrameObserver&); - -private: - inline CNcmNtb16Parser(MNcmNdpFrameObserver&); - //parse NTH - TInt ParseNcmNtb16Header(const TUint8* aBuf, TInt aBufLen, TBool aZlp); - //parse NDP - TInt ParseNcmNtb16Ndp(const TUint8* aBuf, TInt aBufLen); - //parse NdpDatagram - TInt ParseNcmNtb16NdpDatagram(const TUint8* aBuf, TInt aBufLen); - //queue buffer. - TInt QueueBuf(const TUint8* aBuf, TInt aBufLen); - TUint8 DataTUint8(TUint aOffset, const TUint8* aBuf, TInt aBufLen); - TUint16 DataTUint16(TUint aOffset, const TUint8* aBuf, TInt aBufLen); - TInt DataPacket(const TUint8* aBuf, TInt aBufLen); - //search NCMH in the stream if the NTH header signature is wrong. - TInt SearchNcmHead(const TUint8* aBuf, TInt aBufLen); - - - enum TNcmNtb16ResetType - { - ENcmNtb16TypeResetAll = 0, - ENcmNtb16TypeResetQueue = 1, - ENcmNtb16TypeResetData = 2 - }; - - enum TNcmNtb16ParseState - { - //initial state, NTH is not ready. - ENcmNtb16ParseStateUninitialized = 0, - //NTH is ready, NDP is not ready. - ENcmNtb16ParseStateNdpParsing, - //NDP is ready, NdpDatagram is not finished. - ENcmNtb16ParseStateNdpSeeking, - //Error state or NULL NDP, ignore coming bytes until this NTB end. - ENcmNtb16ParseStateSkipBytes - }; - - enum TNcmNtb16ParseNdpState - { - ENcmNtb16ParseNdpStateUninitialized = 0, - ENcmNtb16ParseNdpStateDatagramed - }; - -private: - TNcmNth16 iNth; - TNcmNdp16 iNdp; - - TNcmNtb16ParseState iState; - - TUint iDataLen; //NTB data length. - TUint iQueLen; //Queue length. - TUint iDataOffset; //start offset in first buffer in queue. - RArray iBufQueue; - - TNcmNtb16ParseNdpState iNdpState; - TUint iNdpDataOffset; - TUint iNdpBound; - TUint16 iDatagramIndex; - TUint16 iDatagramLength; - - RMBufPacket iPacket; - -#ifdef _DEBUG - //error statistics - TUint16 iPrevSeq; - TUint iTotalSeq; -#endif - - TUint16 iMaxSize; - }; - -// inline functions -#include "ncmntbparser.inl" - -#endif /* NCMNTBPARSER_H_ */ diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmntbparser.inl --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmntbparser.inl Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -/* -* 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 -*/ -#ifndef NCMNTBPARSER_INL -#define NCMNTBPARSER_INL - -inline void TNcmNth16::Dump() - { -#ifdef DEBUG_DUMP_NTBINNER - RDebug::Printf("NcmNth16:%08x\n" - "\tdwSignature=%S,\n" - "\twHeaderLength=%d,\n" - "\twSequence=%d,\n" - "\twBlockLength=%d,\n" - "\twNdpIndex=%d.", - this, &TPtrC8((TUint8*)&dwSignature, 4), wHeaderLength, wSequence, wBlockLength, - wNdpIndex); -#endif - } - -inline void TNcmNdp16::Dump() - { -#ifdef DEBUG_DUMP_NTBINNER - RDebug::Printf("NcmNdp16:%08x,\n" - "\tdwSignature=%S,\n" - "\twLength=%d,\n" - "\twNextNdpIndex=%d,\n" - "\twDatagram0Index=%d,\n" - "\twDatagram0Length=%d,\n" - "\twDatagram1Index=%d,\n" - "\twDatagram1Length=%d,\n", - this, &TPtrC8((TUint8*)&dwSignature, 4), - wLength, wNextNdpIndex, wDatagram0Index, wDatagram0Length, - wDatagram1Index, wDatagram1Length); -#endif - } - -inline CNcmNtb16Parser::CNcmNtb16Parser(MNcmNdpFrameObserver& aObserver) - : CNcmNtbParser(aObserver), iMaxSize(0xFFFF) - { - } - -inline CNcmNtbParser::CNcmNtbParser(MNcmNdpFrameObserver& aObserver) - : iObserver(aObserver) - { - } - - -#endif //NCMNTBPARSER_INL diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmpktdrv.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmpktdrv.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -/* -* 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 -*/ -#ifndef NCMPKTDRV_H -#define NCMPKTDRV_H - - -#include -#ifndef __OVER_DUMMYUSBSCLDD__ -#include -#include -#include -#include -#else -#include -#endif - -class CNcmEngine; -class CNcmServer; - -/** -The Ncm packet driver -*/ -NONSHARABLE_CLASS(CNcmPktDrv) : public CPktDrvBase - { -public: - CNcmPktDrv(CPktDrvFactory& aFactory); - virtual ~CNcmPktDrv(); - virtual void ConstructL(CLANLinkCommon* aParent); - - //From CPktDrvBase - virtual TInt StartInterface(); - virtual TInt StopInterface(); - virtual TInt ResetInterface(); - virtual TInt SetRxMode(TRxMode AMode); - virtual TInt GetRxMode() const; - virtual TInt SetInterfaceAddress(const THWAddr&); - virtual TUint8* GetInterfaceAddress()const; - virtual TInt GetMulticastList(const THWAddr* aAddr, TInt& n) const; - virtual TInt SetMulticastList(const THWAddr* aAddr, TInt n); - virtual TInt InterfacePowerUp(); - virtual TInt InterfacePowerDown(); - virtual TInt InterfaceSleep(); - virtual TInt InterfaceResume(); - virtual TInt Notification(enum TAgentToNifEventType aEvent, void* aInfo); - virtual TInt Control(TUint aLevel,TUint aName,TDes8& aOption, TAny* aSource=0); - virtual TInt Send(RMBufChain& aPkt); - - //Upcall from Control Object - void ReceiveEthFrame(RMBufPacket&); - void ResumeSending(); - void FatalErrorNotification(TInt aError); - -#ifdef __OVER_DUMMYUSBSCLDD__ -public: - TInt State() const; -#endif - -private: - CNcmEngine* iEngine; - CNcmServer* iNcmServer; - }; - -#endif // NCMPKTDRV_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmpktdrvcommon.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmpktdrvcommon.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* -* 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 -*/ -#ifndef NCMPKTDRVCOMMON_H -#define NCMPKTDRVCOMMON_H - -#include -#include "ncmcommon.h" - -const TInt KErrCongestion = -6668; -const TInt KErrNoBuffer = -6669; - - -NONSHARABLE_CLASS(TNcmNtbInParam) - { -public: - TUint32 iNtbInMaxSize; - TUint16 iNdpInDivisor; - TUint16 iNdpInPayloadRemainder; - TUint16 iNdpInAlignment; - }; - - -NONSHARABLE_CLASS(TNcmBuffer) - { -public: - TUint8* iPtr; - TUint32 iLen; - TUint32 iMaxLength; - }; - -#endif // NCMPKTDRVCOMMON_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmpktdrvfactory.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmpktdrvfactory.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMPKTDRVFACTORY_H -#define NCMPKTDRVFACTORY_H - -#include - -#ifndef __OVER_DUMMYUSBSCLDD__ -#include -#include -#else -#include -#endif - -const TUint KNcmDrvMajorVersionNumber=1; -const TUint KNcmDrvMinorVersionNumber=0; -const TUint KNcmDrvBuildVersionNumber=0; - -NONSHARABLE_CLASS(CNcmPktDrvFactory) : public CPktDrvFactory - { -public: - virtual CPktDrvBase* NewDriverL(CLANLinkCommon* aParent); - virtual TVersion Version() const; - }; - -#endif // NCMPKTDRVFACTORY_H - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmsharedstatemanager.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/inc/ncmsharedstatemanager.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMSHAREDSTATEMANAGER_H -#define NCMSHAREDSTATEMANAGER_H - -#include -#include - -#include "ncmpktdrvcommon.h" -#include "ncmcoexistbearerwatcher.h" - - -/** -The interface to Ncm Engine. -*/ -NONSHARABLE_CLASS(MShareStateObserver) - { -public: - virtual void NotifyDhcpStarted() = 0; - }; - -using namespace UsbNcm; - -/** -Maintain the shared state between the Paket Driver and NCM class controller -*/ -NONSHARABLE_CLASS(CNcmSharedStateManager) : public CActive - { -public: - static CNcmSharedStateManager* NewL(MShareStateObserver& aEngine); - ~CNcmSharedStateManager(); - - TInt NotifyDhcpProvisionRequested(); - void NotifyNcmConnected(); - void NotifyNcmDisconnected(TInt aReason); - - TInt SetStateValue(TInt aType, TInt aValue); - TInt RegisterNotify(const RMessage2& aMsg); - TInt DeRegisterNotify(); - -private: - CNcmSharedStateManager(MShareStateObserver& aEngine); - void ConstructL(); - - //From CActive - void RunL(); - void DoCancel(); - - TInt DoDhcpProvisionRequest(); - -private: - RProperty iProperty; - RMessage2 iNotifyMsg; - TPckgBuf iNcmState; - MShareStateObserver& iEngine; - CNcmCoexistBearerWatcher* iCoexistBearer; - }; - -#endif // NCMSHAREDSTATEMANAGER_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmbuffermanager.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmbuffermanager.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,170 +0,0 @@ -/* -* 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 "ncmbuffermanager.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmbuffermanagerTraces.h" -#endif - - - - -// if there are KCongestionCount buffers will notify networking to stop sending -// if there are at least KUnCongestionCount, will notify networking to start sending -const TInt KCongestionCount = 1; -const TInt KUnCongestionCount = 3; - - - -// ======== MEMBER FUNCTIONS ======== -// - -CNcmBufferManager* CNcmBufferManager::NewL() - { - OstTraceFunctionEntry0( CNCMBUFFERMANAGER_NEWL_ENTRY ); - CNcmBufferManager *self = new (ELeave) CNcmBufferManager(); - OstTraceFunctionExit0( CNCMBUFFERMANAGER_NEWL_EXIT ); - return self; - } - -CNcmBufferManager::~CNcmBufferManager() - { - OstTraceFunctionEntry1( CNCMBUFFERMANAGER_CNCMBUFFERMANAGER_ENTRY, this ); - iFreeQueue.Reset(); - OstTraceFunctionExit1( CNCMBUFFERMANAGER_CNCMBUFFERMANAGER_EXIT, this ); - } - -// -// get a buffer block from manager -// -TInt CNcmBufferManager::GetBuffer(TNcmBuffer& aBuffer) - { - OstTraceFunctionEntry1( CNCMBUFFERMANAGER_GETBUFFER_ENTRY, this ); - - TInt count = iFreeQueue.Count(); - TInt ret = KErrNone; - - if (count == 0) - { - OstTraceFunctionExit1( CNCMBUFFERMANAGER_GETBUFFER_EXIT, this ); - return KErrNoBuffer; - } - else if (count == KCongestionCount) - { - iIsCongestion = ETrue; - ret = KErrCongestion; - } - aBuffer = iFreeQueue[0]; - iFreeQueue.Remove(0); - OstTraceFunctionExit1( CNCMBUFFERMANAGER_GETBUFFER_EXIT_DUP1, this ); - return ret; - } - -// -// free a buffer block to manager -// -void CNcmBufferManager::FreeBuffer(const TNcmBuffer& aBuffer) - { - OstTraceFunctionEntry1( CNCMBUFFERMANAGER_FREEBUFFER_ENTRY, this ); - iFreeQueue.Append(aBuffer); - int count = iFreeQueue.Count(); - iFreeQueue[count-1].iLen = 0; - if (count == KUnCongestionCount) - { - iIsCongestion = EFalse; - } - OstTraceFunctionExit1( CNCMBUFFERMANAGER_FREEBUFFER_EXIT, this ); - } - -// -// set the whole buffer area to create buffer blocks -// -void CNcmBufferManager::InitBufferArea(TAny* aBuf, TInt aLength) - { - OstTrace1( TRACE_NORMAL, CNCMBUFFERMANAGER_INITBUFFERAREA, "CNcmBufferManager::InitBufferArea aLength=%d", aLength ); - iBuf = (TUint8*)aBuf; - iLen = aLength; - } - -// -// set the size of a buffer block, create buffer blocks on the buffer area -// -TInt CNcmBufferManager::SetBufferCellSize(TInt aSize) - { - OstTraceFunctionEntry1( CNCMBUFFERMANAGER_SETBUFFERCELLSIZE_ENTRY, this ); - -// buffer block size must be aligned with KAlignSize to make the each buffer start align with KAlignSize - iCellSize = (aSize+iAlignSize-1)&~(iAlignSize-1); - OstTraceExt2( TRACE_NORMAL, CNCMBUFFERMANAGER_SETBUFFERCELLSIZE, "CNcmBufferManager::SetBufferCellSize aSize=%d, iCellSize=%d", aSize, iCellSize ); - -// buffer area got from share chunk LDD may not align, make it align to KAlignSize first - TUint32 buf = (TUint)iBuf; - buf = (buf+iAlignSize-1)&~(iAlignSize-1); - TUint8* alignbuf = (TUint8*)buf; - TUint32 offset = buf - (TUint)iBuf; - - int count = (iLen-offset)/iCellSize; - iFreeQueue.Reset(); - if (count < KUnCongestionCount) - { - OstTrace1( TRACE_FATAL, CNCMBUFFERMANAGER_SETBUFFERCELLSIZE1, "the buffer cell size is too big and create too less buffers %d", count ); - OstTraceFunctionExit1( CNCMBUFFERMANAGER_SETBUFFERCELLSIZE_EXIT, this ); - return KErrUnknown; - } - - TNcmBuffer ncmbuf; - for (TInt i=0 ; iConstructL(); - CleanupStack::Pop(self); - return self; - } - -CNcmCoexistBearerWatcher::CNcmCoexistBearerWatcher() : CActive(CActive::EPriorityStandard) - { - CActiveScheduler::Add(this); - } - - -CNcmCoexistBearerWatcher::~CNcmCoexistBearerWatcher() - { - Cancel(); - iProperty.Close(); - } - - -void CNcmCoexistBearerWatcher::ConstructL() - { - OstTraceFunctionEntry0(CNCMCOEXISTBEARERWATCHER_CONSTRUCTL); - - const TUint KIPBearerCoexistenceProperty = 0x10286a95; - - TInt err = iProperty.Define(KIPBearerCoexistenceProperty, RProperty::EInt, KAllowAllPolicy, KNetworkControlPolicy); - if ( (err != KErrNone) && (err != KErrAlreadyExists) ) - { - OstTrace1( TRACE_ERROR, CNCMCOEXISTBEARERWATCHER_CONSTRUCTL_DUP02, "Failed to define the property;err=%d", err ); - User::Leave(err); - } - - TSecureId thisSID = RProcess().SecureId(); - User::LeaveIfError(iProperty.Attach(thisSID, KIPBearerCoexistenceProperty)); - User::LeaveIfError(iProperty.Get(reinterpret_cast(iBearerState))); - - OstTraceFunctionExit0(CNCMCOEXISTBEARERWATCHER_CONSTRUCTL_DUP01); - } - - -TInt CNcmCoexistBearerWatcher::SetIpOverUsbActive(TRequestStatus& aStatus) - { - OstTraceFunctionEntry0(CNCMCOEXISTBEARERWATCHER_SETIPOVERUSBACTIVE); - - TInt ret = DoActive(); - OstTrace1(TRACE_NORMAL, CNCMCOEXISTBEARERWATCHER_SETIPOVERUSBACTIVE_DUP01, "DoActive()=%d.", ret); - - if (KErrNone == ret) - { - OstTraceFunctionExitExt(CNCMCOEXISTBEARERWATCHER_SETIPOVERUSBACTIVE_DUP02, this, KErrCompletion); - return KErrCompletion; - } - else if (KErrInUse == ret) - { - iReportStatus = &aStatus; - *iReportStatus = KRequestPending; - - iProperty.Subscribe(iStatus); - SetActive(); - return KErrNone; - } - - OstTraceFunctionExitExt(CNCMCOEXISTBEARERWATCHER_SETIPOVERUSBACTIVE_DUP03, this, ret); - return ret; - } -/** - * do Set IP Over USB Actived. - */ -TInt CNcmCoexistBearerWatcher::DoActive() - { - __ASSERT_DEBUG(iBearerState != EIPBearerIPOverUSB, User::Panic(KCoBearerPanic, __LINE__)); - - _LIT(KIPBearerCoexistenceMutex, "IPBearerCoexistenceMutex"); - RMutex gMutex; - TInt error = gMutex.CreateGlobal(KIPBearerCoexistenceMutex); - if ( error != KErrNone ) - { - if( error == KErrAlreadyExists ) - { - error = gMutex.OpenGlobal(KIPBearerCoexistenceMutex); - if(error != KErrNone) - { - OstTrace1(TRACE_ERROR, CNCMCOEXISTBEARERWATCHER_DOACTIVE, "Failed to open global mutex, error=%d", error); - return KErrNotReady; - } - } - else - { - OstTrace1(TRACE_ERROR, CNCMCOEXISTBEARERWATCHER_DOACTIVE_DUP01, "Failed to create a global mutex, error=%d", error); - return KErrNotReady; - } - } - - gMutex.Wait(); - error = iProperty.Get(reinterpret_cast(iBearerState)); - if (error != KErrNone) - { - OstTrace1(TRACE_ERROR, CNCMCOEXISTBEARERWATCHER_DOACTIVE_DUP02, "Failed to get property value, error=%d", error); - } - else - { - if (iBearerState == EIPBearerNoneActive) - { - error = iProperty.Set(EIPBearerIPOverUSB); - if (error != KErrNone) - { - OstTrace1(TRACE_ERROR, CNCMCOEXISTBEARERWATCHER_DOACTIVE_DUP03, "Failed to set property value, error=%d", error); - } - else - { - iBearerState = EIPBearerIPOverUSB; - } - } - else - { - error = KErrInUse; - __ASSERT_DEBUG(iBearerState != EIPBearerIPOverUSB, User::Panic(KCoBearerPanic, __LINE__)); - OstTrace1(TRACE_WARNING, CNCMCOEXISTBEARERWATCHER_DOACTIVE_DUP04, "Failed to set CoexistIPBearer to IPOverUsb since iBearerState=%d", iBearerState); - } - } - - gMutex.Signal(); - gMutex.Close(); - - return error; - } - -TInt CNcmCoexistBearerWatcher::SetIpOverUsbDeactive() - { - __ASSERT_DEBUG(iBearerState==EIPBearerIPOverUSB, User::Panic(KCoBearerPanic, __LINE__)); - - TInt err = iProperty.Set(EIPBearerNoneActive); - OstTrace1(TRACE_NORMAL, CNCMCOEXISTBEARERWATCHER_SETIPOVERUSBDEACTIVE, "Stop using Coexistence Bearer, result=%d", err); - iBearerState = EIPBearerNoneActive; - - return err; - } - -void CNcmCoexistBearerWatcher::RunL() - { - OstTrace1(TRACE_NORMAL, CNCMCOEXISTBEARERWATCHER_RUNL, "iStatus.Int()=%d", iStatus.Int()); - - if (KErrNone == iStatus.Int()) - { - TInt ret = DoActive(); - OstTrace1(TRACE_NORMAL, CNCMCOEXISTBEARERWATCHER_RUNL_DUP01, "DoActive()=%d", ret); - if (KErrNone == ret) - { - User::RequestComplete(iReportStatus, KErrNone); - } - else if (KErrInUse == ret) - { - iProperty.Subscribe(iStatus); - SetActive(); - } - else - { - User::RequestComplete(iReportStatus, ret); - } - } - else if (KErrCancel != iStatus.Int()) - { - User::RequestComplete(iReportStatus, iStatus.Int()); - } - } - -void CNcmCoexistBearerWatcher::DoCancel() - { - OstTraceFunctionEntry0(CNCMCOEXISTBEARERWATCHER_DOCANCEL); - iProperty.Cancel(); - User::RequestComplete(iReportStatus, KErrCancel); - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmcomminterfacesenderandreceiver.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmcomminterfacesenderandreceiver.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,265 +0,0 @@ -/* -* 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: -* implementation for read and write data from share chunk LDD -* -*/ - - -/** -@internalComponent -*/ - -#include "ncmcommunicationinterface.h" -#include "ncmengine.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmcomminterfacesenderandreceiverTraces.h" -#endif - - - -// ======== MEMBER FUNCTIONS ======== -// - -CNcmCommInterfaceSenderAndReceiver::CNcmCommInterfaceSenderAndReceiver(RDevUsbcScClient& aPort, CNcmCommunicationInterface& aComm) - : CActive(CActive::EPriorityStandard), - iPort(aPort), - iCommInterface(aComm), - iState(EUnInit) - { - CActiveScheduler::Add(this); - } - -CNcmCommInterfaceSenderAndReceiver* CNcmCommInterfaceSenderAndReceiver::NewL(RDevUsbcScClient& aPort, CNcmCommunicationInterface& aComm) - { - return new(ELeave) CNcmCommInterfaceSenderAndReceiver(aPort, aComm); - } - -CNcmCommInterfaceSenderAndReceiver::~CNcmCommInterfaceSenderAndReceiver() - { - Stop(); - } - -void CNcmCommInterfaceSenderAndReceiver::Start() - { - OstTraceFunctionEntry1( CNCMCOMMINTERFACESENDERANDRECEIVER_START_ENTRY, this ); - - TInt ret = iPort.OpenEndpoint(iEp0Buffer, KEp0Number); - if (ret != KErrNone) - { - OstTrace1( TRACE_FATAL, CNCMCOMMINTERFACESENDERANDRECEIVER_START1, "OpenEndpoint error %d", ret); - iCommInterface.ControlMsgError(EInternalError); - OstTraceFunctionExit1( CNCMCOMMINTERFACESENDERANDRECEIVER_START_EXIT, this ); - return; - } - iState = EIdle; - OstTraceFunctionExit1( CNCMCOMMINTERFACESENDERANDRECEIVER_START_EXIT_DUP1, this ); - } - -void CNcmCommInterfaceSenderAndReceiver::Stop() - { - OstTraceFunctionEntry0( CNCMCOMMINTERFACESENDERANDRECEIVER_STOP_ENTRY ); - - iState = EIdle; - Cancel(); - iEp0Buffer.Close(); - OstTraceFunctionExit0( CNCMCOMMINTERFACESENDERANDRECEIVER_STOP_EXIT ); - } - - -// -//Read data of aLength from LDD -// - -TInt CNcmCommInterfaceSenderAndReceiver::Read(TRequestStatus& aStatus, TDes8& aBuf, TInt aLength) - { - OstTraceFunctionEntry1( CNCMCOMMINTERFACESENDERANDRECEIVER_READ_ENTRY, this ); - OstTrace1( TRACE_NORMAL, CNCMCOMMINTERFACESENDERANDRECEIVER_READ, "CNcmCommInterfaceSenderAndReceiver::Read length %d", aLength ); - - iCompleteStatus = &aStatus; - *iCompleteStatus = KRequestPending; - if (iState != EIdle) - { - OstTrace0( TRACE_FATAL, CNCMCOMMINTERFACESENDERANDRECEIVER_READ_DUP1, "CNcmCommInterfaceSenderAndReceiver Read In Use" ); - OstTraceFunctionExit1( CNCMCOMMINTERFACESENDERANDRECEIVER_READ_EXIT, this ); - return KErrInUse; - } - iReceiveBuf = &aBuf; - iReceiveBuf->Zero(); - iToReceiveLength = aLength; - iState = EReceiving; - ReadData(); - OstTraceFunctionExit1( CNCMCOMMINTERFACESENDERANDRECEIVER_READ_EXIT_DUP1, this ); - return KErrNone; - } - -// -//write aLength data to ldd -// -TInt CNcmCommInterfaceSenderAndReceiver::Write(TRequestStatus& aStatus, TDesC8& aBuf, TInt aLength) - { - OstTraceFunctionEntry1( CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE_ENTRY, this ); - OstTrace1( TRACE_NORMAL, CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE, "CNcmCommInterfaceSenderAndReceiver::Write length %d", aLength ); - - iCompleteStatus = &aStatus; - *iCompleteStatus = KRequestPending; - - if (iState != EIdle) - { - OstTrace0( TRACE_FATAL, CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE1, "CNcmCommInterfaceSenderAndReceiver::Write in Use" ); - OstTraceFunctionExit1( CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE_EXIT, this ); - return KErrInUse; - } - - TAny *buf; - TUint size; - TInt ret = iEp0Buffer.GetInBufferRange(buf, size); - if (ret != KErrNone) - { - OstTrace0( TRACE_FATAL, CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE2, "CNcmCommInterfaceSenderAndReceiver::Write in Use" ); - OstTraceFunctionExit1( CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE_EXIT_DUP1, this ); - return ret; - } - else if (size < aLength) - { - OstTrace0( TRACE_FATAL, CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE3, "write data is bigger than ldd buffer size" ); - OstTraceFunctionExit1( CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE_EXIT_DUP2, this ); - return KErrArgument; - } - - TPtr8 writeBuf((TUint8 *)buf, size); - writeBuf.Copy(aBuf.Ptr(), aLength); - ret = iEp0Buffer.WriteBuffer(buf, writeBuf.Size(), ETrue, iStatus); - if (ret != KErrNone) - { - OstTrace1( TRACE_FATAL, CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE4, "WriteBuffer error %d", ret ); - OstTraceFunctionExit1( CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE_EXIT_DUP3, this ); - return ret; - } - iState = ESending; - SetActive(); - OstTraceFunctionExit1( CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE_EXIT_DUP4, this ); - return KErrNone; - } - - - -// -//Read data from USB share chunk LDD -// -void CNcmCommInterfaceSenderAndReceiver::ReadData() - { - OstTraceFunctionEntry1( CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA_ENTRY, this ); - TInt ret; - TAny* buf; - TUint8* receivebuf; - TUint receiveLen; - TBool zlp; - - FOREVER - { - ret = iEp0Buffer.GetBuffer(buf, receiveLen, zlp, iStatus, iToReceiveLength); - receivebuf = (TUint8*)buf; - if (ret == TEndpointBuffer::KStateChange) - { - OstTrace0( TRACE_NORMAL, CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA, "receive state change, discard it" ); - continue; - } - - else if (ret == KErrCompletion) - { - OstTrace1( TRACE_NORMAL, CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA1, "read data length %d from ldd", receiveLen ); - if (receiveLen > iToReceiveLength) - { - User::RequestComplete(iCompleteStatus, KErrOverflow); - iState = EIdle; - OstTrace0( TRACE_NORMAL, CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA2,"data from ldd is bigger than receive buffer" ); - OstTraceFunctionExit1( CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA_EXIT, this ); - return; - } - - iReceiveBuf->Append(receivebuf, receiveLen); - iToReceiveLength -= receiveLen; - if (!iToReceiveLength) - { - User::RequestComplete(iCompleteStatus, KErrNone); - iState = EIdle; - OstTrace0( TRACE_NORMAL, CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA3,"Complete read request" ); - OstTraceFunctionExit1( CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA_EXIT_DUP1, this ); - return; - } - continue; - } - else if (ret == KErrNone) - { - break; - } - else - { - OstTrace1( TRACE_NORMAL, CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA4, "GetBuffer error %d", ret); - User::RequestComplete(iCompleteStatus, KErrNone); - iState = EIdle; - OstTraceFunctionExit1( CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA_EXIT_DUP2, this ); - return; - } - } - SetActive(); - OstTraceFunctionExit1( CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA_EXIT_DUP3, this ); - } - -// -//RunL, looply receive data from share chunk LDD until receive all required data -// -void CNcmCommInterfaceSenderAndReceiver::RunL() - { - OstTraceFunctionEntry1( CNCMCOMMINTERFACESENDERANDRECEIVER_RUNL_ENTRY, this ); - if(iStatus.Int() != KErrNone) - { - if (KErrCancel == iStatus.Int() ) - { - OstTrace0( TRACE_NORMAL, CNCMCOMMINTERFACESENDERANDRECEIVER_RUNL,"CNcmCommInterfaceSenderAndReceiver, control channel is cancelled" ); - } - else - { - OstTrace1( TRACE_NORMAL, CNCMCOMMINTERFACESENDERANDRECEIVER_RUNL1, "CNcmCommInterfaceSenderAndReceiver::RunL error %d", iStatus.Int()); - } - User::RequestComplete(iCompleteStatus, iStatus.Int()); - } - else - { - if (iState == EReceiving) - { - ReadData(); - } - else if (iState == ESending) - { - User::RequestComplete(iCompleteStatus, KErrNone); - iState = EIdle; - OstTrace0( TRACE_NORMAL, CNCMCOMMINTERFACESENDERANDRECEIVER_RUNL2,"Complete write request" ); - } - } - OstTraceFunctionExit1( CNCMCOMMINTERFACESENDERANDRECEIVER_RUNL_EXIT, this ); - } - -// -//Cancel the outgoing read request -// -void CNcmCommInterfaceSenderAndReceiver::DoCancel() - { - OstTraceFunctionEntry1( CNCMCOMMINTERFACESENDERANDRECEIVER_DOCANCEL_ENTRY, this ); - iPort.ReadCancel(KUsbcScEndpointZero); - iPort.WriteCancel(KUsbcScEndpointZero); - OstTraceFunctionExit1( CNCMCOMMINTERFACESENDERANDRECEIVER_DOCANCEL_EXIT, this ); - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmcommunicationinterface.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmcommunicationinterface.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,522 +0,0 @@ -/* -* 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: -* implementation of NCM communication interface class -* -*/ - - -#include -#include "ncmcommunicationinterface.h" -#include "ncmnotificationdescriptor.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmcommunicationinterfaceTraces.h" -#endif - - - -const TUint KUsbRequestLengthIdx = 6; -const TUint KUsbRequestTypeIdx = 1; -const TInt KIntEndpoint = 1; -const TInt KNotificationRequestType = 0xA1; - - -#if defined(_DEBUG) -_LIT(KNcmCommInterfacePanic, "UsbNcmComm"); // must be <=16 chars -#endif - - -// Panic codes -enum TNcmCommPanicCode - { - ENcmCommWrongSetupLength = 1, - ENcmCommWrongDataLength, - ENcmCommWriteError, - ENcmCMEndMark - }; - - -// ======== MEMBER FUNCTIONS ======== -// - -CNcmCommunicationInterface::CNcmCommunicationInterface(MNcmControlObserver& aEngine, RDevUsbcScClient& aLdd) : CActive(CActive::EPriorityHigh), - iEngine(aEngine), iPort(aLdd) - { - CActiveScheduler::Add(this); - } - -void CNcmCommunicationInterface::ConstructL() - { - iSenderAndReceiver = CNcmCommInterfaceSenderAndReceiver::NewL(iPort, *this); - } - -CNcmCommunicationInterface* CNcmCommunicationInterface::NewL(MNcmControlObserver& aEngine, RDevUsbcScClient& aLdd) - { - OstTraceFunctionEntry0( CNCMCOMMUNICATIONINTERFACE_NEWL_ENTRY ); - CNcmCommunicationInterface *self=new (ELeave) CNcmCommunicationInterface(aEngine, aLdd); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - OstTraceFunctionExit0( CNCMCOMMUNICATIONINTERFACE_NEWL_EXIT ); - return self; - } - -CNcmCommunicationInterface::~CNcmCommunicationInterface() - { - OstTraceFunctionEntry1( CNCMCOMMUNICATIONINTERFACE_CNCMCOMMUNICATIONINTERFACE_ENTRY, this ); - - Cancel(); - delete iSenderAndReceiver; - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_CNCMCOMMUNICATIONINTERFACE_EXIT, this ); - } - -// -//Start the control channel of NCM -// -TInt CNcmCommunicationInterface::Start() - { - OstTraceFunctionEntry1( CNCMCOMMUNICATIONINTERFACE_START_ENTRY, this ); - if (iStarted) - { - OstTrace0( TRACE_WARNING, CNCMCOMMUNICATIONINTERFACE_START, "CNcmCommunicationInterface, already started!" ); - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_START_EXIT, this ); - return KErrInUse; - } - - TInt ret = GetInterfaceNumber(); - if (ret != KErrNone) - { - OstTrace1( TRACE_FATAL, CNCMCOMMUNICATIONINTERFACE_START1, "GetInterfaceNumber failed ret=%d", ret); - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_START_EXIT_DUP1, this ); - return ret; - } - - iStarted = ETrue; - iRWState = EStateInitial; - - iSenderAndReceiver->Start(); - - //force a call to RunL - SetActive(); - TRequestStatus* status=&iStatus; - User::RequestComplete(status, KErrNone); - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_START_EXIT_DUP2, this ); - return KErrNone; - } - -// -//Listen on the ep0 to receive the NCM control message from host -// -void CNcmCommunicationInterface::ReadSetup() - { - OstTraceFunctionEntry1( CNCMCOMMUNICATIONINTERFACE_READSETUP_ENTRY, this ); - iRWState = EStateReadSetup; - iRequestType = 0; - iDataStageLength = 0; - TInt ret = iSenderAndReceiver->Read(iStatus, iSetupPacket, KSetupPacketLength); - - if (ret != KErrNone) - { - OstTrace1( TRACE_FATAL, CNCMCOMMUNICATIONINTERFACE_READSETUP, "read setup packet error %d", ret); - ControlMsgError(EInternalError); - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_READSETUP_EXIT, this ); - return; - } - SetActive(); - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_READSETUP_EXIT_DUP1, this ); - } - - -// -//decode the setup packet to get command information. -// -void CNcmCommunicationInterface::DecodeSetup() - { - OstTraceFunctionEntry1( CNCMCOMMUNICATIONINTERFACE_DECODESETUP_ENTRY, this ); - - __ASSERT_DEBUG(iSetupPacket.Length()==KSetupPacketLength, - User::Panic(KNcmCommInterfacePanic, ENcmCommWrongSetupLength)); - - iRequestType = iSetupPacket[KUsbRequestTypeIdx]; - iDataStageLength = LittleEndian::Get16(&iSetupPacket[KUsbRequestLengthIdx]); - - switch (iRequestType) - { - case EGetNtbParameters: - if (iDataStageLength != KNtbParamStructLength) - { - ControlMsgError(EInvalidLengthToRead); - break; - } - iEngine.HandleGetNtbParam(iDataBuffer); - __ASSERT_DEBUG(iDataBuffer.Length()==KNtbParamStructLength, - User::Panic(KNcmCommInterfacePanic, ENcmCommWrongDataLength)); - WriteDataIn(); - break; - - case EGetNtbInputSize: - if (iDataStageLength != KNtbInputSizeStructLength) - { - ControlMsgError(EInvalidLengthToRead); - break; - } - iEngine.HandleGetNtbInputSize(iDataBuffer); - __ASSERT_DEBUG(iDataBuffer.Length()==KNtbInputSizeStructLength, - User::Panic(KNcmCommInterfacePanic, ENcmCommWrongDataLength)); - WriteDataIn(); - break; - - case ESetNtbInputSize: - if (iDataStageLength != KNtbInputSizeStructLength) - { - ControlMsgError(EInvalidLengthToRead); - break; - } - ReadDataOut(); - break; - default: - TInt ret = iPort.EndpointZeroRequestError(); - OstTrace1( TRACE_ERROR, CNCMCOMMUNICATIONINTERFACE_DECODESETUP, "unsupport request, halt endpoint with EndpointZeroRequestError %d", ret); - ReadSetup(); - break; - } - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_DECODESETUP_EXIT, this ); - } - - - -// -//Read the raw data of a control request message from host -// -void CNcmCommunicationInterface::ReadDataOut() - { - OstTraceFunctionEntry1( CNCMCOMMUNICATIONINTERFACE_READDATAOUT_ENTRY, this ); - iRWState = EStateReadDataout; - iSenderAndReceiver->Read(iStatus, iDataBuffer, iDataStageLength); - SetActive(); - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_READDATAOUT_EXIT, this ); - } - - - - -// -//Parse the data out from host to specific NCM control message -// -void CNcmCommunicationInterface::ParseDataOut() - { - OstTraceFunctionEntry1( CNCMCOMMUNICATIONINTERFACE_PARSEDATAOUT_ENTRY, this ); - - __ASSERT_DEBUG(iDataBuffer.Length()>0, - User::Panic(KNcmCommInterfacePanic, ENcmCommWrongDataLength)); - - TInt ret = KErrNone; - switch (iRequestType) - { - case ESetNtbInputSize: - ret = iEngine.HandleSetNtbInputSize(iDataBuffer); - break; - default: - ret = KErrNotSupported; - break; - } - - if (ret == KErrNone) - { - iPort.SendEp0StatusPacket(); - } - else - { - OstTrace1( TRACE_WARNING, CNCMCOMMUNICATIONINTERFACE_PARSEDATAOUT, "handle request iRequestType error %d stall endpoint", ret); - iPort.EndpointZeroRequestError(); - } - ReadSetup(); - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_PARSEDATAOUT_EXIT, this ); - } - -// -// send connection status notification, aConnected = ETrue if connection up, otherwise EFalse if connection discnnected -// -TInt CNcmCommunicationInterface::SendConnectionNotification(TBool aConnected) - { - OstTraceFunctionEntry1( CNCMCOMMUNICATIONINTERFACE_SENDCONNECTIONNOTIFICATION_ENTRY, this ); - const TUint8 KConnectionNotificationCode = 0x00; - const TUint16 KConnectedCode = 0x0001; - const TUint16 KDisconnectCode = 0x0000; - - TUSBNotificationNetworkConnection netNotify; - netNotify.iRequestType = KNotificationRequestType; - netNotify.iNotification = KConnectionNotificationCode; - netNotify.iValue = (aConnected)?KConnectedCode:KDisconnectCode; - netNotify.iIndex = iInterfaceNumber; - netNotify.iLength = 0; - - return WriteInterruptData(KIntEndpoint, netNotify.Des(), - netNotify.Des().Length()); - } - -// -// send speed notification -// -TInt CNcmCommunicationInterface::SendSpeedNotification(TInt aUSBitRate, TInt aDSBitRate) - { - OstTraceFunctionEntry1( CNCMCOMMUNICATIONINTERFACE_SENDSPEEDNOTIFICATION_ENTRY, this ); - const TUint8 KSpeedNotificationCode = 0x2A; - - TUSBNotificationConnectionSpeedChange speedNotify; - speedNotify.iRequestType = KNotificationRequestType; - speedNotify.iNotification = KSpeedNotificationCode; - speedNotify.iValue = 0x00; - speedNotify.iIndex = iInterfaceNumber; - speedNotify.iLength = 0x08; - speedNotify.iUSBitRate = aUSBitRate; - speedNotify.iDSBitRate = aDSBitRate; - - return WriteInterruptData(KIntEndpoint, speedNotify.Des(), - speedNotify.Des().Length()); - } - - -// -//According to the receving request message, send back a response to the host -// -void CNcmCommunicationInterface::WriteDataIn() - { - OstTraceFunctionEntry1( CNCMCOMMUNICATIONINTERFACE_WRITEDATAIN_ENTRY, this ); - - iRWState = EStateWriteDatain; - TInt ret = iSenderAndReceiver->Write(iStatus, iDataBuffer, iDataBuffer.Length()); - __ASSERT_DEBUG(ret==KErrNone, User::Panic(KNcmCommInterfacePanic, ENcmCommWriteError)); - SetActive(); - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_WRITEDATAIN_EXIT, this ); - } - -// -//Cancel the outgoing request -// -void CNcmCommunicationInterface::DoCancel() - { - OstTraceFunctionEntry1( CNCMCOMMUNICATIONINTERFACE_DOCANCEL_ENTRY, this ); - TRequestStatus* status = &iStatus; - User::RequestComplete(status, KErrCancel); - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_DOCANCEL_EXIT, this ); - } - -// -//Stop the control channel to stop the NCM -// -void CNcmCommunicationInterface::Stop() - { - OstTraceFunctionEntry1( CNCMCOMMUNICATIONINTERFACE_STOP_ENTRY, this ); - iStarted = EFalse; - iSenderAndReceiver->Stop(); - Cancel(); - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_STOP_EXIT, this ); - } - -// -//AO RunL -// -void CNcmCommunicationInterface::RunL() - { - OstTraceFunctionEntry1( CNCMCOMMUNICATIONINTERFACE_RUNL_ENTRY, this ); - if(iStatus.Int() != KErrNone) - { - if (KErrCancel == iStatus.Int() ) - { - } - else - { - ControlMsgError(EInternalError); - } - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_RUNL_EXIT, this ); - return; - } - - switch(iRWState) - { - case EStateInitial: - { - ReadSetup(); - break; - } - - case EStateReadSetup: - { - DecodeSetup(); - break; - } - - case EStateReadDataout: - { - ParseDataOut(); - break; - } - - case EStateWriteDatain: - { - ReadSetup(); - break; - } - } - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_RUNL_EXIT_DUP1, this ); - } - - -// -//Any fatal error occurs when reading/sending a NCM control message via USB interface -// -void CNcmCommunicationInterface::ControlMsgError(TNcmCommErrorCode aCode) - { - OstTraceFunctionEntry1( CNCMCOMMUNICATIONINTERFACE_CONTROLMSGERROR_ENTRY, this ); - OstTrace1( TRACE_NORMAL, CNCMCOMMUNICATIONINTERFACE_CONTROLMSGERROR, "CNcmCommunicationInterface, Handle Ncm Control Message with err=%d", aCode); - - // Stall bus, there's nothing else we can do - iPort.EndpointZeroRequestError(); - iEngine.ControlError(aCode); - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_CONTROLMSGERROR_EXIT, this ); - } - - -TInt CNcmCommunicationInterface::WriteInterruptData(TInt aEndPoint, - TDesC8& aDes, - TInt aLength) - - { - OstTraceFunctionEntry1( CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA_ENTRY, this ); - - TInt ret; - RTimer timer; - ret = timer.CreateLocal(); - if ( ret ) - { - OstTrace1( TRACE_FATAL, CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA, "\ttimer.CreateLocal = %d- returning", ret); - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA_EXIT, this ); - return ret; - } - TRequestStatus status; - TRequestStatus timerStatus; - - TEndpointBuffer epBuffer; - ret = iPort.OpenEndpoint(epBuffer, aEndPoint); - if (ret != KErrNone) - { - timer.Close(); - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA_EXIT_DUP1, this ); - return ret; - } - - TAny *buf; - TUint size; - ret = epBuffer.GetInBufferRange(buf, size); - if (ret != KErrNone) - { - timer.Close(); - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA_EXIT_DUP2, this ); - return ret; - } - else if (size < aLength) - { - timer.Close(); - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA_EXIT_DUP3, this ); - return KErrArgument; - } - - TPtr8 writeBuf((TUint8 *)buf, size); - writeBuf.Copy(aDes.Ptr(), aLength); - ret = epBuffer.WriteBuffer(buf, writeBuf.Size(), ETrue, status); - if (ret != KErrNone) - { - timer.Close(); - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA_EXIT_DUP4, this ); - return ret; - } - - const TInt KWriteDataTimeout = 1000000; - timer.After(timerStatus, KWriteDataTimeout); - User::WaitForRequest(status, timerStatus); - if ( timerStatus != KRequestPending ) - { - // Timeout occurred, silently ignore error condition. - // Assuming that the line has been disconnected - OstTrace0( TRACE_ERROR, CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA1, "CNcmCommunicationInterface::WriteInterruptData() - Timeout occurred"); - iPort.WriteCancel(epBuffer.BufferNumber()); - User::WaitForRequest(status); - ret = timerStatus.Int(); - } - else - { - OstTrace0( TRACE_ERROR, CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA2, "CNcmCommunicationInterface::WriteInterruptData() - Write completed"); - timer.Cancel(); - User::WaitForRequest(timerStatus); - ret = status.Int(); - } - - epBuffer.Close(); - timer.Close(); - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA_EXIT_DUP5, this ); - return ret; - } - - -// -// Get interface number -// -TInt CNcmCommunicationInterface::GetInterfaceNumber() - { - OstTraceFunctionEntry1( CNCMCOMMUNICATIONINTERFACE_GETINTERFACENUMBER_ENTRY, this ); - - TInt interfaceSize = 0; - // 2 is where the interface number is, according to the LDD API - const TInt intNumOffsetInDes = 2; - - // 0 means the main interface in the LDD API - TInt res = iPort.GetInterfaceDescriptorSize(0, interfaceSize); - - if ( res ) - { - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_GETINTERFACENUMBER_EXIT, this ); - return res; - } - - HBufC8* interfaceBuf = HBufC8::New(interfaceSize); - if ( !interfaceBuf ) - { - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_GETINTERFACENUMBER_EXIT_DUP1, this ); - return KErrNoMemory; - } - - TPtr8 interfacePtr = interfaceBuf->Des(); - interfacePtr.SetLength(0); - // 0 means the main interface in the LDD API - res = iPort.GetInterfaceDescriptor(0, interfacePtr); - - if ( res ) - { - delete interfaceBuf; - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_GETINTERFACENUMBER_EXIT_DUP2, this ); - return res; - } - - const TUint8* buffer = reinterpret_cast(interfacePtr.Ptr()); - iInterfaceNumber = buffer[intNumOffsetInDes]; - - delete interfaceBuf; - OstTraceFunctionExit1( CNCMCOMMUNICATIONINTERFACE_GETINTERFACENUMBER_EXIT_DUP3, this ); - return KErrNone; - } - - - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmdatainterface.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmdatainterface.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,309 +0,0 @@ -/* -* 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 - -#ifndef __OVER_DUMMYUSBSCLDD__ -#include //EEndPoint2 -#else -#include -#endif -#include "ncmdatainterface.h" -#include "ncmdatareceiver.h" -#include "ncmdatasender.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmdatainterfaceTraces.h" -#endif - - - - -const TInt KAltSetting1 = 1; -const TInt KAltSetting0 = 0; - - -CNcmDataInterface* CNcmDataInterface::NewL(MNcmDataObserver& aEngine, - RDevUsbcScClient& aLdd) - { - CNcmDataInterface *self = new (ELeave) CNcmDataInterface(aEngine, aLdd); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -CNcmDataInterface::CNcmDataInterface(MNcmDataObserver& aEngine, - RDevUsbcScClient& aLdd) : - CActive(CActive::EPriorityStandard), iEngine(aEngine), iLdd(aLdd) - { - CActiveScheduler::Add(this); - } - -void CNcmDataInterface::ConstructL() - { - OstTraceFunctionEntry0(CNCMDATAINTERFACE_CONSTRUCTL); - - iReceiver = CNcmDataReceiver::NewL(iLdd, *this); - iSender = CNcmDataSender::NewL(iLdd, *this); - OstTraceFunctionExit0(CNCMDATAINTERFACE_CONSTRUCTL_DUP01); - } - -CNcmDataInterface::~CNcmDataInterface() - { - OstTraceFunctionEntry0(CNCMDATAINTERFACE_CNCMDATAINTERFACE_DUP01); - Cancel(); - - delete iReceiver; - delete iSender; - OstTraceFunctionExit0(CNCMDATAINTERFACE_CNCMDATAINTERFACE_DUP02); - } - -/** - Start the NCM data channel - */ -void CNcmDataInterface::Start() - { - OstTraceFunctionEntry0(CNCMDATAINTERFACE_START); - if (!iStarted) - { - iReceiver->Start(); - iSender->Start(); - iStarted = ETrue; - } - OstTraceFunctionExit0(CNCMDATAINTERFACE_START_DUP01); - } - -/** - Stop the NCM data channel - */ -void CNcmDataInterface::Stop() - { - OstTraceFunctionEntry0(CNCMDATAINTERFACE_STOP); - if (iStarted) - { - iReceiver->Stop(); - iSender->Stop(); - iStarted = EFalse; - - //after stop(). - if (KAltSetting1 == iAltSetting) - { - - iAltSetting = KAltSetting0; - } - } - OstTraceFunctionExit0(CNCMDATAINTERFACE_STOP_DUP01); - } - -/** - Send packet data from upper link to NCM host - */ -TInt CNcmDataInterface::Send(RMBufChain &aPacket) - { - const TInt KContinue = 1; - const TInt KStop = 0; - - TInt ret = iSender->Send(aPacket); - if (ret == KErrNone) - { - return KContinue; - } - else if (ret == KErrNotReady || ret == KErrCongestion) - { - return KStop; - } - else - { - iEngine.DataError(ret); - return KStop; - } - } - -/** - * Acitve this AO to monitor the LDD's alt-setting changes. - */ -void CNcmDataInterface::ActivateLdd() - { - TInt alt = 0; - TInt ret = KErrNone; - - ret = iLdd.GetAlternateSetting(alt); - OstTraceExt2(TRACE_NORMAL, CNCMDATAINTERFACE_ACTIVATELDD, "ActivateLDD:alt=%d, ret=%d", alt, ret); - - if (KErrNone == ret) - { - if (iAltSetting == alt) - { - iLdd.AlternateDeviceStatusNotify(iStatus, iIfState); - SetActive(); - } - else - { - TRequestStatus* status = &iStatus; - iStatus = KRequestPending; - iIfState = KUsbAlternateSetting | alt; - SetActive(); - - User::RequestComplete(status, KErrNone); - } - } - else - { - //It's possible when Usb Device Status is not configed. - iLdd.AlternateDeviceStatusNotify(iStatus, iIfState); - SetActive(); - } - } - -void CNcmDataInterface::RunL() - { - OstTraceExt2(TRACE_NORMAL, CNCMDATAINTERFACE_RUNL, "State=%x, status=%d", iIfState, iStatus.Int()); - - if (KErrNone == iStatus.Int()) - { - iLdd.AlternateDeviceStatusNotify(iStatus, iIfState); - SetActive(); - - if (iIfState & KUsbAlternateSetting) - { - TInt ret = KErrNone; - iAltSetting = iIfState & ~KUsbAlternateSetting; - - if (KAltSetting1 == iAltSetting) - { - ret = iLdd.StartNextOutAlternateSetting(ETrue); - if (KAltSetting1 == ret) - { - iEngine.HandleAltSetting(iAltSetting); - } - else - { - iEngine.DataError(ret); - } - } - else - { - iEngine.HandleAltSetting(iAltSetting); - ret = iLdd.StartNextOutAlternateSetting(ETrue); - if (KAltSetting0 != ret) - { - iEngine.DataError(ret); - } - } - } - } - else - { - iEngine.DataError(iStatus.Int()); - } - } - -/** - * AO cancel. - */ -void CNcmDataInterface::DoCancel() - { - iLdd.AlternateDeviceStatusNotifyCancel(); - } - - -/** - * Get Connection Speed. (NB. Upstream's is the same as downstream's). - */ -TInt CNcmDataInterface::GetSpeed(TInt& aSpeed) - { - const TInt KHighSpeed = 480 * 1024 * 1024; - const TInt KFullSpeed = 12 * 1024 * 1024; - - if (iLdd.CurrentlyUsingHighSpeed()) - { - aSpeed = KHighSpeed; - } - else - { - aSpeed = KFullSpeed; - } - - return KErrNone; - - } -/** - * Get Ntb Input Size. - */ -TInt CNcmDataInterface::GetNtbInputSize(TDes8& aSize) - { - const TUint KNtbIntputSizeLength = 4; - aSize.SetLength(KNtbIntputSizeLength); - LittleEndian::Put32(&aSize[0], iSender->NtbInMaxSize()); - return KErrNone; - } - -/** - * Set Ntb Input Size. - */ -TInt CNcmDataInterface::SetNtbInputSize(TDesC8& aSize) - { - TInt size = LittleEndian::Get32(aSize.Ptr()); - return iSender->SetNtbInMaxSize(size, KAltSetting0==iAltSetting); - } - -/** - * Get Ntb Parameter. - */ -TInt CNcmDataInterface::GetNtbParam(TDes8& aParamBuf) - { - TNcmNtbInParam param; - - iSender->GetNtbParam(param); - - const TUint32 KNtbParamLength = 0x001C; - const TUint32 KNtbFormat = 0x0001; - const TUint KNtbParamLengthOffset = 0; //0 - const TUint KNtbFormatOffset = KNtbParamLengthOffset + 2; //2 - const TUint KNtbInMaxSizeOffset = KNtbFormatOffset + 2; //4 - const TUint KNtbInDivisorOffset = KNtbInMaxSizeOffset + 4; //8 - const TUint KNtbInPayloadRemainderOffset = KNtbInDivisorOffset + 2; //10 - const TUint KNtbInAlignmentOffset = KNtbInPayloadRemainderOffset + 2;//12 - const TUint KNtbOutMaxSizeOffset = KNtbInAlignmentOffset + 4; //16 - const TUint KNtbOutDivisorOffset = KNtbOutMaxSizeOffset + 4; //20 - const TUint KNtbOutPayloadRemainderOffset = KNtbOutDivisorOffset + 2;//22 - const TUint KNtbOutAlignmentOffset = KNtbOutPayloadRemainderOffset + 2;//24 - - aParamBuf.FillZ(KNtbParamLength); - LittleEndian::Put16(&aParamBuf[KNtbParamLengthOffset], KNtbParamLength); - LittleEndian::Put16(&aParamBuf[KNtbFormatOffset], KNtbFormat); - LittleEndian::Put32(&aParamBuf[KNtbInMaxSizeOffset], param.iNtbInMaxSize); - LittleEndian::Put16(&aParamBuf[KNtbInDivisorOffset], param.iNdpInDivisor); - LittleEndian::Put16(&aParamBuf[KNtbInPayloadRemainderOffset], param.iNdpInPayloadRemainder); - LittleEndian::Put16(&aParamBuf[KNtbInAlignmentOffset], param.iNdpInAlignment); - - //Tricky way: copy the Sender's parameter as the Receiver's. - LittleEndian::Put32(&aParamBuf[KNtbOutMaxSizeOffset], iReceiver->NtbOutMaxSize()); - LittleEndian::Put16(&aParamBuf[KNtbOutDivisorOffset], param.iNdpInDivisor); - LittleEndian::Put16(&aParamBuf[KNtbOutPayloadRemainderOffset], param.iNdpInPayloadRemainder); - LittleEndian::Put16(&aParamBuf[KNtbOutAlignmentOffset], param.iNdpInAlignment); - - return KErrNone; - } - -TInt CNcmDataInterface::SetInEpBufferSize(TUint aSize) - { - return iSender->SetInEpBufferSize(aSize); - } - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmdatareceiver.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmdatareceiver.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,204 +0,0 @@ -/* -* 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 __OVER_DUMMYUSBSCLDD__ -#include -#include //EEndPoint2 -#else -#include -#endif - -#include "ncmdatareceiver.h" -#include "ncmdatainterface.h" - -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmdatareceiverTraces.h" -#endif - - - -#ifdef _DEBUG -_LIT(KDataReceiverPanic, "DataRcvrPanic"); -#endif - -/** -@file -@internalComponent -*/ - -/** - * Constructor - */ -CNcmDataReceiver::CNcmDataReceiver(RDevUsbcScClient& aPort, CNcmDataInterface& aParent) : - CActive(CActive::EPriorityStandard), - iPort(aPort), - iParent(aParent) - { - CActiveScheduler::Add(this); - } - -/** - * NewL to create object. - */ -CNcmDataReceiver* CNcmDataReceiver::NewL(RDevUsbcScClient& aPort, CNcmDataInterface& aParent) - { - OstTraceFunctionEntry0(CNCMDATARECEIVER_NEWL); - - CNcmDataReceiver* self = new(ELeave) CNcmDataReceiver(aPort, aParent); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - - OstTraceFunctionExit1(CNCMDATARECEIVER_NEWL_DUP01, self); - return self; - } - -void CNcmDataReceiver::ConstructL() - { - iNtbParser = CNcmNtb16Parser::NewL(*this); - } - -/** - * Destructor - */ -CNcmDataReceiver::~CNcmDataReceiver() - { - OstTraceFunctionEntry0(CNCMDATARECEIVER_CNCMDATARECEIVER_DUP01); - - Cancel(); - delete iNtbParser; - } - -/** - * Start to receive and parse the USB data. - */ -void CNcmDataReceiver::Start() - { - OstTraceFunctionEntry0(CNCMDATARECEIVER_START); - - TInt ret = iPort.OpenEndpoint(iEpIn, EEndpoint2); - if (KErrNone != ret) - { - OstTrace1(TRACE_ERROR, CNCMDATARECEIVER_START_DUP01, "OpenEndpoint error=%d", ret); - iParent.DataError(ret); - OstTraceFunctionExit0(CNCMDATARECEIVER_START_DUP02); - return; - } - ReadData(); - OstTraceFunctionExit0(CNCMDATARECEIVER_START_DUP03); - } - -/** - * Read the data packet from NCM host - */ -void CNcmDataReceiver::ReadData() - { - OstTraceFunctionEntry0(CNCMDATARECEIVER_READDATA); - - const TInt KRetryCount = 3; - TInt ret = KErrNone; - TInt errCnt = KRetryCount; - - while(errCnt) - { - ret = iEpIn.TakeBuffer(reinterpret_cast(iBuf), iBufLen, iZlp, iStatus); - if (KErrCompletion == ret) - { - errCnt = KRetryCount; - if (iBufLen > 0) - { - OstTraceExt3(TRACE_NORMAL, CNCMDATARECEIVER_READDATA_DUP02, "iBuf=%x, iBufLen=%d, iZlp=%d", (TInt)iBuf, iBufLen, iZlp); - ret = iNtbParser->Parse(iBuf, iBufLen, iZlp); - } - } - else if (KErrNone == ret || KErrEof == ret) - { - break; - } - else - { - OstTrace1(TRACE_ERROR, CNCMDATARECEIVER_READDATA_DUP03, "TakeBuffer error=%d", ret); - errCnt --; - } - } - - if (KErrNone == ret) - { - SetActive(); - } - else if (KErrEof != ret) - { - iParent.DataError(ret); - } - - OstTraceFunctionExit0(CNCMDATARECEIVER_READDATA_DUP01); - } - -/** - * Expire the Share Chunk LDD's buffer (see above TakeBuffer) - */ -void CNcmDataReceiver::ExpireBuffer(TAny* aBuf) - { - TInt ret = iEpIn.Expire(aBuf); - __ASSERT_DEBUG(KErrNone==ret, User::Panic(KDataReceiverPanic, __LINE__)); - } - -/** - * Deliver the received packet data to upper link - */ -void CNcmDataReceiver::ProcessEtherFrame(RMBufPacket& aPacket) - { - iParent.ProcessDatagram(aPacket); - } - -/** - * RunL, a state machine to read the NCM packet data from NCM host - */ -void CNcmDataReceiver::RunL() - { - if(KErrNone == iStatus.Int()) - { - ReadData(); - } - else - { - OstTrace1(TRACE_ERROR, CNCMDATARECEIVER_RUNL, "iStatus.Int()=%d", iStatus.Int()); - iParent.DataError(iStatus.Int()); - } - } - -/** - * Cancel the outgoing read request - */ -void CNcmDataReceiver::DoCancel() - { - OstTraceFunctionEntry0(CNCMDATARECEIVER_DOCANCEL); - iPort.ReadCancel(iEpIn.BufferNumber()); - } - -void CNcmDataReceiver::Stop() - { - OstTraceFunctionEntry0(CNCMDATARECEIVER_STOP); - Cancel(); - iNtbParser->Reset(); - TInt ret = iEpIn.Close(); - - OstTraceFunctionExit0(CNCMDATARECEIVER_STOP_DUP01); - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmdatasender.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmdatasender.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,439 +0,0 @@ -/* -* 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 - -#ifndef __OVER_DUMMYUSBSCLDD__ -#include -#else -#include -#endif - -#include "ncmdatasender.h" -#include "ncmntb16builder.h" -#include "ncmdatainterface.h" -#include "ncmbuffermanager.h" -#include "ncmntbbuildsimplepolicy.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmdatasenderTraces.h" -#endif - - -// -//write buffer alignment value should get from share chunk LDD, current LDD has no API for this -//use a pagesize here instead -// -const TInt KAlignSize = 1024; - - -// ======== MEMBER FUNCTIONS ======== -// - -CNcmDataSender::CNcmDataSender(RDevUsbcScClient& aPort, CNcmDataInterface& aParent) : CActive(EPriorityStandard), - iPort(aPort), - iParent(aParent) - { - CActiveScheduler::Add(this); - } - -CNcmDataSender* CNcmDataSender::NewL(RDevUsbcScClient& aPort, CNcmDataInterface& aParent) - { - OstTraceFunctionEntry0( CNCMDATASENDER_NEWL_ENTRY ); - CNcmDataSender *self = new (ELeave) CNcmDataSender(aPort, aParent); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - OstTraceFunctionExit0( CNCMDATASENDER_NEWL_EXIT ); - return self; - } - -void CNcmDataSender::ConstructL() - { - - iNtbBuilder = CNcmNtb16Builder::NewL(*this); - iBufferManager = CNcmBufferManager::NewL(); - iBufferManager->SetAlignSize(KAlignSize); - iBuildPolicy = CNcmNtbBuildSimplePolicy::NewL(*iNtbBuilder); - iBuildPolicy->NtbBuilder().SetBuildPolicy(*iBuildPolicy); - iStarted = EFalse; - iStopSending = EFalse; - iIsSending = EFalse; - } - -CNcmDataSender::~CNcmDataSender() - { - Cancel(); - delete iNtbBuilder; - delete iBufferManager; - delete iBuildPolicy; - } - -// -// Start the sender -// -void CNcmDataSender::Start() - { - OstTraceFunctionEntry1( CNCMDATASENDER_START_ENTRY, this ); - if (iStarted) - { - OstTrace0( TRACE_ERROR, CNCMDATASENDER_START, "Alrealy start, return directly." ); - OstTraceFunctionExit1( CNCMDATASENDER_START_EXIT, this ); - return; - } - - if (iStopSending) - { - iParent.ResumeSending(); - iStopSending = EFalse; - } - - TInt ret = iPort.OpenEndpoint(iEpOut, EEndpoint1); - if (ret != KErrNone) - { - OstTrace1( TRACE_FATAL, CNCMDATASENDER_START1, "OpenEndpoint error %d", ret ); - iParent.DataError(ret); - OstTraceFunctionExit1( CNCMDATASENDER_START_EXIT_DUP1, this ); - return; - } - - TAny* buf = NULL; - TUint size; - ret = iEpOut.GetInBufferRange(buf, size); - if (ret != KErrNone) - { - OstTrace1( TRACE_FATAL, CNCMDATASENDER_START2, "iEpOut.GetInBufferRange failed ret=%d", ret ); - iParent.DataError(ret); - OstTraceFunctionExit1( CNCMDATASENDER_START_EXIT_DUP2, this ); - return; - } - else if (size < NtbInMaxSize()) - { - OstTrace0( TRACE_FATAL, CNCMDATASENDER_START3, "LDD buffer size is small than NTB size" ); - iParent.DataError(KErrArgument); - OstTraceFunctionExit1( CNCMDATASENDER_START_EXIT_DUP3, this ); - return; - } - OstTraceExt2( TRACE_NORMAL, CNCMDATASENDER_START4, "GetInBufferRange at 0x%x size %d", (TUint)buf, size); - - - iBufferManager->InitBufferArea(buf, size); - ret = iBufferManager->SetBufferCellSize(NtbInMaxSize()); - if (ret != KErrNone) - { - OstTrace1( TRACE_FATAL, CNCMDATASENDER_START5, "iBufferManager->SetBufferCellSize failed ret=%d", ret ); - iParent.DataError(KErrArgument); - OstTraceFunctionExit1( CNCMDATASENDER_START_EXIT_DUP4, this ); - return; - } - iBuildPolicy->UpdateBufferSize(NtbInMaxSize()); - iBuildPolicy->UpdateTotalBufferCount(iBufferManager->FreeBufferCount()); - iStarted = ETrue; - OstTraceFunctionExit1( CNCMDATASENDER_START_EXIT_DUP5, this ); - } - - -void CNcmDataSender::RunL() - { - OstTraceFunctionEntry1( CNCMDATASENDER_RUNL_ENTRY, this ); - OstTrace1( TRACE_NORMAL, CNCMDATASENDER_RUNL, "CNcmDataSender::RunL:Status=%d", iStatus.Int()); - - if(iStatus.Int() != KErrNone) - { - if (KErrCancel == iStatus.Int() ) - { - } - else - { - iParent.DataError(iStatus.Int()); - } - OstTraceFunctionExit1( CNCMDATASENDER_RUNL_EXIT, this ); - return; - } - SendNtbComplete(); - OstTraceFunctionExit1( CNCMDATASENDER_RUNL_EXIT_DUP1, this ); - } - -// -//Start a New Ntb in Builder -// - -TInt CNcmDataSender::StartNewNtb() - { - OstTraceFunctionEntry1( CNCMDATASENDER_STARTNEWNTB_ENTRY, this ); - TNcmBuffer ncmBuffer; - TInt ret = iBufferManager->GetBuffer(ncmBuffer); - if (ret == KErrNone || ret == KErrCongestion) - { - iNtbBuilder->StartNewNtb(ncmBuffer); - } - else - { - OstTrace1( TRACE_FATAL, CNCMDATASENDER_STARTNEWNTB, "iBufferManager->GetBuffer failed ret=%d", ret); - } - OstTraceFunctionExit1( CNCMDATASENDER_STARTNEWNTB_EXIT, this ); - return ret; - } - - -//add a Ethernet packet to current NTB -// - -TInt CNcmDataSender::Send(RMBufChain& aPacket) - { - OstTraceFunctionEntry1( CNCMDATASENDER_SEND_ENTRY, this ); - - if (!iStarted) - { - OstTrace0( TRACE_WARNING, CNCMDATASENDER_SEND1, "Sender is not started" ); - iStopSending = ETrue; - OstTraceFunctionExit1( CNCMDATASENDER_SEND_EXIT, this ); - return KErrNotReady; - } - - TInt ret = KErrNone; - if (!iNtbBuilder->IsNtbStarted()) - { - ret = StartNewNtb(); - if (ret != KErrNone && ret != KErrCongestion) - { - OstTraceFunctionExit1( CNCMDATASENDER_SEND_EXIT_DUP1, this ); - return ret; - } - } - - TBool isCongestion = (ret == KErrCongestion)?ETrue:EFalse; - - ret = iNtbBuilder->AppendPacket(aPacket); - - if (ret == KErrBufferFull) - { - //current NTB is full and can't add new packet, start a new NTB and insert packet to it - ret = StartNewNtb(); - if (ret == KErrNone) - { - ret = iNtbBuilder->AppendPacket(aPacket); - } - else if (ret == KErrCongestion) - { - isCongestion = ETrue; - ret = iNtbBuilder->AppendPacket(aPacket); - } - } - - if (isCongestion && ret == KErrNone) - { - OstTrace0( TRACE_NORMAL, CNCMDATASENDER_SEND2, "CNcmDataSender::Send congestion" ); - iStopSending = ETrue; - OstTraceFunctionExit1( CNCMDATASENDER_SEND_EXIT_DUP2, this ); - return KErrCongestion; - } - OstTraceFunctionExit1( CNCMDATASENDER_SEND_EXIT_DUP3, this ); - return ret; - } - -// -//Cancel the outgoing request of sending -// - -void CNcmDataSender::DoCancel() - { - OstTraceFunctionEntry1( CNCMDATASENDER_DOCANCEL_ENTRY, this ); - iPort.WriteCancel(iEpOut.BufferNumber()); - OstTraceFunctionExit1( CNCMDATASENDER_DOCANCEL_EXIT, this ); - } - -void CNcmDataSender::SendNtbPayload(TNcmBuffer& aBuf) - { - OstTraceFunctionEntry1( CNCMDATASENDER_SENDNTBPAYLOAD_ENTRY, this ); - OstTraceExt2( TRACE_NORMAL, CNCMDATASENDER_SENDNTBPAYLOAD, "SendNtbPayload:%08x, len=%d", (TUint)aBuf.iPtr, aBuf.iLen); - - if (iIsSending) - { - OstTrace0( TRACE_NORMAL, CNCMDATASENDER_SENDNTBPAYLOAD1, "SendNtbPayload: there is NTB on sending, store the buffer" ); - iTxArray.Append(aBuf); - OstTraceFunctionExit1( CNCMDATASENDER_SENDNTBPAYLOAD_EXIT, this ); - return; - } - - iSendingBuffer = aBuf; - iIsSending = ETrue; - - iStatus = KRequestPending; - TInt ret; - // - // compliant to NCM spec with Zlp case - // - if (aBuf.iLen == NtbInMaxSize()) - { - OstTrace0( TRACE_NORMAL, CNCMDATASENDER_SENDNTBPAYLOAD2, "iEpOut.WriteBuffer without zlp" ); - ret = iEpOut.WriteBuffer((TAny*)aBuf.iPtr, aBuf.iLen, EFalse, iStatus); - } - else - { - OstTrace0( TRACE_NORMAL, CNCMDATASENDER_SENDNTBPAYLOAD3, "iEpOut.WriteBuffer with zlp" ); - ret = iEpOut.WriteBuffer((TAny*)aBuf.iPtr, aBuf.iLen, ETrue, iStatus); - } - if (ret == KErrNone && !IsActive()) - { - SetActive(); - } - else - { - OstTrace1( TRACE_FATAL, CNCMDATASENDER_SENDNTBPAYLOAD4, "iEpOut.WriteBuffer failed ret = %d", ret); - iParent.DataError(ret); - } - OstTraceFunctionExit1( CNCMDATASENDER_SENDNTBPAYLOAD_EXIT_DUP1, this ); - return; - } - -// -// called when a sender request is completed by LDD -// - -void CNcmDataSender::SendNtbComplete() - { - OstTraceFunctionEntry1( CNCMDATASENDER_SENDNTBCOMPLETE_ENTRY, this ); - - iIsSending = EFalse; - iBufferManager->FreeBuffer(iSendingBuffer); - iBuildPolicy->UpdateFreeBufferCount(iBufferManager->FreeBufferCount()); - - // when buffer manage has enough buffers, notify networking to stop flow control - if (!iBufferManager->IsCongestion() && iStopSending) - { - iStopSending = EFalse; - iParent.ResumeSending(); - } - if (iTxArray.Count()) - { - OstTrace0( TRACE_NORMAL, CNCMDATASENDER_SENDNTBCOMPLETE3, "send NTB in sending queue" ); - SendNtbPayload(iTxArray[0]); - iTxArray.Remove(0); - } - OstTraceFunctionExit1( CNCMDATASENDER_SENDNTBCOMPLETE_EXIT, this ); - } - -void CNcmDataSender::GetNtbParam(TNcmNtbInParam& aParam) - { - iNtbBuilder->GetNtbParam(aParam); - } - -TInt CNcmDataSender::SetNtbInMaxSize(TInt aSize, TBool aIsAltZero) - { - OstTraceFunctionEntry1( CNCMDATASENDER_SETNTBINMAXSIZE_ENTRY, this ); - OstTrace1( TRACE_NORMAL, CNCMDATASENDER_SETNTBINMAXSIZE, "SetNtbInMaxSize %d", aSize); - - TInt ret = iNtbBuilder->SetNtbInMaxSize(aSize); - if (ret != KErrNone) - { - OstTrace1( TRACE_FATAL, CNCMDATASENDER_SETNTBINMAXSIZE1, "iNtbBuilder->SetNtbInMaxSize failed %d", ret); - OstTraceFunctionExit1( CNCMDATASENDER_SETNTBINMAXSIZE_EXIT, this ); - return ret; - } - -// -//if sender is not started, endpoint buffer is not setup, so does not call SetBufferCellSize -// - if (!iStarted) - { - OstTraceFunctionExit1( CNCMDATASENDER_SETNTBINMAXSIZE_EXIT_DUP1, this ); - return KErrNone; - } - -// if not in alternate setting 0, there may be data in buffer, so doesn't reset buffers. - if (!aIsAltZero) - { - OstTraceFunctionExit1( CNCMDATASENDER_SETNTBINMAXSIZE_EXIT_DUP2, this ); - return KErrNone; - } - - OstTraceFunctionExit1( CNCMDATASENDER_SETNTBINMAXSIZE_EXIT_DUP4, this ); - return KErrNone; - } - - -void CNcmDataSender::Stop() - { - OstTraceFunctionEntry1( CNCMDATASENDER_STOP_ENTRY, this ); - Cancel(); - iBuildPolicy->Cancel(); - iNtbBuilder->Reset(); - iTxArray.Reset(); - iEpOut.Close(); - iStopSending = EFalse; - iStarted = EFalse; - iIsSending = EFalse; - OstTraceFunctionExit1( CNCMDATASENDER_STOP_EXIT, this ); - } - -// call this function to notify the buffer size of In endpoint buffer size of LDD and adjust the MaxInNtbSize supported -// report to host - -TInt CNcmDataSender::SetInEpBufferSize(TUint aSize) - { - OstTraceFunctionEntry1( CNCMDATASENDER_SETINEPBUFFERSIZE_ENTRY, this ); - TInt ret = KErrNone; - TUint size = aSize; - - OstTrace1( TRACE_NORMAL, CNCMDATASENDER_SETINEPBUFFERSIZE, "SetInEpBufferSize aSize=%d", aSize); - - -// the buffer may not aligned, so decrease max possible offset due to aligment - size -= KAlignSize-1; - TInt ntbSize = iNtbBuilder->NtbInMaxSize(); - TInt cellSize = KAlignSize; - TInt minNtbInMaxSize = iNtbBuilder->MinNtbInMaxSize(); - TInt count; - TBool find = EFalse; - while (ntbSize >= minNtbInMaxSize) - { - cellSize = (ntbSize+KAlignSize-1)&~(KAlignSize-1); - count = size / cellSize; - if (count < iBufferManager->RequiredBufferCount()) - { - ntbSize /= 2; - continue; - } - find = ETrue; - break; - } - - if (ntbSize == iNtbBuilder->NtbInMaxSize()) - { - ret = KErrNone; - } - else if (find) - { - ret = iNtbBuilder->SetNtbInMaxSize(cellSize); - } - else - { - ret = KErrGeneral; - } - OstTraceFunctionExit1( CNCMDATASENDER_SETINEPBUFFERSIZE_EXIT, this ); - return ret; - } - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmengine.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmengine.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,506 +0,0 @@ -/* -* 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 "ncmengine.h" -#include "ncmpktdrv.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmengineTraces.h" -#endif - - - -const TUint8 KDataIFAltSet1 = 1; - -/** -Create a new CNcmControlEngine object. -*/ -CNcmEngine *CNcmEngine::NewL(CNcmPktDrv& aPktDrv) - { - OstTraceFunctionEntry0( CNCMENGINE_NEWL ); - - CNcmEngine *self=new (ELeave) CNcmEngine(aPktDrv); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - - OstTraceFunctionExit1( CNCMENGINE_NEWL_DUP01, self ); - return self; - } - -/** -Create the CNcmEngine object. -*/ -void CNcmEngine::ConstructL() - { - OstTraceFunctionEntry0( CNCMENGINE_CONSTRUCTL ); - - RandomMacAddressL(iSymbianMacAddress); - - iSharedStateManager = CNcmSharedStateManager::NewL(*this); - iDataInterface = CNcmDataInterface::NewL(*this, iDataLdd); - iCommInterface = CNcmCommunicationInterface::NewL(*this, iCommLdd); - - OstTraceFunctionExit0( CNCMENGINE_CONSTRUCTL_DUP01 ); - } - -/** -Constructor. -@param aPktDrv Pointer to NCM Packet Driver. -*/ -CNcmEngine::CNcmEngine(CNcmPktDrv& aPktDrv) : CActive(CActive::EPriorityStandard), - iPktDrv(aPktDrv) - { - CActiveScheduler::Add(this); - } - -/** -Destructor. -*/ -CNcmEngine::~CNcmEngine() - { - OstTraceFunctionEntry0( CNCMENGINE_CNCMENGINE_DUP10 ); - - //double check for possibly missed by PktDrvBase's StopInterface; - Stop(); - - delete iCommInterface; - delete iDataInterface; - delete iSharedStateManager; - - OstTraceFunctionExit0( CNCMENGINE_CNCMENGINE_DUP11 ); - } - -/** - * Initialize the DataInterface's and CommInterface's LDD instances with transferred handle. - */ -void CNcmEngine::InitLddL(const RMessagePtr2& aMsg) - { - OstTraceFunctionEntry0( CNCMENGINE_INITLDDL ); - - const TUint KCommLddOffset = 0; //0 - const TUint KCommChunkOffset = KCommLddOffset + 1; //1 - const TUint KDataLddOffset = KCommChunkOffset + 1; //2 - const TUint KDataChunkOffset = KDataLddOffset + 1; //3 - const TUint KHandlesInStackCount = 3; - - User::LeaveIfError(iCommLdd.Open(aMsg, KCommLddOffset, EOwnerProcess)); - CleanupClosePushL(iCommLdd); - - RChunk* chunk; - //Get the Ldd's RChunk, but don't own it. - User::LeaveIfError(iCommLdd.GetDataTransferChunk(chunk)); - - User::LeaveIfError(chunk->Open(aMsg, KCommChunkOffset, FALSE, EOwnerProcess)); - CleanupClosePushL(*chunk); - - User::LeaveIfError(iDataLdd.Open(aMsg, KDataLddOffset, EOwnerProcess)); - CleanupClosePushL(iDataLdd); - - User::LeaveIfError(iDataLdd.GetDataTransferChunk(chunk)); - User::LeaveIfError(chunk->Open(aMsg, KDataChunkOffset, FALSE, EOwnerProcess)); - - CleanupStack::Pop(KHandlesInStackCount); - - OstTraceFunctionExit0( CNCMENGINE_INITLDDL_DUP01 ); - } - -/** - * Start Engine to initialize LDD, and start monitor LDD device status changes. - */ -TInt CNcmEngine::Start(RMessagePtr2& aMsg) - { - OstTraceFunctionEntry0( CNCMENGINE_START ); - - __ASSERT_DEBUG(iEngineState == ENcmStateUninitialized, User::Panic(KEnginePanic, __LINE__)); - if (ENcmStateUninitialized != iEngineState) - { - OstTraceFunctionExitExt( CNCMENGINE_START_DUP10, this, KErrNotSupported ); - return KErrNotSupported; - } - - TRAPD(err, InitLddL(aMsg)); - if (KErrNone != err) - { - OstTrace1( TRACE_ERROR, CNCMENGINE_START_DUP01, "InitLdd return error=%d;", err ); - return err; - } - - if (KErrNone != iCommLdd.DeviceStatus(reinterpret_cast(iDeviceState))) - { - RChunk* commChunk = NULL; - RChunk* dataChunk = NULL; - iCommLdd.GetDataTransferChunk(commChunk); - iDataLdd.GetDataTransferChunk(dataChunk); - commChunk->Close(); - dataChunk->Close(); - iDataLdd.Close(); - iCommLdd.Close(); - OstTraceFunctionExitExt( CNCMENGINE_START_DUP11, this, KErrNotReady ); - return KErrNotReady; - } - OstTrace1( TRACE_NORMAL, CNCMENGINE_START_DUP02, "CommLdd DeviceStatus=%d", iDeviceState); - - if (EUsbcDeviceStateConfigured == iDeviceState) - { - iStatus = KRequestPending; - TRequestStatus* reportStatus = &iStatus; - SetActive(); - - User::RequestComplete(reportStatus, KErrNone); - } - else - { - iCommLdd.AlternateDeviceStatusNotify(iStatus, iDeviceState); - SetActive(); - } - - iDataInterface->ActivateLdd(); - - iEngineState = ENcmStateStarting; - - OstTraceFunctionExitExt( CNCMENGINE_START_DUP12, this, KErrNone ); - return KErrNone; - } - -/** - * Monitor the USB device State, Start/Stop Communication/Data Interface - */ -void CNcmEngine::RunL() - { - OstTraceExt2( TRACE_NORMAL, CNCMENGINE_RUNL, "iDeviceState=%d;iStatus.Int()=%d", iDeviceState, iStatus.Int() ); - - if (KErrNone == iStatus.Int()) - { - iCommLdd.AlternateDeviceStatusNotify(iStatus, iDeviceState); - SetActive(); - } - else - { - iPktDrv.FatalErrorNotification(iStatus.Int()); - Stop(); - return; - } - - switch(iDeviceState) - { - case EUsbcDeviceStateConfigured: - if (!iCommInterface->IsStarted()) - { - iCommInterface->Start(); - - StartDataLayer(); - } - break; - - case EUsbcDeviceStateSuspended: - StopDataLayer(); - break; - - case EUsbcDeviceStateUndefined: - - iDataLdd.ResetAltSetting(); - StopDataLayer(); - if (iCommInterface->IsStarted()) - { - iCommInterface->Stop(); - } - break; - - default: - //do nothing here. - break; - } - } - -/** -AO cancel -*/ -void CNcmEngine::DoCancel() - { - OstTraceFunctionEntry0( CNCMENGINE_DOCANCEL ); - iCommLdd.AlternateDeviceStatusNotifyCancel(); - } - -/** - * Fatal error report from Control Channel - */ -void CNcmEngine::ControlError(TInt aError) - { - OstTrace1( TRACE_NORMAL, CNCMENGINE_CONTROLERROR, "aError=%d", aError ); - - iPktDrv.FatalErrorNotification(aError); - Stop(); - } - -/** - *Enter the started state. - */ -void CNcmEngine::DoNcmStarted() - { - OstTraceFunctionEntry0( CNCMENGINE_DONCMSTARTED ); - - iDataInterface->Start(); - TInt speed = 0; - iDataInterface->GetSpeed(speed); - - iCommInterface->SendSpeedNotification(speed, speed); - iCommInterface->SendConnectionNotification(ETrue); - - __ASSERT_DEBUG(((iEngineState==ENcmStateStarting) || (iEngineState==ENcmStatePaused)), User::Panic(KEnginePanic, __LINE__)); - iEngineState = ENcmStateStarted; - iSharedStateManager->NotifyNcmConnected(); - } - -/** - *Start the data channel - */ -void CNcmEngine::StartDataLayer() - { - OstTraceFunctionEntry0( CNCMENGINE_STARTDATALAYER ); - - if (iDataInterface->IsStarted()) - { - OstTrace0( TRACE_WARNING, CNCMENGINE_STARTDATALAYER_DUP01, "The DataIf has already been started!" ); - - __ASSERT_DEBUG(0, User::Panic(KEnginePanic, __LINE__)); - return; - } - - if (KDataIFAltSet1 != iDataInterface->AltSetting()) - { - OstTrace0( TRACE_NORMAL, CNCMENGINE_STARTDATALAYER_DUP02, "Data Interface is not ready to start; it's fine!!" ); - return; - } - - TInt ret = iSharedStateManager->NotifyDhcpProvisionRequested(); - if (KErrAlreadyExists == ret) - { - DoNcmStarted(); - } - else - { - if (KErrNone != ret) - { - //minus error when try to set IPBearerCoexistence P&S key. just continue... - OstTrace1( TRACE_WARNING, CNCMENGINE_STARTDATALAYER_DUP03, "SharedStateManager issued dhcp request return error:;ret=%d", ret ); - } - - iCommInterface->SendConnectionNotification(EFalse); - - if (ENcmStatePaused == iEngineState) - { - iEngineState = ENcmStateStarting; - } - } - } - -/** - *Stop the data channel - */ -void CNcmEngine::StopDataLayer() - { - OstTraceFunctionEntry0( CNCMENGINE_STOPDATALAYER ); - - if (iDataInterface->IsStarted()) - { - __ASSERT_DEBUG((iEngineState==ENcmStateStarted), User::Panic(KEnginePanic, __LINE__)); - iEngineState = ENcmStatePaused; - iSharedStateManager->NotifyNcmDisconnected(KErrNone); - - iDataInterface->Stop(); - } - } - -/** - *Stop NCM - */ -void CNcmEngine::Stop() - { - OstTraceFunctionEntry0( CNCMENGINE_STOP ); - - if (ENcmStateStarted == iEngineState || - ENcmStatePaused == iEngineState || - ENcmStateStarting == iEngineState) - { - Cancel(); - iDataInterface->Cancel(); - - if (iDataInterface->IsStarted()) - { - iDataInterface->Stop(); - } - - if (iCommInterface->IsStarted()) - { - iCommInterface->Stop(); - } - - RChunk* commChunk = NULL; - RChunk* dataChunk = NULL; - - iCommLdd.GetDataTransferChunk(commChunk); - iDataLdd.GetDataTransferChunk(dataChunk); - commChunk->Close(); - dataChunk->Close(); - iDataLdd.Close(); - iCommLdd.Close(); - } - - if (ENcmStateStarted == iEngineState || - ENcmStateStarting == iEngineState) - { - iSharedStateManager->NotifyNcmDisconnected(KErrNone); - } - iEngineState = ENcmStateStopped; - } - -/** - * Send the ethernet frame to USB Host. -*/ -TInt CNcmEngine::Send(RMBufChain &aPacket) - { - OstTraceExt2( TRACE_NORMAL, CNCMENGINE_SEND, "aPacket=%x;aPacket.Length()=%d", ( TUint )&( aPacket ), aPacket.Length() ); - - return iDataInterface->Send(aPacket); - } - -/** -Get the Hardware address of the LAN Device -@return MAC address of the Symbian device -*/ -TUint8* CNcmEngine::InterfaceAddress() - { - OstTraceExt3( TRACE_NORMAL, CNCMENGINE_INTERFACEADDRESS, "Local MAC is 02:00:00:%02X:%02X:%02X.", iSymbianMacAddress[3], iSymbianMacAddress[4], iSymbianMacAddress[5]); - return static_cast(&iSymbianMacAddress[0]); - } - -void CNcmEngine::RandomMacAddressL(TNcmMacAddress& aMacAddress) - { - OstTrace1( TRACE_NORMAL, CNCMENGINE_RANDOMMACADDRESSL, "aMacAddress=%x", ( TUint )&( aMacAddress ) ); - //random the MAC address - aMacAddress.SetLength(KEthernetAddressLength); - const TUint KOUILength = 3; - const TInt len = KEthernetAddressLength - KOUILength; - - TPtr8 ptr(&aMacAddress[0] + KOUILength, len, len); - TRandom::RandomL(ptr); - - //mark it as locally managed address - aMacAddress[0] = 0x02; - aMacAddress[1] = 0x00; - aMacAddress[2] = 0x00; - } - -/** MControlInterfaceObserver - * Set Ntb Input Size. See NCM1.0 spec. - */ -TInt CNcmEngine::HandleSetNtbInputSize(TDes8& aSize) - { - OstTraceFunctionEntry1( CNCMENGINE_HANDLESETNTBINPUTSIZE, ( TUint )&( aSize ) ); - - return iDataInterface->SetNtbInputSize(aSize); - } - -/** - * Set Ntb Parameters. See NCM1.0 spec. - */ -TInt CNcmEngine::HandleGetNtbParam(TDes8& aReturnBuf) - { - OstTraceFunctionEntry1( CNCMENGINE_HANDLEGETNTBPARAM, ( TUint )&( aReturnBuf ) ); - - return iDataInterface->GetNtbParam(aReturnBuf); - } - -/** - * Get Ntb Input Size. See NCM1.0 spec. - */ -TInt CNcmEngine::HandleGetNtbInputSize(TDes8& aSize) - { - OstTraceFunctionEntry1( CNCMENGINE_HANDLEGETNTBINPUTSIZE, ( TUint )&( aSize ) ); - - return iDataInterface->GetNtbInputSize(aSize); - } - -/** - * Enable NCM connection by setting NCM speed & connection, when notified that DHCP Provison done successfully. - */ -void CNcmEngine::NotifyDhcpStarted() - { - OstTraceFunctionEntry0( CNCMENGINE_NOTIFYDHCPSTARTED ); - __ASSERT_DEBUG(!iDataInterface->IsStarted(), User::Panic(KEnginePanic, __LINE__)); - if (iDeviceState != EUsbcDeviceStateConfigured || KDataIFAltSet1 != iDataInterface->AltSetting()) - { - OstTraceExt2( TRACE_WARNING, CNCMENGINE_NOTIFYDHCPSTARTED_DUP01, "NotifyDhcpStarted comes so later;iDeviceState=%d;iDataInterface->AltSetting()=%d", iDeviceState, iDataInterface->AltSetting() ); - return; - } - - DoNcmStarted(); - } - -/** - *Upwards notify - * @param aPacket A Reference to a buffer holding data. - */ -void CNcmEngine::ProcessReceivedDatagram(RMBufPacket& aPacket) - { - OstTraceExt2( TRACE_NORMAL, CNCMENGINE_PROCESSRECEIVEDDATAGRAM, "aPacket=%x;aPacket.Length()=%d", ( TUint )&( aPacket ), aPacket.Length() ); - iPktDrv.ReceiveEthFrame(aPacket); - } - -/** - * Resume Sending is a notification call into NIF from the lower layer telling the NIF that a - * previous sending congestion situation has been cleared and it can accept more downstack data. - */ -void CNcmEngine::ResumeSending() - { - OstTraceFunctionEntry0( CNCMENGINE_RESUMESENDING ); - iPktDrv.ResumeSending(); - } - -/** - * Error report from Data Channel - */ -void CNcmEngine::DataError(TInt aError) - { - OstTrace1( TRACE_ERROR, CNCMENGINE_DATAERROR, "CNcmEngine::DataError;aError=%d", aError ); - - iPktDrv.FatalErrorNotification(aError); - } -/** - * Handle the data interface alt setting changes. - */ -void CNcmEngine::HandleAltSetting(TInt aIfAltSet) - { - OstTraceExt3( TRACE_NORMAL, CNCMENGINE_HANDLEALTSETTING, "CNcmEngine::HandleAltSetting;aIfAltSet=%d;iDataInterface->AltSetting()=%d;iDeviceState=%d", aIfAltSet, iDataInterface->AltSetting(), (TInt) iDeviceState ); - - if (KDataIFAltSet1 == aIfAltSet) - { - StartDataLayer(); - } - else - { - StopDataLayer(); - } - } - -TInt CNcmEngine::SetInEpBufferSize(TUint aSize) - { - OstTrace1( TRACE_NORMAL, CNCMENGINE_SETINEPBUFFERSIZE, "aSize=%u", aSize ); - return iDataInterface->SetInEpBufferSize(aSize); - } - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmnotificationdescriptor.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmnotificationdescriptor.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -/* -* 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: -* implementation for NCM notification message class -* -*/ - - -/** -@file -@internalComponent -*/ - - -#include -#include "ncmnotificationdescriptor.h" - - -// ======== MEMBER FUNCTIONS ======== -// - - -// -// This function packs the TUSBNotificationNetworkConnection class into a descriptor with -// the correct byte alignment for transmission on the USB bus. - - -TDes8& TUSBNotificationNetworkConnection::Des() - { - TUint index = 0; - - iBuffer.SetLength(KUSBNotificationNetworkConnection); - iBuffer[index++] = iRequestType; - iBuffer[index++] = iNotification; - LittleEndian::Put16(&iBuffer[index], iValue); - index += 2; - LittleEndian::Put16(&iBuffer[index], iIndex); - index += 2; - LittleEndian::Put16(&iBuffer[index], iLength); - return iBuffer; - } - -// -//This function packs the TUSBNotificationConnectionSpeedChange class into a descriptor with -//the correct byte alignment for transmission on the USB bus. - -TDes8& TUSBNotificationConnectionSpeedChange::Des() - { - TUint index = 0; - - iBuffer.SetLength(KUSBNotificationConnectionSpeedChange); - iBuffer[index++] = iRequestType; - iBuffer[index++] = iNotification; - LittleEndian::Put16(&iBuffer[index], iValue); - index += 2; - LittleEndian::Put16(&iBuffer[index], iIndex); - index += 2; - LittleEndian::Put16(&iBuffer[index], iLength); - index += 2; - LittleEndian::Put32(&iBuffer[index], iUSBitRate); - index += 4; - LittleEndian::Put32(&iBuffer[index], iDSBitRate); - return iBuffer; - } - - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmntb16builder.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmntb16builder.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,269 +0,0 @@ -/* -* 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: -* implementation for NTB16 build class -* -*/ - - - -/** -@file -@internalComponent -*/ - - - -#include -#ifndef __OVER_DUMMYUSBSCLDD__ -#include -#else -#include -#endif -#include "ncmntb16builder.h" -#include "ncmntbbuildpolicy.h" -#include "ncmpktdrvcommon.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmntb16builderTraces.h" -#endif - - -const TInt KNtb16InMaxSize = 32768; - - -const TInt KNth16Signature = 0x484D434E; -const TInt KNth16Length = 0x0C; - -const TInt KNdp16Signature = 0x304D434E; -const TInt KNdp16HeaderSize = 8; -const TInt KNdp16EntrySize = 4; -const TInt KNdp16InDivisor = 4; -const TInt KNdp16InRemainder = 0; -const TInt KNdp16InAlignment = 4; - - -// ======== MEMBER FUNCTIONS ======== -// - - -CNcmNtbBuilder* CNcmNtb16Builder::NewL(MNcmNtbBuildObserver& aObserver) - { - OstTraceFunctionEntry1( CNCMNTB16BUILDER_NEWL_ENTRY, ( TUint )&( aObserver ) ); - CNcmNtb16Builder *self=new (ELeave) CNcmNtb16Builder(aObserver); - self->ConstructL(); - OstTraceFunctionExit0( CNCMNTB16BUILDER_NEWL_EXIT ); - return self; - } - -CNcmNtb16Builder::CNcmNtb16Builder(MNcmNtbBuildObserver& aObserver) - : CNcmNtbBuilder(aObserver) - { - } - -void CNcmNtb16Builder::ConstructL() - { - iNtbInMaxSize = KNtb16InMaxSize; - iNdpInDivisor = KNdp16InDivisor; - iNdpInPayloadRemainder = KNdp16InRemainder; - iNdpInAlignment = KNdp16InAlignment; - } - -CNcmNtb16Builder::~CNcmNtb16Builder() - { - iPacketsArray.Reset(); - } - - -TInt CNcmNtb16Builder::SetNtbInMaxSize(TInt aSize) - { - OstTraceFunctionEntry1( CNCMNTB16BUILDER_SETNTBINMAXSIZE_ENTRY, this ); - if (aSize > KNtb16InMaxSize || aSize < MinNtbInMaxSize()) - { - OstTraceFunctionExit1( CNCMNTB16BUILDER_SETNTBINMAXSIZE_EXIT, this ); - return KErrArgument; - } - iNtbInMaxSize = aSize; - OstTraceFunctionExit1( CNCMNTB_DUP116BUILDER_SETNTBINMAXSIZE_EXIT, this ); - return KErrNone; - } - -// -//construct NTB header information -// - -void CNcmNtb16Builder::BuildNtbHeader() - { - OstTraceFunctionEntry1( CNCMNTB16BUILDER_BUILDNTBHEADER_ENTRY, this ); - TPtr8 buf(iBuffer.iPtr, KNth16Length, KNth16Length); - TInt pos = 0; - LittleEndian::Put32(&buf[pos], KNth16Signature); - pos += 4; - LittleEndian::Put16(&buf[pos], KNth16Length); - pos += 2; - LittleEndian::Put16(&buf[pos], iSequence); - pos += 2; - LittleEndian::Put32(&buf[pos], iNdpOffset+iNdpLength); - pos += 2; - LittleEndian::Put16(&buf[pos], iNdpOffset); - pos += 2; - - OstTraceExt3( TRACE_NORMAL, CNCMNTB16BUILDER_BUILDNTBHEADER, "CNcmNtb16Builder::BuildNtbHeader %d %d %d", iSequence, iNdpOffset, iNdpOffset+iNdpLength ); - OstTraceFunctionExit1( CNCMNTB16BUILDER_BUILDNTBHEADER_EXIT, this ); - } - - -// -//construct NDP inforamtion -// - -void CNcmNtb16Builder::BuildNdp() - { - OstTraceFunctionEntry1( CNCMNTB16BUILDER_BUILDNDP_ENTRY, this ); - TPtr8 buf(iBuffer.iPtr+iNdpOffset, iNdpLength, iNdpLength); - TInt pos = 0; - - LittleEndian::Put32(&buf[pos], KNdp16Signature); - pos += 4; - LittleEndian::Put16(&buf[pos], iNdpLength); - pos += 2; - LittleEndian::Put16(&buf[pos], 0); - pos += 2; - - TInt i; - for (i=0 ; i iBuffer.iMaxLength || newNdpLen+newNdpOffset > iNtbInMaxSize) - { - CompleteNtbBuild(); - OstTraceFunctionExit1( CNCMNTB16BUILDER_APPENDPACKET_EXIT, this ); - return KErrBufferFull; - } - - TPtr8 ptr((TUint8*)(alignedDataOffset+iBuffer.iPtr), len, len); - aPacket.CopyOut(ptr); - TDatagramEntry entry; - entry.iWDatagramIndex = alignedDataOffset; - entry.iWDatagramLength = len; - iPacketsArray.Append(entry); - iNdpOffset = newNdpOffset; - iNdpLength = newNdpLen; - iDatagramOffset = newDatagramOffset; - if (iBuildPolicy) - { - iBuildPolicy->UpdateNtb(iNdpOffset+iNdpLength); - } - OstTraceFunctionExit1( CNCMNTB_DUP116BUILDER_APPENDPACKET_EXIT, this ); - return KErrNone; - } - -// -//complete a NTB, is called by buildpolicy or current NTB is full. -// - - -void CNcmNtb16Builder::CompleteNtbBuild() - { - OstTraceFunctionEntry1( CNCMNTB16BUILDER_COMPLETENTBBUILD_ENTRY, this ); - - BuildNtbHeader(); - BuildNdp(); - iBuffer.iLen = iNdpOffset+iNdpLength; - SendNtbPayload(); - CNcmNtbBuilder::CompleteNtbBuild(); - OstTraceFunctionExit1( CNCMNTB16BUILDER_COMPLETENTBBUILD_EXIT, this ); - } - - -// -//start a new ntb, is called by sender -// - -void CNcmNtb16Builder::StartNewNtb(const TNcmBuffer& aBuffer) - { - OstTraceFunctionEntry1( CNCMNTB16BUILDER_STARTNEWNTB_ENTRY, this ); - - iBuffer = aBuffer; - iNdpOffset = 0; - iNdpLength = 0; - iPacketsArray.Reset(); - iDatagramOffset = KNth16Length; -// NDP must align with iNdpInAlignment, refer to NCM spec Table 6-3 for detail - iNdpOffset = (iDatagramOffset+iNdpInAlignment-1)&~(iNdpInAlignment-1); -// must have a zero entry in the end of NDP, so the NDP length is added with KNdp16EntrySize - iNdpLength = KNdp16HeaderSize + KNdp16EntrySize; - - if (iBuildPolicy) - { - iBuildPolicy->StartNewNtb(); - } - CNcmNtbBuilder::StartNewNtb(aBuffer); - OstTraceFunctionExit1( CNCMNTB16BUILDER_STARTNEWNTB_EXIT, this ); - } - - -void CNcmNtb16Builder::Reset() - { - OstTraceFunctionEntry1( CNCMNTB16BUILDER_RESET_ENTRY, this ); - iNtbInMaxSize = KNtb16InMaxSize; - iNdpOffset = 0; - iNdpLength = 0; - iDatagramOffset = 0; - iPacketsArray.Reset(); - CNcmNtbBuilder::Reset(); - OstTraceFunctionExit1( CNCMNTB16BUILDER_RESET_EXIT, this ); - } - - - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmntbbuilder.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmntbbuilder.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -/* -* 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: -* implementation for NTB build base class -* -*/ - - -/** -@file -@internalComponent -*/ - - - -#include "ncmntbbuilder.h" -#include "ncmdatasender.h" -#include "ncmpktdrvcommon.h" -#include "ncmntbbuildpolicy.h" - - -// ======== MEMBER FUNCTIONS ======== -// - - -CNcmNtbBuilder::CNcmNtbBuilder(MNcmNtbBuildObserver& aObserver) - : iObserver(aObserver) - { - iSequence = 0xFFFF; - } - -CNcmNtbBuilder::~CNcmNtbBuilder() - { - } - -void CNcmNtbBuilder::SendNtbPayload() - { - iObserver.SendNtbPayload(iBuffer); - } - -void CNcmNtbBuilder::StartNewNtb(const TNcmBuffer& aBuffer) - { - iSequence++; - iBuffer = aBuffer; - iNtbStarted = ETrue; - } - -void CNcmNtbBuilder::GetNtbParam(TNcmNtbInParam& aParam) - { - aParam.iNtbInMaxSize = iNtbInMaxSize; - aParam.iNdpInDivisor = iNdpInDivisor; - aParam.iNdpInPayloadRemainder = iNdpInPayloadRemainder; - aParam.iNdpInAlignment = iNdpInAlignment; - } - -void CNcmNtbBuilder::Reset() - { - iNtbStarted = EFalse; - iSequence = 0xFFFF; - } - -void CNcmNtbBuilder::CompleteNtbBuild() - { - iNtbStarted = EFalse; - iBuildPolicy->CompleteNtbBuild(); - } - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmntbbuildpolicy.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmntbbuildpolicy.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -/* -* 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: -* implementation for NTB build policy base class -* -*/ - - -/** -@file -@internalComponent -*/ - - -#include "ncmntbbuildpolicy.h" - -// ======== MEMBER FUNCTIONS ======== -// - -CNcmNtbBuildPolicy::CNcmNtbBuildPolicy(CNcmNtbBuilder& aBuilder) - : CActive(CActive::EPriorityStandard), iNtbBuilder(aBuilder) - { - } - -CNcmNtbBuildPolicy::~CNcmNtbBuildPolicy() - { - } - - - - - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmntbbuildsimplepolicy.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmntbbuildsimplepolicy.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,160 +0,0 @@ -/* -* 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: -* implementation for simple NTB build policy -* -*/ - - -/** -@file -@internalComponent -*/ - - -#include "ncmntbbuildsimplepolicy.h" -#include "ncmntbbuilder.h" -#include "ncmpktdrvcommon.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmntbbuildsimplepolicyTraces.h" -#endif - - - -const TInt KMaxPacketsOfNtb = 10; -const TInt KMaxPacketDelay = 1000; -const TInt KMinFreeBuffers = 5; - - -_LIT(KSimPolicyPanic, "CNcmNtbBuildSimplePolicy"); -const TInt KTimerError = 1; - - -// ======== MEMBER FUNCTIONS ======== -// - - -CNcmNtbBuildPolicy* CNcmNtbBuildSimplePolicy::NewL(CNcmNtbBuilder& aNtbBuilder) - { - OstTraceFunctionEntry1( CNCMNTBBUILDSIMPLEPOLICY_NEWL_ENTRY, ( TUint )&( aNtbBuilder ) ); - CNcmNtbBuildSimplePolicy *self=new (ELeave) CNcmNtbBuildSimplePolicy(aNtbBuilder); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(); - OstTraceFunctionExit0( CNCMNTBBUILDSIMPLEPOLICY_NEWL_EXIT ); - return self; - } - -CNcmNtbBuildSimplePolicy::CNcmNtbBuildSimplePolicy(CNcmNtbBuilder& aNtbBuilder) - : CNcmNtbBuildPolicy(aNtbBuilder) - { - CActiveScheduler::Add(this); - } - -CNcmNtbBuildSimplePolicy::~CNcmNtbBuildSimplePolicy() - { - OstTraceFunctionEntry1( CNCMNTBBUILDSIMPLEPOLICY_CNCMNTBBUILDSIMPLEPOLICY_ENTRY, this ); - Cancel(); - iTimer.Close(); - OstTraceFunctionExit1( CNCMNTBBUILDSIMPLEPOLICY_CNCMNTBBUILDSIMPLEPOLICY_EXIT, this ); - } - -void CNcmNtbBuildSimplePolicy::DoCancel() - { - OstTraceFunctionEntry1( CNCMNTBBUILDSIMPLEPOLICY_DOCANCEL_ENTRY, this ); - iTimer.Cancel(); - iPacketsCount = 0; - OstTraceFunctionExit1( CNCMNTBBUILDSIMPLEPOLICY_DOCANCEL_EXIT, this ); - } - - -void CNcmNtbBuildSimplePolicy::ConstructL() - { - User::LeaveIfError(iTimer.CreateLocal()); - } - -void CNcmNtbBuildSimplePolicy::RunL() - { - OstTraceFunctionEntry1( CNCMNTBBUILDSIMPLEPOLICY_RUNL_ENTRY, this ); - OstTrace1( TRACE_NORMAL, CNCMNTBBUILDSIMPLEPOLICY_RUNL, "CNcmNtbBuildSimplePolicy::RunL Status=%d", iStatus.Int() ); - - if(iStatus.Int() != KErrNone) - { - User::Panic(KSimPolicyPanic, KTimerError); - OstTraceFunctionExit1( CNCMNTBBUILDSIMPLEPOLICY_RUNL_EXIT, this ); - return; - } - - if (iPacketsCount > 0) - { - iNtbBuilder.CompleteNtbBuild(); - } - OstTraceFunctionExit1( CNCMNTBBUILDSIMPLEPOLICY_RUNL_EXIT_DUP1, this ); - } - -void CNcmNtbBuildSimplePolicy::CompleteNtbBuild() - { - OstTraceFunctionEntry1( CNCMNTBBUILDSIMPLEPOLICY_COMPLETENTBBUILD_ENTRY, this ); - - Cancel(); - iPacketsCount = 0; - OstTraceFunctionExit1( CNCMNTBBUILDSIMPLEPOLICY_COMPLETENTBBUILD_EXIT, this ); - } - - -void CNcmNtbBuildSimplePolicy::StartNewNtb() - { - OstTraceFunctionEntry1( CNCMNTBBUILDSIMPLEPOLICY_STARTNEWNTB_ENTRY, this ); - OstTraceFunctionExit1( CNCMNTBBUILDSIMPLEPOLICY_STARTNEWNTB_EXIT, this ); - } - -void CNcmNtbBuildSimplePolicy::UpdateNtb(TInt aSize) - { - OstTraceFunctionEntryExt( CNCMNTBBUILDSIMPLEPOLICY_UPDATENTB_ENTRY, this ); - OstTrace1( TRACE_NORMAL, CNCMNTBBUILDSIMPLEPOLICY_UPDATENTB, "CNcmNtbBuildSimplePolicy::UpdateNtb aSize=%d", aSize ); - - if (iPacketsCount == 0) - { - iStatus = KRequestPending; - iTimer.After(iStatus, KMaxPacketDelay); - SetActive(); - } - - if (KMaxPacketsOfNtb <= ++iPacketsCount && aSize >= iBufferSize/2) - { - iNtbBuilder.CompleteNtbBuild(); - } - else if (iFreeBufferCount >= KMinFreeBuffers && aSize >= iBufferSize/8) - { - iNtbBuilder.CompleteNtbBuild(); - } - OstTraceFunctionExit1( CNCMNTBBUILDSIMPLEPOLICY_UPDATENTB_EXIT, this ); - } - -void CNcmNtbBuildSimplePolicy::UpdateBufferSize(TInt aSize) - { - iBufferSize = aSize; - } - -void CNcmNtbBuildSimplePolicy::UpdateFreeBufferCount(TInt aCount) - { - iFreeBufferCount = aCount; - } - -void CNcmNtbBuildSimplePolicy::UpdateTotalBufferCount(TInt aCount) - { - iTotalBufferCount = aCount; - } - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmntbparser.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmntbparser.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,629 +0,0 @@ -/* -* 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 "ncmntbparser.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmntbparserTraces.h" -#endif - - -#ifdef _DEBUG -_LIT(KNTBParsePanic, "NtbParsePanic"); -#endif - - -const TUint KNcmNtb16HeadLength = sizeof(TNcmNth16); -const TUint KNcmNtb16NdpMiniLength = sizeof(TNcmNdp16); -const TUint KNcmNtb16NdpDatagramOffset = 4 + 2 + 2;//dwSignature + wLength + wNextNdpIndex; -const TUint KNcmNtb16NdpDatagramLength = 2 + 2;//wDatagram0Index + wDatagram0Length; -const TUint KNcmNtb16NdpDatagramLenOffset = 2;//wDatagram0Index -const TUint8 KLetterN = 0x4E; -const TUint8 KLetterC = 0x43; -const TUint8 KLetterM = 0x4D; -const TUint8 KLetterH = 0x48; -const TUint8 KLetter0 = 0x30; - -CNcmNtb16Parser* CNcmNtb16Parser::NewL(MNcmNdpFrameObserver& aObserver) - { - return new(ELeave)CNcmNtb16Parser(aObserver); - } - -CNcmNtb16Parser::~CNcmNtb16Parser() - { - Reset(); - } - -CNcmNtbParser::~CNcmNtbParser() - { - } - -TUint CNcmNtb16Parser::NtbOutMaxSize() const - { - return iMaxSize; - } - -/** - * Parsing a buffer as NCM Ntb16 data format. - * NOTE: this function has "memory" because the Shared Chunk LDD can't guarantee the buffer as a whole USB Transfer. - * this function tries to parse the buffer as much as possible and save the buffer if it can't be parsed exactly. - * @param [in] aBuf, the buffer to be parsed, which can't be released(free) until the ExpireBuffer() is called. - * @param [in] aBufLen, the buffer length. - * @param [in] aZlp, flag of Zlp used to indicate a USB transfer completion. - * @return KErrNone, no error occurs during parsing this buffer. - * other, Symbian system error code. - */ -TInt CNcmNtb16Parser::Parse(const TUint8* aBuf, TInt aBufLen, TBool aZlp) - { - TInt ret = KErrNone; - TInt dataLen = iDataLen + aBufLen - (iQueLen==0?iDataOffset:0); - OstTraceExt3( TRACE_NORMAL, CNCMNTB16PARSER_PARSE, "==>Parse:aBuf=0x%08x, aBufLen=%d, aZlp=%d.", (TUint)aBuf, aBufLen, aZlp); - OstTraceExt5( TRACE_NORMAL, CNCMNTB16PARSER_PARSE_DUP01, " iState=%d, dataLen=%d, iDataLen=%d, iQueLen=%d, iDataOffset=%d", iState, dataLen, iDataLen, iQueLen, iDataOffset); - - //Zlp comes so late, so updated here. - if (aZlp) - { - iNth.wBlockLength = dataLen; - __ASSERT_DEBUG(iNth.wBlockLength < iMaxSize, User::Panic(KNTBParsePanic, __LINE__)); - } - - switch(iState) - { - //iNth is not ready. - case ENcmNtb16ParseStateUninitialized: - if (dataLen >= KNcmNtb16HeadLength) - { - ret = ParseNcmNtb16Header(aBuf, aBufLen, aZlp); - } - else - { - ret = QueueBuf(aBuf, aBufLen); - } - break; - - //iNth is ready, but iNdp not. - case ENcmNtb16ParseStateNdpParsing: - if (dataLen >= iNth.wNdpIndex + KNcmNtb16NdpMiniLength) - { - ret = ParseNcmNtb16Ndp(aBuf, aBufLen); - } - else - { - ret = QueueBuf(aBuf, aBufLen); - } - break; - - //iNdp is ready, try to seek datagram. - case ENcmNtb16ParseStateNdpSeeking: - ret = ParseNcmNtb16NdpDatagram(aBuf, aBufLen); - break; - - //iNth is ready, ignore the remaining bytes for errors or NULL NDP. - case ENcmNtb16ParseStateSkipBytes: - __ASSERT_DEBUG(0==iQueLen, User::Panic(KNTBParsePanic, __LINE__)); - __ASSERT_DEBUG(0==iDataLen||0==iDataOffset, User::Panic(KNTBParsePanic, __LINE__)); - //buffer contains the following NTB data. - if (dataLen > iNth.wBlockLength) - { - iDataOffset += iNth.wBlockLength - iDataLen; - Reset(); - ret = Parse(aBuf, aBufLen); - } - else if (dataLen == iNth.wBlockLength) - { - Reset(); - iDataOffset = 0; - iObserver.ExpireBuffer((TAny*)aBuf); - } - else - { - iDataLen += aBufLen; - iObserver.ExpireBuffer((TAny*)aBuf); - } - break; - - default: - __ASSERT_DEBUG(0, User::Panic(KNTBParsePanic, __LINE__)); - break; - } - OstTraceExt3(TRACE_NORMAL, CNCMNTB16PARSER_PARSE_DUP02, "<==Parse:iDataLen=%d, iQueLen=%d, iDataOffset=%d.", (TInt)iDataLen, iQueLen, iDataOffset); - - return ret; - } - -//Reset the parser to clear the queue and indicators. -void CNcmNtb16Parser::Reset(TInt aType) - { - if (ENcmNtb16TypeResetAll == aType) - { - iState = ENcmNtb16ParseStateUninitialized; - iDataLen = 0; - } - - if (iQueLen > 0) - { - for (TInt i = 0; i < iQueLen; i++) - { - iObserver.ExpireBuffer((TAny*)(iBufQueue[i].Ptr())); - } - iBufQueue.Reset(); - iQueLen = 0; - iDataOffset = 0; - } - } - -//Search NCM header:"NCMH". -TInt CNcmNtb16Parser::SearchNcmHead(const TUint8* aBuf, TInt aBufLen) - { - TInt dataLen = aBufLen + (iQueLen==0?(0-iDataOffset):iDataLen); - const TInt KNotFound = 0; - const TInt KShrinkQueue = 1; - const TInt KFound = 2; - TInt ii = 1;//first one(0) has already tested(not matched) before entering this function. - TInt ret = KNotFound; - - const TUint KMatchLastOne = 1; - const TUint KMatchLastTwo = 2; - const TUint KMatchLastThree = 3; - - while (KNotFound == ret) - { - while (ii < dataLen && KLetterN != DataTUint8(ii, aBuf, aBufLen)) - { - ii++; - } - if (ii == dataLen) - { - Reset(); - iDataOffset = 0; - iObserver.ExpireBuffer((TAny*)aBuf); - return KErrCorrupt; - } - else if (ii + KMatchLastOne == dataLen)//last one matched 'N' - { - ret = KShrinkQueue; - } - else if (ii + KMatchLastTwo == dataLen) - { - if (KLetterC == DataTUint8(ii+KMatchLastOne, aBuf, aBufLen))//'NC' matched. - { - ret = KShrinkQueue; - } - else - { - ii++; - } - } - else if (ii + KMatchLastThree == dataLen) - { - if (KLetterC != DataTUint8(ii+KMatchLastOne, aBuf, aBufLen)) - { - ii++; - } - else if (KLetterM != DataTUint8(ii+KMatchLastTwo, aBuf, aBufLen)) - { - ii += 2; - } - else //'NCM' matched. - { - ret = KShrinkQueue; - } - } - else - { - if (KLetterC != DataTUint8(ii+KMatchLastOne, aBuf, aBufLen)) - { - ii ++; - } - else if (KLetterM != DataTUint8(ii+KMatchLastTwo, aBuf, aBufLen)) - { - ii += 2; - } - else if (KLetterH != DataTUint8(ii+KMatchLastThree, aBuf, aBufLen)) - { - ii += 3; - } - else - { - ret = KFound; - } - } - } - - OstTraceExt5(TRACE_NORMAL, CNCMNTB16PARSER_SEARCHNCMHEAD, "Search:ii=%d, dataLen=%d,iDataLen=%d,iDataOffset=%d,iQueLen=%d", ii, dataLen, iDataLen, iDataOffset, iQueLen); - - switch(ret) - { - case KShrinkQueue: - { - TInt err = QueueBuf(aBuf, aBufLen); - if (KErrNone != err) - { - return err; - } - } - //fall-through!! no break!! - case KFound: - { - TInt newOffset = ii + iDataOffset; - iDataLen += (iDataLen!=0?iDataOffset:0); - while(iQueLen && iBufQueue[0].Length() <= newOffset) - { - iObserver.ExpireBuffer((TAny*)iBufQueue[0].Ptr()); - newOffset -= iBufQueue[0].Length(); - iDataLen -= iBufQueue[0].Length(); - iBufQueue.Remove(0); - iQueLen--; - } - iDataOffset = newOffset; - iDataLen -= (iQueLen!=0?iDataOffset:0); - __ASSERT_DEBUG((iQueLen==0&&iDataLen==0)||(iQueLen>0&&iDataLen>0), User::Panic(KNTBParsePanic, __LINE__)); - if (KFound == ret) - { - return Parse(aBuf, aBufLen); - } - } - break; - - default: - __ASSERT_DEBUG(0, User::Panic(KNTBParsePanic, __LINE__)); - break; - } - - return KErrNone; - } - -TInt CNcmNtb16Parser::ParseNcmNtb16Header(const TUint8* aBuf, TInt aBufLen, TBool aZlp) - { - const TUint KLetterNOffset = 0; //0 - const TUint KLetterCOffset = KLetterNOffset + 1; //1 - const TUint KLetterMOffset = KLetterCOffset + 1; //2 - const TUint KLetterHOffset = KLetterMOffset + 1; //3 - const TUint KHeaderLengthOffset = KLetterHOffset + 1;//4 - const TUint KSequeceOffset = KHeaderLengthOffset + 2;//6 - const TUint KBlockLengthOffset = KSequeceOffset + 2;//8 - const TUint KNdpIndexOffset = KBlockLengthOffset + 2;//10 - //NCMH - if (KLetterN != DataTUint8(KLetterNOffset, aBuf, aBufLen) || - KLetterC != DataTUint8(KLetterCOffset, aBuf, aBufLen) || - KLetterM != DataTUint8(KLetterMOffset, aBuf, aBufLen) || - KLetterH != DataTUint8(KLetterHOffset, aBuf, aBufLen)) - { - //NOT a valid NTB header signature. Try to search NCMH in the buffer... - OstTrace0(TRACE_ERROR, CNCMNTB16PARSER_PARSENCMNTB16HEADER, "BAD error, missed NCMH!!"); - return SearchNcmHead(aBuf, aBufLen); - } - -#ifdef _DEBUG - iNth.wHeaderLength = DataTUint16(KHeaderLengthOffset, aBuf, aBufLen); - iNth.wSequence = DataTUint16(KSequeceOffset, aBuf, aBufLen); - //keep silence for release. not critical error. - __ASSERT_DEBUG(iNth.wHeaderLength == 0xC, User::Panic(KNTBParsePanic, __LINE__)); -#endif - -#ifdef _DEBUG - OstTrace1(TRACE_NORMAL, CNCMNTB16PARSER_PARSENCMNTB16HEADER_DUP01, "iNth.wBlockLength=%d", DataTUint16(KBlockLengthOffset, aBuf, aBufLen)); -#endif - - //using Zlp first. - if (aZlp) - { - iNth.wBlockLength = iDataLen + aBufLen - (iQueLen==0?iDataOffset:0); - __ASSERT_DEBUG(iNth.wBlockLength < iMaxSize, User::Panic(KNTBParsePanic, __LINE__)); - } - else - { - iNth.wBlockLength = DataTUint16(KBlockLengthOffset, aBuf, aBufLen); - if (0 == iNth.wBlockLength) - { - iNth.wBlockLength = iMaxSize; - } - } - iNth.wNdpIndex = DataTUint16(KNdpIndexOffset, aBuf, aBufLen); - -#ifdef _DEBUG - iNth.Dump(); -#endif - - if ((iNth.wNdpIndex >= 0xC) && - (iNth.wNdpIndex + KNcmNtb16NdpMiniLength <= iNth.wBlockLength)) - { - iState = ENcmNtb16ParseStateNdpParsing; - } - else //underflow or overflow - { - Reset(ENcmNtb16TypeResetQueue); - iState = ENcmNtb16ParseStateSkipBytes; - } - - return Parse(aBuf, aBufLen); - } - -TInt CNcmNtb16Parser::ParseNcmNtb16Ndp(const TUint8* aBuf, TInt aBufLen) - { - const TUint KLetterNOffset = 0; //0 - const TUint KLetterCOffset = KLetterNOffset + 1; //1 - const TUint KLetterMOffset = KLetterCOffset + 1; //2 - const TUint KLetterZeroOffset = KLetterMOffset + 1; //3 - const TUint KLengthOffset = KLetterZeroOffset + 1;//4 - - //NCM0 - if (KLetterN != DataTUint8(iNth.wNdpIndex + KLetterNOffset, aBuf, aBufLen) || - KLetterC != DataTUint8(iNth.wNdpIndex+KLetterCOffset, aBuf, aBufLen) || - KLetterM != DataTUint8(iNth.wNdpIndex+KLetterMOffset, aBuf, aBufLen) || - KLetter0 != DataTUint8(iNth.wNdpIndex+KLetterZeroOffset, aBuf, aBufLen)) - { - //Not valid NDP! Skip this NTB. - Reset(ENcmNtb16TypeResetQueue); - iState = ENcmNtb16ParseStateSkipBytes; - return Parse(aBuf, aBufLen); - } - - iNdp.wLength = DataTUint16(iNth.wNdpIndex+KLengthOffset, aBuf, aBufLen); - if (iNdp.wLength < 0x10) - { - //Not valid ndp header, Skip this NTB. - Reset(ENcmNtb16TypeResetQueue); - iState = ENcmNtb16ParseStateSkipBytes; - return Parse(aBuf, aBufLen); - } - iNdpBound = iNth.wNdpIndex + iNdp.wLength; - -#ifdef _DEBUG - if (iNdpBound > iNth.wBlockLength) - { - //warning: overflow.. - } - const TUint KNextNdpIndexOffset = KLengthOffset + 2;//6 - iNdp.wNextNdpIndex = DataTUint16(iNth.wNdpIndex + KNextNdpIndexOffset, aBuf, aBufLen); - __ASSERT_DEBUG(iNdp.wNextNdpIndex==0, User::Panic(KNTBParsePanic, __LINE__)); - - iNdp.Dump(); -#endif - - iNdpDataOffset = iNth.wNdpIndex + KNcmNtb16NdpDatagramOffset; - iState = ENcmNtb16ParseStateNdpSeeking; - return Parse(aBuf, aBufLen); - } - -//parse NdpDatagram -TInt CNcmNtb16Parser::ParseNcmNtb16NdpDatagram(const TUint8* aBuf, TInt aBufLen) - { - TInt dataLen = aBufLen + (iQueLen==0?(0-iDataOffset):iDataLen); - TInt ret = KErrNone; - OstTraceExt3(TRACE_NORMAL, CNCMNTB16PARSER_PARSENCMNTB16NDPDATAGRAM, "ParseNcmNtb16NdpDatagram:iNdpState=%d, iDataLen=%d, dataLen=%d", iNdpState, iDataLen, dataLen); - - switch(iNdpState) - { - case ENcmNtb16ParseNdpStateUninitialized: - { - TUint datagramBound = iNdpDataOffset+ KNcmNtb16NdpDatagramLength; - if (iNdpDataOffset >= iNdpBound || datagramBound > iNth.wBlockLength) - { - //finish this NTB. - Reset(ENcmNtb16TypeResetQueue); - iState = ENcmNtb16ParseStateSkipBytes; - ret = Parse(aBuf, aBufLen); - } - else if (datagramBound <= dataLen) - { - iDatagramIndex = DataTUint16(iNdpDataOffset, aBuf, aBufLen); - iDatagramLength = DataTUint16(iNdpDataOffset+KNcmNtb16NdpDatagramLenOffset, aBuf, aBufLen); - OstTraceExt2(TRACE_NORMAL, CNCMNTB16PARSER_PARSENCMNTB16NDPDATAGRAM_DUP01, "Index=%d, Length=%d", iDatagramIndex, iDatagramLength); - // NULL NDP; - if (iDatagramIndex == 0 || iDatagramLength == 0) - { - Reset(ENcmNtb16TypeResetQueue); - iState = ENcmNtb16ParseStateSkipBytes; - ret = Parse(aBuf, aBufLen); - } - else if (iDatagramIndex + iDatagramLength <= iNth.wBlockLength) - { - TRAPD(err, iPacket.CreateL(iDatagramLength)); - if (KErrNone == err) - { - iNdpState = ENcmNtb16ParseNdpStateDatagramed; - ret = ParseNcmNtb16NdpDatagram(aBuf, aBufLen); - } - else - { - iPacket.Free(); - - iNdpDataOffset += KNcmNtb16NdpDatagramLength;//skip this ethernet frame, do nothing else. - ret = ParseNcmNtb16NdpDatagram(aBuf, aBufLen); - } - - } - else - { - //skip this datagram because of overflow. - iNdpDataOffset += KNcmNtb16NdpDatagramLength; - ret = ParseNcmNtb16NdpDatagram(aBuf, aBufLen); - } - } - else - { - ret = QueueBuf(aBuf, aBufLen); - } - } - break; - - case ENcmNtb16ParseNdpStateDatagramed: - ret = DataPacket(aBuf, aBufLen); - if (KErrCompletion == ret) - { - iPacket.Pack(); - iObserver.ProcessEtherFrame(iPacket); - - iNdpDataOffset += KNcmNtb16NdpDatagramLength; - iNdpState = ENcmNtb16ParseNdpStateUninitialized; - ret = ParseNcmNtb16NdpDatagram(aBuf, aBufLen); - } - break; - } - - return ret; - } - -//queue buffer. -TInt CNcmNtb16Parser::QueueBuf(const TUint8* aBuf, TInt aBufLen) - { - __ASSERT_DEBUG(iQueLen==0?(iDataLen==0):ETrue, User::Panic(KNTBParsePanic, __LINE__)); - TPtrC8 ptr(aBuf, aBufLen); - TInt ret = iBufQueue.Append(ptr); - if(KErrNone != ret) - { - OstTrace1(TRACE_ERROR, CNCMNTB16PARSER_QUEUEBUF, "Append Queue Error: ret=%d!!", ret); - Reset(); - return ret; - } - iDataLen += aBufLen - (iQueLen==0?iDataOffset:0); - iQueLen ++; - return KErrNone; - } - -TUint8 CNcmNtb16Parser::DataTUint8(TUint aOffset, const TUint8* aBuf, TInt aBufLen) - { - if (0 == iQueLen) - { - return aBuf[iDataOffset + aOffset]; - } - else if (iDataLen <= aOffset) - { - return aBuf[aOffset - iDataLen]; - } - else - { - TInt i = 1; - TPtrC8* pPtr = &iBufQueue[0]; - TUint totalOffset = pPtr->Length() - iDataOffset; - while(totalOffset <= aOffset) - { - pPtr = &iBufQueue[i]; - totalOffset += pPtr->Length(); - i++; - __ASSERT_DEBUG(i<=iQueLen, User::Panic(KNTBParsePanic, __LINE__)); - } - return pPtr->Ptr()[pPtr->Length() + aOffset - totalOffset]; - } - } - -TUint16 CNcmNtb16Parser::DataTUint16(TUint aOffset, const TUint8* aBuf, TInt aBufLen) - { - if (0 == iQueLen) - { - return LittleEndian::Get16(aBuf + aOffset + iDataOffset); - } - else if (iDataLen <= aOffset) - { - return LittleEndian::Get16(aBuf + aOffset - iDataLen); - } - else - { - TUint16 ret = 0; - TInt i = 1; - TPtrC8* pPtr = &iBufQueue[0]; - TUint totalOffset = pPtr->Length() - iDataOffset; - - while(totalOffset <= aOffset) - { - pPtr = &iBufQueue[i]; - totalOffset += pPtr->Length(); - i++; - __ASSERT_DEBUG(i<=iQueLen, User::Panic(KNTBParsePanic, __LINE__)); - } - ret = pPtr->Ptr()[pPtr->Length() + aOffset - totalOffset]; - if (totalOffset > aOffset + 1) - { - ret += ((pPtr->Ptr()[pPtr->Length() + aOffset - totalOffset + 1])<<8)&0xFF00; - } - else if (i < iQueLen) - { - pPtr = &iBufQueue[i]; - ret += ((pPtr->Ptr()[0])<<8)&0xFF00; - } - else - { - ret += (aBuf[0]<<8)&0xFF00; - } - - return ret; - } - } - -TInt CNcmNtb16Parser::DataPacket(const TUint8* aBuf, TInt aBufLen) - { - TInt dataLen = aBufLen + (iQueLen==0?(0-iDataOffset):iDataLen); - OstTraceExt5(TRACE_NORMAL, CNCMNTB16PARSER_DATAPACKET, "DataPacket:dataLen=%d, index=%d, len=%d, iDataLen=%d, iDataOffset=%d", dataLen, iDatagramIndex, iDatagramLength, iDataLen, iDataOffset); - if (dataLen < iDatagramIndex + iDatagramLength) - { - return QueueBuf(aBuf, aBufLen); - } - - if (0 == iQueLen) - { - iPacket.CopyIn(TPtrC8(aBuf + iDatagramIndex + iDataOffset, iDatagramLength)); - } - else if (iDataLen <= iDatagramIndex) - { - iPacket.CopyIn(TPtrC8(aBuf + iDatagramIndex - iDataLen, iDatagramLength)); - } - else - { - TInt i = 1; - TPtrC8* pPtr = &iBufQueue[0]; - TUint totalOffset = pPtr->Length() - iDataOffset; - - while (totalOffset <= iDatagramIndex) - { - pPtr = &iBufQueue[i]; - totalOffset += pPtr->Length(); - i++; - __ASSERT_DEBUG(i<=iQueLen, User::Panic(KNTBParsePanic, __LINE__)); - } - if (totalOffset >= iDatagramIndex + iDatagramLength) - { - iPacket.CopyIn(TPtrC8(pPtr->Ptr() + pPtr->Length() + iDatagramIndex - totalOffset, iDatagramLength)); - } - else - { - TInt len = totalOffset - iDatagramIndex; - iPacket.CopyIn(TPtrC8(pPtr->Ptr() + pPtr->Length() + iDatagramIndex - totalOffset, len)); - - while(i < iQueLen && iBufQueue[i].Length() + len <= iDatagramLength) - { - iPacket.CopyIn(iBufQueue[i], len); - len += iBufQueue[i].Length(); - i++; - } - - if (len < iDatagramLength) - { - if (i < iQueLen) - { - iPacket.CopyIn(TPtrC8(iBufQueue[i].Ptr(), iDatagramLength-len), len); - } - else - { - iPacket.CopyIn(TPtrC8(aBuf, iDatagramLength - len), len); - } - } - } - } - - return KErrCompletion; - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmpktdrv.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmpktdrv.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,273 +0,0 @@ -/* -* 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 "ncmpktdrv.h" - -#include "ncmengine.h" -#include "ncmserver.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmpktdrvTraces.h" -#endif - - -/** -Constructor. Packet Driver object. -*/ -CNcmPktDrv::CNcmPktDrv(CPktDrvFactory& aFactory) : CPktDrvBase(aFactory) - { - } - -/** -Destructor. -*/ -CNcmPktDrv::~CNcmPktDrv() - { - delete iNcmServer; - delete iEngine; - } - -/** -Construction of the CNcmDrvBase object -@param aParent Pointer to the CLANLinkCommon class. -*/ -void CNcmPktDrv::ConstructL(CLANLinkCommon* aParent) - { - OstTraceFunctionEntry0(CNCMPKTDRV_CONSTRUCTL); - - iParent = aParent; - iEngine = CNcmEngine::NewL(*this); - iNcmServer = CNcmServer::NewL(*iEngine); - } - -/** -Call to LDD or subordinate object to start/initialise the Physical device -*/ -TInt CNcmPktDrv::StartInterface() - { - OstTraceFunctionEntry0(CNCMPKTDRV_STARTINTERFACE); - - TRAPD(err, iParent->FoundMACAddrL()); - if (KErrNone != err) - { - return err; - } - - OstTrace0(TRACE_NORMAL, CNCMPKTDRV_STARTINTERFACE_DUP02, "CNcmPktDrv, calling LinkLayerUp"); - iParent->LinkLayerUp(); - OstTraceFunctionExit0(CNCMPKTDRV_STARTINTERFACE_DUP01); - return err; - } - -/** -Call to LDD or subordinate object to stop/de-initialise the Physical device -*/ -TInt CNcmPktDrv::StopInterface() - { - OstTraceFunctionEntry0(CNCMPKTDRV_STOPINTERFACE); - - iEngine->Stop(); - - return KErrNone; - } - -/** -Call to LDD or subordinate object to reset/re-initialise the Physical device -*/ -TInt CNcmPktDrv::ResetInterface() - { - return KErrNone; - } - -/** -EtherII MAC layer comments say we should free the packet buffer -RMBuf could contain a chain so get into a contiguous buffer -@param aPacket Reference to a chain of data buffers to be passed to the line. -@return 0 Tells the higher layer to send no more data. - 1 Tells higher layer that it can send more data. -*/ -TInt CNcmPktDrv::Send(RMBufChain &aPacket) - { - TInt error = iEngine->Send(aPacket); - aPacket.Free(); - - return error; - } - -/** -Read the Available data. -@param aBuffer A Reference to a buffer holding data. -*/ -void CNcmPktDrv::ReceiveEthFrame(RMBufPacket& aPacket) - { - iParent->Process(aPacket); - } - -/** -Resume Sending is a notification call into NIF from the lower layer telling the NIF that a -previous sending congestion situation has been cleared and it can accept more downstack data. -*/ -void CNcmPktDrv::ResumeSending() - { - iParent->ResumeSending(); - } - -/** -Call to LDD or subordinate object to set the receive mode of the LAN Device -@param aMode The mode to be set for the LAN Device. -@return KErrNotSupported LAN Device does not support. -*/ -TInt CNcmPktDrv::SetRxMode(TRxMode /*aMode*/) - { - return KErrNotSupported; - } - -/** -Call to LDD or subordinate object to Get the receive mode of the LAN Device -@return KErrNotSupported LAN Device does not support. -*/ -TInt CNcmPktDrv::GetRxMode() const - { - return KErrNotSupported; - } - -/** -Call to LDD or subordinate object to get the Hardware address of the LAN Device -@return NULL Failure. - (NULL Terminated Binary String) The Hardware Address of the interface. LAN Device - Specific -*/ -TUint8* CNcmPktDrv::GetInterfaceAddress()const - { - return iEngine->InterfaceAddress(); - } - -/** -Call to LDD or subordinate object to set the Hardware address of the LAN Device. -@param THWAddr Address of where the Multicast list should be written. -@return KErrNone if Successful - KErrNotSupported LAN Device does not support. - Implementation specific Error Code Failure -*/ -TInt CNcmPktDrv::SetInterfaceAddress(const THWAddr&) - { - return KErrNotSupported; - } - -/** -Call to LDD or subordinate object to retrieve the Multicast List from the LAN Device -@param aAddr Address of where the Multicast list should be written. -@param n Output Parameter , number of Addresses written -@return KErrNone if Successful - KErrNotSupported LAN Device does not support. - Implementation specific Error Code Failure -*/ -TInt CNcmPktDrv::GetMulticastList(const THWAddr* /*aAddr*/, TInt& /*n*/) const - { - return KErrNotSupported; - } - -/** -Call to LDD or subordinate object to set the Multicast List for the LAN Device. -@param aAddr Address of where the Multicast list should be written. -@param n Output Parameter , number of Addresses written -@return KErrNone if Successful - KErrNotSupported LAN Device does not support. - Implementation specific Error Code Failure -*/ -TInt CNcmPktDrv::SetMulticastList(const THWAddr* /*aAddr*/, TInt /*n*/) - { - return KErrNotSupported; - } - -/** -Call to LDD or subordinate object to power up the LAN Device. -@return KErrNone if Successful - KErrNotSupported LAN Device does not support. - Implementation specific Error Code Failure -*/ -TInt CNcmPktDrv::InterfacePowerUp() - { - return KErrNotSupported; - } - -/** -Call to LDD or subordinate object to power down the LAN Device -@return KErrNone if Successful - KErrNotSupported LAN Device does not support. - Implementation specific Error Code Failure -*/ -TInt CNcmPktDrv::InterfacePowerDown() - { - return KErrNotSupported; - } - -/** -Call to LDD or subordinate object to suspend the LAN Device. -@return KErrNone if Successful - KErrNotSupported LAN Device does not support. - Implementation specific Error Code Failure -*/ -TInt CNcmPktDrv::InterfaceSleep() - { - return KErrNotSupported; - } - -/** -Call to LDD or subordinate object to resume the LAN Device. -@return KErrNone if Successful - KErrNotSupported LAN Device does not support. - Implementation specific Error Code Failure -*/ -TInt CNcmPktDrv::InterfaceResume() - { - return KErrNotSupported; - } - -/** -Receive notifications from agent -*/ -TInt CNcmPktDrv::Notification(enum TAgentToNifEventType aEvent, void* aInfo) - { - TInt retval = KErrNotSupported; - - return retval; - } - -/** -Receive Control() calls from agent/nifman/connection -*/ -TInt CNcmPktDrv::Control(TUint /*aLevel*/,TUint /*aName*/,TDes8& /*aOption*/, TAny* /*aSource*/) - { - return KErrNotSupported; - } - -/** -Report the progress of packet driver to NCM Class Controller for fatal error -*/ -void CNcmPktDrv::FatalErrorNotification(TInt aError) - { - iParent->IfProgress(ENcmPktDrvFatalError, aError); - } - -#ifdef __OVER_DUMMYUSBSCLDD__ -TInt CNcmPktDrv::State() const - { - return iEngine->State(); - } -#endif - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmpktdrvfactory.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmpktdrvfactory.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -/* -* 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 "ncmpktdrvfactory.h" -#include "ncmpktdrv.h" - - -/** -@file -@internalComponent -*/ -extern "C" - { - IMPORT_C CPktDrvFactory * NewNcmPktDrvFactoryL(); ///< Force export - } - -/** -Library file is opened and this is the the first and only export. -@internalComponent -@return A pointer to CPktDrvFactory object. -*/ -EXPORT_C CPktDrvFactory* NewNcmPktDrvFactoryL() - { - return new (ELeave) CNcmPktDrvFactory; - } - -/** -Create the packet driver object -@param aParent Pointer to the parent Ethint NIF class. -@return A pointer to CPktDrvBase object. -*/ -CPktDrvBase* CNcmPktDrvFactory::NewDriverL(CLANLinkCommon* aParent) - { - CNcmPktDrv *drv = new (ELeave) CNcmPktDrv(*this); - CleanupStack::PushL(drv); - drv->ConstructL(aParent); - CleanupStack::Pop(drv); - return drv; - } - - -/** -Packet Driver version number. -@return Version number of the Packet Driver -*/ -TVersion CNcmPktDrvFactory::Version() const - { - return(TVersion(KNcmDrvMajorVersionNumber,KNcmDrvMinorVersionNumber,KNcmDrvBuildVersionNumber)); - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmsharedstatemanager.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/src/ncmsharedstatemanager.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,234 +0,0 @@ -/* -* 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 "ncmsharedstatemanager.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmsharedstatemanagerTraces.h" -#endif - - - -#ifdef _DEBUG -_LIT(KPanicSharedState, "SharedStatePanic"); -#endif - -CNcmSharedStateManager* CNcmSharedStateManager::NewL(MShareStateObserver& aEngine) - { - CNcmSharedStateManager* self = new(ELeave) CNcmSharedStateManager(aEngine); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -CNcmSharedStateManager::CNcmSharedStateManager(MShareStateObserver& aEngine) : CActive(CActive::EPriorityStandard), - iNotifyMsg(RMessage2()), iEngine(aEngine) - { - CActiveScheduler::Add(this); - } - - -CNcmSharedStateManager::~CNcmSharedStateManager() - { - OstTraceFunctionEntry0(CNCMSHAREDSTATEMANAGER_CNCMSHAREDSTATEMANAGER); - - Cancel(); - - iProperty.Close(); - iProperty.Delete(KKeyNcmConnectionEvent); - - delete iCoexistBearer; - OstTraceFunctionExit0(CNCMSHAREDSTATEMANAGER_CNCMSHAREDSTATEMANAGER_DUP01); - } - - -void CNcmSharedStateManager::ConstructL() - { - OstTraceFunctionEntry0(CNCMSHAREDSTATEMANAGER_CONSTRUCTL); - - TInt ccStartRequested = ENcmStartRequested; - User::LeaveIfError(RProperty::Get(KUsbmanSvrUid, KKeyNcmSharedState, ccStartRequested)); - if (ccStartRequested != ENcmStartRequested) - { - User::Leave(KErrNotReady); - } - - User::LeaveIfError(iProperty.Define(KKeyNcmConnectionEvent, RProperty::EByteArray, KAllowAllPolicy, KNetworkControlPolicy)); - User::LeaveIfError(iProperty.Attach(RProcess().SecureId(), KKeyNcmConnectionEvent, EOwnerThread)); - - iCoexistBearer = CNcmCoexistBearerWatcher::NewL(); - - iNcmState().iIapId = 0; - OstTraceFunctionExit0(CNCMSHAREDSTATEMANAGER_CONSTRUCTL_DUP01); - } - -/** -Maintains the shared state between the NCM class controller and packet driver. -*/ -void CNcmSharedStateManager::RunL() - { - TInt err = iStatus.Int(); - - OstTrace1(TRACE_NORMAL, CNCMSHAREDSTATEMANAGER_RUNL, "iStatus.Int()=%d", iStatus.Int()); - - if (KErrNone == err) - { - DoDhcpProvisionRequest(); - } - else if (KErrCancel != err) - { - NotifyNcmDisconnected(err); - } - } - -/** -Stop checking the shared state -*/ -void CNcmSharedStateManager::DoCancel() - { - iCoexistBearer->Cancel(); - } - -TInt CNcmSharedStateManager::NotifyDhcpProvisionRequested() - { - OstTraceFunctionEntry0(CNCMSHAREDSTATEMANAGER_NOTIFYDHCPPROVISIONREQUESTED); - - TInt ret = iCoexistBearer->SetIpOverUsbActive(iStatus); - - if (ret == KErrCompletion) - { - return DoDhcpProvisionRequest(); - } - else if (ret == KErrNone) - { - //notify the upper apps BTPAN is used by others. - NotifyNcmDisconnected(KErrInUse); - SetActive(); - } - else - { - NotifyNcmDisconnected(ret); - } - - OstTraceFunctionEntry0(CNCMSHAREDSTATEMANAGER_NOTIFYDHCPPROVISIONREQUESTED_DUP01); - return ret; - } - -TInt CNcmSharedStateManager::DoDhcpProvisionRequest() - { - if (iNotifyMsg.IsNull()) - { - __ASSERT_DEBUG(0, User::Panic(KPanicSharedState, __LINE__)); - - //return AlreadyExists, so that Engine can start immediately. - return KErrAlreadyExists; - } - else - { - iNotifyMsg.Complete(KErrNone); - iNotifyMsg = RMessage2(); - } - - return KErrNone; - } - - -void CNcmSharedStateManager::NotifyNcmConnected() - { - iNcmState().iState = ENcmStateConnected; - iProperty.Set(iNcmState); - } - -void CNcmSharedStateManager::NotifyNcmDisconnected(TInt aReason) - { - iNcmState().iState = ENcmStateDisconnected; - iNcmState().iErrCode = aReason; - iProperty.Set(iNcmState); - - if (iCoexistBearer->IsIpOverUsbActived()) - { - iCoexistBearer->SetIpOverUsbDeactive(); - } - else - { - Cancel(); - } - } - -TInt CNcmSharedStateManager::SetStateValue(TInt aType, TInt aValue) - { - OstTraceExt2(TRACE_NORMAL, CNCMSHAREDSTATEMANAGER_SETSTATEVALUE, "SetStateValue: type=%d, val=%d", aType, aValue); - - const TInt KTypeIapId = 0; - const TInt KTypeDhcpReturn = 1; - TInt ret = KErrNone; - switch(aType) - { - case KTypeIapId: - //don't assign more than once. - __ASSERT_DEBUG(iNcmState().iIapId==0, User::Panic(KPanicSharedState, __LINE__)); - iNcmState().iIapId = aValue; - break; - - case KTypeDhcpReturn: - if (KErrNone == aValue) - { - iEngine.NotifyDhcpStarted(); - } - else - { - OstTrace1(TRACE_WARNING, CNCMSHAREDSTATEMANAGER_SETSTATEVALUE_DUP01, "Dhcp Provision Request return error:%d", aValue); - NotifyNcmDisconnected(aValue); - } - break; - - default: - OstTraceExt2(TRACE_ERROR, CNCMSHAREDSTATEMANAGER_SETSTATEVALUE_DUP02, "unknow type:%d, value:%d", aType, aValue); - __ASSERT_DEBUG(0, User::Panic(KPanicSharedState, __LINE__)); - break; - } - - return ret; - } - -TInt CNcmSharedStateManager::RegisterNotify(const RMessage2& aMsg) - { - if (!iNotifyMsg.IsNull()) - { - return KErrInUse; - } - - iNotifyMsg = aMsg; - - return KErrNone; - } - -TInt CNcmSharedStateManager::DeRegisterNotify() - { - if (iNotifyMsg.IsNull()) - { - return KErrNotReady; - } - else - { - iNotifyMsg.Complete(KErrCancel); - iNotifyMsg = RMessage2(); - } - - return KErrNone; - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/pktdrv/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,307 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_ERROR=0x40 -[GROUP]TRACE_FATAL=0x1 -[GROUP]TRACE_FLOW=0x7 -[GROUP]TRACE_NORMAL=0x3 -[GROUP]TRACE_WARNING=0x41 -[TRACE]TRACE_ERROR[0x40]_CNCMCOEXISTBEARERWATCHER_CONSTRUCTL_DUP02=0x1 -[TRACE]TRACE_ERROR[0x40]_CNCMCOEXISTBEARERWATCHER_DOACTIVE=0x2 -[TRACE]TRACE_ERROR[0x40]_CNCMCOEXISTBEARERWATCHER_DOACTIVE_DUP01=0x3 -[TRACE]TRACE_ERROR[0x40]_CNCMCOEXISTBEARERWATCHER_DOACTIVE_DUP02=0x4 -[TRACE]TRACE_ERROR[0x40]_CNCMCOEXISTBEARERWATCHER_DOACTIVE_DUP03=0x5 -[TRACE]TRACE_ERROR[0x40]_CNCMCOMMUNICATIONINTERFACE_DECODESETUP=0x6 -[TRACE]TRACE_ERROR[0x40]_CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA1=0x7 -[TRACE]TRACE_ERROR[0x40]_CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA2=0x8 -[TRACE]TRACE_ERROR[0x40]_CNCMDATARECEIVER_READDATA_DUP03=0xa -[TRACE]TRACE_ERROR[0x40]_CNCMDATARECEIVER_RUNL=0xb -[TRACE]TRACE_ERROR[0x40]_CNCMDATARECEIVER_START_DUP01=0x9 -[TRACE]TRACE_ERROR[0x40]_CNCMDATASENDER_START=0xc -[TRACE]TRACE_ERROR[0x40]_CNCMENGINE_DATAERROR=0xe -[TRACE]TRACE_ERROR[0x40]_CNCMENGINE_START_DUP01=0xd -[TRACE]TRACE_ERROR[0x40]_CNCMNTB16PARSER_PARSENCMNTB16HEADER=0xf -[TRACE]TRACE_ERROR[0x40]_CNCMNTB16PARSER_QUEUEBUF=0x10 -[TRACE]TRACE_ERROR[0x40]_CNCMSHAREDSTATEMANAGER_SETSTATEVALUE_DUP02=0x11 -[TRACE]TRACE_FATAL[0x1]_CNCMBUFFERMANAGER_SETBUFFERCELLSIZE1=0x1 -[TRACE]TRACE_FATAL[0x1]_CNCMCOMMINTERFACESENDERANDRECEIVER_READ_DUP1=0x3 -[TRACE]TRACE_FATAL[0x1]_CNCMCOMMINTERFACESENDERANDRECEIVER_START1=0x2 -[TRACE]TRACE_FATAL[0x1]_CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE1=0x4 -[TRACE]TRACE_FATAL[0x1]_CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE2=0x5 -[TRACE]TRACE_FATAL[0x1]_CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE3=0x6 -[TRACE]TRACE_FATAL[0x1]_CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE4=0x7 -[TRACE]TRACE_FATAL[0x1]_CNCMCOMMUNICATIONINTERFACE_READSETUP=0x9 -[TRACE]TRACE_FATAL[0x1]_CNCMCOMMUNICATIONINTERFACE_START1=0x8 -[TRACE]TRACE_FATAL[0x1]_CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA=0xa -[TRACE]TRACE_FATAL[0x1]_CNCMDATASENDER_SENDNTBPAYLOAD4=0x10 -[TRACE]TRACE_FATAL[0x1]_CNCMDATASENDER_SETNTBINMAXSIZE1=0x11 -[TRACE]TRACE_FATAL[0x1]_CNCMDATASENDER_START1=0xb -[TRACE]TRACE_FATAL[0x1]_CNCMDATASENDER_START2=0xc -[TRACE]TRACE_FATAL[0x1]_CNCMDATASENDER_START3=0xd -[TRACE]TRACE_FATAL[0x1]_CNCMDATASENDER_START5=0xe -[TRACE]TRACE_FATAL[0x1]_CNCMDATASENDER_STARTNEWNTB=0xf -[TRACE]TRACE_FLOW[0x7]_CNCMBUFFERMANAGER_CNCMBUFFERMANAGER_ENTRY=0x3 -[TRACE]TRACE_FLOW[0x7]_CNCMBUFFERMANAGER_CNCMBUFFERMANAGER_EXIT=0x4 -[TRACE]TRACE_FLOW[0x7]_CNCMBUFFERMANAGER_FREEBUFFER_ENTRY=0x8 -[TRACE]TRACE_FLOW[0x7]_CNCMBUFFERMANAGER_FREEBUFFER_EXIT=0x9 -[TRACE]TRACE_FLOW[0x7]_CNCMBUFFERMANAGER_GETBUFFER_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x7]_CNCMBUFFERMANAGER_GETBUFFER_EXIT=0x6 -[TRACE]TRACE_FLOW[0x7]_CNCMBUFFERMANAGER_GETBUFFER_EXIT_DUP1=0x7 -[TRACE]TRACE_FLOW[0x7]_CNCMBUFFERMANAGER_NEWL_ENTRY=0x1 -[TRACE]TRACE_FLOW[0x7]_CNCMBUFFERMANAGER_NEWL_EXIT=0x2 -[TRACE]TRACE_FLOW[0x7]_CNCMBUFFERMANAGER_SETBUFFERCELLSIZE_ENTRY=0xa -[TRACE]TRACE_FLOW[0x7]_CNCMBUFFERMANAGER_SETBUFFERCELLSIZE_EXIT=0xb -[TRACE]TRACE_FLOW[0x7]_CNCMBUFFERMANAGER_SETBUFFERCELLSIZE_EXIT_DUP1=0xc -[TRACE]TRACE_FLOW[0x7]_CNCMCOEXISTBEARERWATCHER_CONSTRUCTL=0xd -[TRACE]TRACE_FLOW[0x7]_CNCMCOEXISTBEARERWATCHER_CONSTRUCTL_DUP01=0xe -[TRACE]TRACE_FLOW[0x7]_CNCMCOEXISTBEARERWATCHER_DOCANCEL=0x12 -[TRACE]TRACE_FLOW[0x7]_CNCMCOEXISTBEARERWATCHER_SETIPOVERUSBACTIVE=0xf -[TRACE]TRACE_FLOW[0x7]_CNCMCOEXISTBEARERWATCHER_SETIPOVERUSBACTIVE_DUP02=0x10 -[TRACE]TRACE_FLOW[0x7]_CNCMCOEXISTBEARERWATCHER_SETIPOVERUSBACTIVE_DUP03=0x11 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_DOCANCEL_ENTRY=0x28 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_DOCANCEL_EXIT=0x29 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA_ENTRY=0x21 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA_EXIT=0x22 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA_EXIT_DUP1=0x23 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA_EXIT_DUP2=0x24 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA_EXIT_DUP3=0x25 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_READ_ENTRY=0x18 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_READ_EXIT=0x19 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_READ_EXIT_DUP1=0x1a -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_RUNL_ENTRY=0x26 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_RUNL_EXIT=0x27 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_START_ENTRY=0x13 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_START_EXIT=0x14 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_START_EXIT_DUP1=0x15 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_STOP_ENTRY=0x16 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_STOP_EXIT=0x17 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE_ENTRY=0x1b -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE_EXIT=0x1c -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE_EXIT_DUP1=0x1d -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE_EXIT_DUP2=0x1e -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE_EXIT_DUP3=0x1f -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE_EXIT_DUP4=0x20 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_CNCMCOMMUNICATIONINTERFACE_ENTRY=0x2c -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_CNCMCOMMUNICATIONINTERFACE_EXIT=0x2d -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_CONTROLMSGERROR_ENTRY=0x46 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_CONTROLMSGERROR_EXIT=0x47 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_DECODESETUP_ENTRY=0x35 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_DECODESETUP_EXIT=0x36 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_DOCANCEL_ENTRY=0x3f -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_DOCANCEL_EXIT=0x40 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_GETINTERFACENUMBER_ENTRY=0x4f -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_GETINTERFACENUMBER_EXIT=0x50 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_GETINTERFACENUMBER_EXIT_DUP1=0x51 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_GETINTERFACENUMBER_EXIT_DUP2=0x52 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_GETINTERFACENUMBER_EXIT_DUP3=0x53 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_NEWL_ENTRY=0x2a -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_NEWL_EXIT=0x2b -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_PARSEDATAOUT_ENTRY=0x39 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_PARSEDATAOUT_EXIT=0x3a -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_READDATAOUT_ENTRY=0x37 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_READDATAOUT_EXIT=0x38 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_READSETUP_ENTRY=0x32 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_READSETUP_EXIT=0x33 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_READSETUP_EXIT_DUP1=0x34 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_RUNL_ENTRY=0x43 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_RUNL_EXIT=0x44 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_RUNL_EXIT_DUP1=0x45 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_SENDCONNECTIONNOTIFICATION_ENTRY=0x3b -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_SENDSPEEDNOTIFICATION_ENTRY=0x3c -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_START_ENTRY=0x2e -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_START_EXIT=0x2f -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_START_EXIT_DUP1=0x30 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_START_EXIT_DUP2=0x31 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_STOP_ENTRY=0x41 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_STOP_EXIT=0x42 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_WRITEDATAIN_ENTRY=0x3d -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_WRITEDATAIN_EXIT=0x3e -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA_ENTRY=0x48 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA_EXIT=0x49 -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA_EXIT_DUP1=0x4a -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA_EXIT_DUP2=0x4b -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA_EXIT_DUP3=0x4c -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA_EXIT_DUP4=0x4d -[TRACE]TRACE_FLOW[0x7]_CNCMCOMMUNICATIONINTERFACE_WRITEINTERRUPTDATA_EXIT_DUP5=0x4e -[TRACE]TRACE_FLOW[0x7]_CNCMDATAINTERFACE_CNCMDATAINTERFACE_DUP01=0x56 -[TRACE]TRACE_FLOW[0x7]_CNCMDATAINTERFACE_CNCMDATAINTERFACE_DUP02=0x57 -[TRACE]TRACE_FLOW[0x7]_CNCMDATAINTERFACE_CONSTRUCTL=0x54 -[TRACE]TRACE_FLOW[0x7]_CNCMDATAINTERFACE_CONSTRUCTL_DUP01=0x55 -[TRACE]TRACE_FLOW[0x7]_CNCMDATAINTERFACE_START=0x58 -[TRACE]TRACE_FLOW[0x7]_CNCMDATAINTERFACE_START_DUP01=0x59 -[TRACE]TRACE_FLOW[0x7]_CNCMDATAINTERFACE_STOP=0x5a -[TRACE]TRACE_FLOW[0x7]_CNCMDATAINTERFACE_STOP_DUP01=0x5b -[TRACE]TRACE_FLOW[0x7]_CNCMDATARECEIVER_CNCMDATARECEIVER_DUP01=0x5e -[TRACE]TRACE_FLOW[0x7]_CNCMDATARECEIVER_DOCANCEL=0x64 -[TRACE]TRACE_FLOW[0x7]_CNCMDATARECEIVER_NEWL=0x5c -[TRACE]TRACE_FLOW[0x7]_CNCMDATARECEIVER_NEWL_DUP01=0x5d -[TRACE]TRACE_FLOW[0x7]_CNCMDATARECEIVER_READDATA=0x62 -[TRACE]TRACE_FLOW[0x7]_CNCMDATARECEIVER_READDATA_DUP01=0x63 -[TRACE]TRACE_FLOW[0x7]_CNCMDATARECEIVER_START=0x5f -[TRACE]TRACE_FLOW[0x7]_CNCMDATARECEIVER_START_DUP02=0x60 -[TRACE]TRACE_FLOW[0x7]_CNCMDATARECEIVER_START_DUP03=0x61 -[TRACE]TRACE_FLOW[0x7]_CNCMDATARECEIVER_STOP=0x65 -[TRACE]TRACE_FLOW[0x7]_CNCMDATARECEIVER_STOP_DUP01=0x66 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_DOCANCEL_ENTRY=0x7a -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_DOCANCEL_EXIT=0x7b -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_NEWL_ENTRY=0x67 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_NEWL_EXIT=0x68 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_RUNL_ENTRY=0x70 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_RUNL_EXIT=0x71 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_RUNL_EXIT_DUP1=0x72 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_SENDNTBCOMPLETE_ENTRY=0x7f -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_SENDNTBCOMPLETE_EXIT=0x80 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_SENDNTBPAYLOAD_ENTRY=0x7c -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_SENDNTBPAYLOAD_EXIT=0x7d -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_SENDNTBPAYLOAD_EXIT_DUP1=0x7e -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_SEND_ENTRY=0x75 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_SEND_EXIT=0x76 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_SEND_EXIT_DUP1=0x77 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_SEND_EXIT_DUP2=0x78 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_SEND_EXIT_DUP3=0x79 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_SETINEPBUFFERSIZE_ENTRY=0x88 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_SETINEPBUFFERSIZE_EXIT=0x89 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_SETNTBINMAXSIZE_ENTRY=0x81 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_SETNTBINMAXSIZE_EXIT=0x82 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_SETNTBINMAXSIZE_EXIT_DUP1=0x83 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_SETNTBINMAXSIZE_EXIT_DUP2=0x84 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_SETNTBINMAXSIZE_EXIT_DUP4=0x85 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_STARTNEWNTB_ENTRY=0x73 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_STARTNEWNTB_EXIT=0x74 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_START_ENTRY=0x69 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_START_EXIT=0x6a -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_START_EXIT_DUP1=0x6b -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_START_EXIT_DUP2=0x6c -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_START_EXIT_DUP3=0x6d -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_START_EXIT_DUP4=0x6e -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_START_EXIT_DUP5=0x6f -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_STOP_ENTRY=0x86 -[TRACE]TRACE_FLOW[0x7]_CNCMDATASENDER_STOP_EXIT=0x87 -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_CNCMENGINE_DUP10=0x8e -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_CNCMENGINE_DUP11=0x8f -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_CONSTRUCTL=0x8c -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_CONSTRUCTL_DUP01=0x8d -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_DOCANCEL=0x96 -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_DONCMSTARTED=0x97 -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_HANDLEGETNTBINPUTSIZE=0x9d -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_HANDLEGETNTBPARAM=0x9c -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_HANDLESETNTBINPUTSIZE=0x9b -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_INITLDDL=0x90 -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_INITLDDL_DUP01=0x91 -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_NEWL=0x8a -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_NEWL_DUP01=0x8b -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_NOTIFYDHCPSTARTED=0x9e -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_RESUMESENDING=0x9f -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_START=0x92 -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_STARTDATALAYER=0x98 -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_START_DUP10=0x93 -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_START_DUP11=0x94 -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_START_DUP12=0x95 -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_STOP=0x9a -[TRACE]TRACE_FLOW[0x7]_CNCMENGINE_STOPDATALAYER=0x99 -[TRACE]TRACE_FLOW[0x7]_CNCMNTB16BUILDER_APPENDPACKET_ENTRY=0xa9 -[TRACE]TRACE_FLOW[0x7]_CNCMNTB16BUILDER_APPENDPACKET_EXIT=0xaa -[TRACE]TRACE_FLOW[0x7]_CNCMNTB16BUILDER_BUILDNDP_ENTRY=0xa7 -[TRACE]TRACE_FLOW[0x7]_CNCMNTB16BUILDER_BUILDNDP_EXIT=0xa8 -[TRACE]TRACE_FLOW[0x7]_CNCMNTB16BUILDER_BUILDNTBHEADER_ENTRY=0xa5 -[TRACE]TRACE_FLOW[0x7]_CNCMNTB16BUILDER_BUILDNTBHEADER_EXIT=0xa6 -[TRACE]TRACE_FLOW[0x7]_CNCMNTB16BUILDER_COMPLETENTBBUILD_ENTRY=0xac -[TRACE]TRACE_FLOW[0x7]_CNCMNTB16BUILDER_COMPLETENTBBUILD_EXIT=0xad -[TRACE]TRACE_FLOW[0x7]_CNCMNTB16BUILDER_NEWL_ENTRY=0xa0 -[TRACE]TRACE_FLOW[0x7]_CNCMNTB16BUILDER_NEWL_EXIT=0xa1 -[TRACE]TRACE_FLOW[0x7]_CNCMNTB16BUILDER_RESET_ENTRY=0xb0 -[TRACE]TRACE_FLOW[0x7]_CNCMNTB16BUILDER_RESET_EXIT=0xb1 -[TRACE]TRACE_FLOW[0x7]_CNCMNTB16BUILDER_SETNTBINMAXSIZE_ENTRY=0xa2 -[TRACE]TRACE_FLOW[0x7]_CNCMNTB16BUILDER_SETNTBINMAXSIZE_EXIT=0xa3 -[TRACE]TRACE_FLOW[0x7]_CNCMNTB16BUILDER_STARTNEWNTB_ENTRY=0xae -[TRACE]TRACE_FLOW[0x7]_CNCMNTB16BUILDER_STARTNEWNTB_EXIT=0xaf -[TRACE]TRACE_FLOW[0x7]_CNCMNTBBUILDSIMPLEPOLICY_CNCMNTBBUILDSIMPLEPOLICY_ENTRY=0xb4 -[TRACE]TRACE_FLOW[0x7]_CNCMNTBBUILDSIMPLEPOLICY_CNCMNTBBUILDSIMPLEPOLICY_EXIT=0xb5 -[TRACE]TRACE_FLOW[0x7]_CNCMNTBBUILDSIMPLEPOLICY_COMPLETENTBBUILD_ENTRY=0xbb -[TRACE]TRACE_FLOW[0x7]_CNCMNTBBUILDSIMPLEPOLICY_COMPLETENTBBUILD_EXIT=0xbc -[TRACE]TRACE_FLOW[0x7]_CNCMNTBBUILDSIMPLEPOLICY_DOCANCEL_ENTRY=0xb6 -[TRACE]TRACE_FLOW[0x7]_CNCMNTBBUILDSIMPLEPOLICY_DOCANCEL_EXIT=0xb7 -[TRACE]TRACE_FLOW[0x7]_CNCMNTBBUILDSIMPLEPOLICY_NEWL_ENTRY=0xb2 -[TRACE]TRACE_FLOW[0x7]_CNCMNTBBUILDSIMPLEPOLICY_NEWL_EXIT=0xb3 -[TRACE]TRACE_FLOW[0x7]_CNCMNTBBUILDSIMPLEPOLICY_RUNL_ENTRY=0xb8 -[TRACE]TRACE_FLOW[0x7]_CNCMNTBBUILDSIMPLEPOLICY_RUNL_EXIT=0xb9 -[TRACE]TRACE_FLOW[0x7]_CNCMNTBBUILDSIMPLEPOLICY_RUNL_EXIT_DUP1=0xba -[TRACE]TRACE_FLOW[0x7]_CNCMNTBBUILDSIMPLEPOLICY_STARTNEWNTB_ENTRY=0xbd -[TRACE]TRACE_FLOW[0x7]_CNCMNTBBUILDSIMPLEPOLICY_STARTNEWNTB_EXIT=0xbe -[TRACE]TRACE_FLOW[0x7]_CNCMNTBBUILDSIMPLEPOLICY_UPDATENTB_ENTRY=0xbf -[TRACE]TRACE_FLOW[0x7]_CNCMNTBBUILDSIMPLEPOLICY_UPDATENTB_EXIT=0xc0 -[TRACE]TRACE_FLOW[0x7]_CNCMNTB_DUP116BUILDER_APPENDPACKET_EXIT=0xab -[TRACE]TRACE_FLOW[0x7]_CNCMNTB_DUP116BUILDER_SETNTBINMAXSIZE_EXIT=0xa4 -[TRACE]TRACE_FLOW[0x7]_CNCMPKTDRV_CONSTRUCTL=0xc1 -[TRACE]TRACE_FLOW[0x7]_CNCMPKTDRV_STARTINTERFACE=0xc2 -[TRACE]TRACE_FLOW[0x7]_CNCMPKTDRV_STARTINTERFACE_DUP01=0xc3 -[TRACE]TRACE_FLOW[0x7]_CNCMPKTDRV_STOPINTERFACE=0xc4 -[TRACE]TRACE_FLOW[0x7]_CNCMSESSION_SERVICEL=0xcb -[TRACE]TRACE_FLOW[0x7]_CNCMSHAREDSTATEMANAGER_CNCMSHAREDSTATEMANAGER=0xc5 -[TRACE]TRACE_FLOW[0x7]_CNCMSHAREDSTATEMANAGER_CNCMSHAREDSTATEMANAGER_DUP01=0xc6 -[TRACE]TRACE_FLOW[0x7]_CNCMSHAREDSTATEMANAGER_CONSTRUCTL=0xc7 -[TRACE]TRACE_FLOW[0x7]_CNCMSHAREDSTATEMANAGER_CONSTRUCTL_DUP01=0xc8 -[TRACE]TRACE_FLOW[0x7]_CNCMSHAREDSTATEMANAGER_NOTIFYDHCPPROVISIONREQUESTED=0xc9 -[TRACE]TRACE_FLOW[0x7]_CNCMSHAREDSTATEMANAGER_NOTIFYDHCPPROVISIONREQUESTED_DUP01=0xca -[TRACE]TRACE_NORMAL[0x3]_CNCMBUFFERMANAGER_INITBUFFERAREA=0x1 -[TRACE]TRACE_NORMAL[0x3]_CNCMBUFFERMANAGER_ISCONGESTION=0x3 -[TRACE]TRACE_NORMAL[0x3]_CNCMBUFFERMANAGER_SETBUFFERCELLSIZE=0x2 -[TRACE]TRACE_NORMAL[0x3]_CNCMCOEXISTBEARERWATCHER_RUNL=0x6 -[TRACE]TRACE_NORMAL[0x3]_CNCMCOEXISTBEARERWATCHER_RUNL_DUP01=0x7 -[TRACE]TRACE_NORMAL[0x3]_CNCMCOEXISTBEARERWATCHER_SETIPOVERUSBACTIVE_DUP01=0x4 -[TRACE]TRACE_NORMAL[0x3]_CNCMCOEXISTBEARERWATCHER_SETIPOVERUSBDEACTIVE=0x5 -[TRACE]TRACE_NORMAL[0x3]_CNCMCOMMINTERFACESENDERANDRECEIVER_READ=0x8 -[TRACE]TRACE_NORMAL[0x3]_CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA=0xa -[TRACE]TRACE_NORMAL[0x3]_CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA1=0xb -[TRACE]TRACE_NORMAL[0x3]_CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA2=0xc -[TRACE]TRACE_NORMAL[0x3]_CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA3=0xd -[TRACE]TRACE_NORMAL[0x3]_CNCMCOMMINTERFACESENDERANDRECEIVER_READDATA4=0xe -[TRACE]TRACE_NORMAL[0x3]_CNCMCOMMINTERFACESENDERANDRECEIVER_RUNL=0xf -[TRACE]TRACE_NORMAL[0x3]_CNCMCOMMINTERFACESENDERANDRECEIVER_RUNL1=0x10 -[TRACE]TRACE_NORMAL[0x3]_CNCMCOMMINTERFACESENDERANDRECEIVER_RUNL2=0x11 -[TRACE]TRACE_NORMAL[0x3]_CNCMCOMMINTERFACESENDERANDRECEIVER_WRITE=0x9 -[TRACE]TRACE_NORMAL[0x3]_CNCMCOMMUNICATIONINTERFACE_CONTROLMSGERROR=0x12 -[TRACE]TRACE_NORMAL[0x3]_CNCMDATAINTERFACE_ACTIVATELDD=0x13 -[TRACE]TRACE_NORMAL[0x3]_CNCMDATAINTERFACE_RUNL=0x14 -[TRACE]TRACE_NORMAL[0x3]_CNCMDATARECEIVER_READDATA_DUP02=0x15 -[TRACE]TRACE_NORMAL[0x3]_CNCMDATASENDER_RUNL=0x17 -[TRACE]TRACE_NORMAL[0x3]_CNCMDATASENDER_SEND2=0x18 -[TRACE]TRACE_NORMAL[0x3]_CNCMDATASENDER_SENDNTBCOMPLETE3=0x1d -[TRACE]TRACE_NORMAL[0x3]_CNCMDATASENDER_SENDNTBPAYLOAD=0x19 -[TRACE]TRACE_NORMAL[0x3]_CNCMDATASENDER_SENDNTBPAYLOAD1=0x1a -[TRACE]TRACE_NORMAL[0x3]_CNCMDATASENDER_SENDNTBPAYLOAD2=0x1b -[TRACE]TRACE_NORMAL[0x3]_CNCMDATASENDER_SENDNTBPAYLOAD3=0x1c -[TRACE]TRACE_NORMAL[0x3]_CNCMDATASENDER_SETINEPBUFFERSIZE=0x1f -[TRACE]TRACE_NORMAL[0x3]_CNCMDATASENDER_SETNTBINMAXSIZE=0x1e -[TRACE]TRACE_NORMAL[0x3]_CNCMDATASENDER_START4=0x16 -[TRACE]TRACE_NORMAL[0x3]_CNCMENGINE_CONTROLERROR=0x22 -[TRACE]TRACE_NORMAL[0x3]_CNCMENGINE_HANDLEALTSETTING=0x28 -[TRACE]TRACE_NORMAL[0x3]_CNCMENGINE_INTERFACEADDRESS=0x25 -[TRACE]TRACE_NORMAL[0x3]_CNCMENGINE_PROCESSRECEIVEDDATAGRAM=0x27 -[TRACE]TRACE_NORMAL[0x3]_CNCMENGINE_RANDOMMACADDRESSL=0x26 -[TRACE]TRACE_NORMAL[0x3]_CNCMENGINE_RUNL=0x21 -[TRACE]TRACE_NORMAL[0x3]_CNCMENGINE_SEND=0x24 -[TRACE]TRACE_NORMAL[0x3]_CNCMENGINE_SETINEPBUFFERSIZE=0x29 -[TRACE]TRACE_NORMAL[0x3]_CNCMENGINE_STARTDATALAYER_DUP02=0x23 -[TRACE]TRACE_NORMAL[0x3]_CNCMENGINE_START_DUP02=0x20 -[TRACE]TRACE_NORMAL[0x3]_CNCMNTB16BUILDER_BUILDNTBHEADER=0x2a -[TRACE]TRACE_NORMAL[0x3]_CNCMNTB16PARSER_DATAPACKET=0x34 -[TRACE]TRACE_NORMAL[0x3]_CNCMNTB16PARSER_PARSE=0x2d -[TRACE]TRACE_NORMAL[0x3]_CNCMNTB16PARSER_PARSENCMNTB16HEADER_DUP01=0x31 -[TRACE]TRACE_NORMAL[0x3]_CNCMNTB16PARSER_PARSENCMNTB16NDPDATAGRAM=0x32 -[TRACE]TRACE_NORMAL[0x3]_CNCMNTB16PARSER_PARSENCMNTB16NDPDATAGRAM_DUP01=0x33 -[TRACE]TRACE_NORMAL[0x3]_CNCMNTB16PARSER_PARSE_DUP01=0x2e -[TRACE]TRACE_NORMAL[0x3]_CNCMNTB16PARSER_PARSE_DUP02=0x2f -[TRACE]TRACE_NORMAL[0x3]_CNCMNTB16PARSER_SEARCHNCMHEAD=0x30 -[TRACE]TRACE_NORMAL[0x3]_CNCMNTBBUILDSIMPLEPOLICY_RUNL=0x2b -[TRACE]TRACE_NORMAL[0x3]_CNCMNTBBUILDSIMPLEPOLICY_UPDATENTB=0x2c -[TRACE]TRACE_NORMAL[0x3]_CNCMPKTDRV_STARTINTERFACE_DUP02=0x35 -[TRACE]TRACE_NORMAL[0x3]_CNCMSESSION_SERVICEL_DUP01=0x38 -[TRACE]TRACE_NORMAL[0x3]_CNCMSHAREDSTATEMANAGER_RUNL=0x36 -[TRACE]TRACE_NORMAL[0x3]_CNCMSHAREDSTATEMANAGER_SETSTATEVALUE=0x37 -[TRACE]TRACE_WARNING[0x41]_CNCMCOEXISTBEARERWATCHER_DOACTIVE_DUP04=0x1 -[TRACE]TRACE_WARNING[0x41]_CNCMCOMMUNICATIONINTERFACE_PARSEDATAOUT=0x3 -[TRACE]TRACE_WARNING[0x41]_CNCMCOMMUNICATIONINTERFACE_START=0x2 -[TRACE]TRACE_WARNING[0x41]_CNCMDATASENDER_SEND1=0x4 -[TRACE]TRACE_WARNING[0x41]_CNCMENGINE_NOTIFYDHCPSTARTED_DUP01=0x7 -[TRACE]TRACE_WARNING[0x41]_CNCMENGINE_STARTDATALAYER_DUP01=0x5 -[TRACE]TRACE_WARNING[0x41]_CNCMENGINE_STARTDATALAYER_DUP03=0x6 -[TRACE]TRACE_WARNING[0x41]_CNCMSHAREDSTATEMANAGER_SETSTATEVALUE_DUP01=0x8 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/server/group/server.mmh --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/server/group/server.mmh Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ -/* -* 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: -* -*/ - -USERINCLUDE ../inc - -SOURCEPATH ../src -SOURCE ncmserver.cpp -SOURCE ncmsession.cpp diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/server/inc/ncmserver.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/server/inc/ncmserver.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMSERVER_H -#define NCMSERVER_H - -#include - -class CNcmEngine; - -NONSHARABLE_CLASS(CNcmServer) : public CPolicyServer - { -public: - static CNcmServer* NewL(CNcmEngine& aEngine); - ~CNcmServer(); - -private: - CNcmServer(CNcmEngine& aEngine); - -private: - // from CPolicyServer - CSession2* NewSessionL(const TVersion &aVersion, const RMessage2& aMessage) const; - -private: - // unowned - CNcmEngine& iNcmEngine; - }; - -#endif // NCMSERVER_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/server/inc/ncmserverconsts.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/server/inc/ncmserverconsts.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMSERVERCONSTS_H -#define NCMSERVERCONSTS_H - -#include - -_LIT(KNcmServerName, "!NcmInternalSrv"); - -/** Version numbers. */ -const TInt8 KNcmSrvMajorVersionNumber = 1; -const TInt8 KNcmSrvMinorVersionNumber = 1; -const TInt16 KNcmSrvBuildNumber = 0; - -/** IPC messages supported by the server. */ -enum TNcmIpc - { - ENcmTransferHandle = 0, - ENcmSetIapId, - ENcmSetDhcpResult, - ENcmDhcpProvisionNotify, - ENcmDhcpProvisionNotifyCancel, - ENcmTransferBufferSize, - ENcmNotSupport - }; - -/** Panic category with which the NCM server panics the client. */ -_LIT(KNcmSrvPanic,"NCMInternSrv"); - -/** Panic codes with which the NCM server panics the client. */ -enum TNcmSvrPanic - { - /** The client has sent a bad IPC message number. */ - ENcmBadNcmMessage = 0 - }; - -/** Set value to server. the value is defined by type.*/ -enum TNcmSetType - { - ENcmSetTypeIapId, - ENcmSetTypeDhcpReturn - }; - -#endif // NCMSERVERCONSTS_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/server/inc/ncmserversecuritypolicy.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/server/inc/ncmserversecuritypolicy.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMSERVERSECURITYPOLICY_H -#define NCMSERVERSECURITYPOLICY_H - -#include -#include "ncmserverconsts.h" - -/** NCM Server Security Policy Definition */ -const TInt KNcmServerRanges[] = - { - ENcmTransferHandle, /** pass */ - ENcmNotSupport, /** fail (to KMaxTInt) */ - }; - -const TUint KNcmServerRangeCount = sizeof(KNcmServerRanges) / sizeof(KNcmServerRanges[0]); - -/** Index numbers into KAcmServerElements[] */ -const TInt KPolicyPass = 0; - -/** Mapping IPCs to policy element */ -const TUint8 KNcmServerElementsIndex[KNcmServerRangeCount] = - { - KPolicyPass, /** All (valid) APIs */ - CPolicyServer::ENotSupported, /** remainder of possible IPCs */ - }; - -/** Individual policy elements */ -const CPolicyServer::TPolicyElement KNcmServerElements[] = - { - { - // These caps are those of USBSVR's process. This is the recommended - // way to check that an API is called by a specific process only. [The - // alternative would be an SID check.] - //_INIT_SECURITY_POLICY_C5(ECapabilityCommDD, ECapabilityNetworkControl, ECapabilityNetworkServices, ECapabilityLocalServices, ECapabilityProtServ), CPolicyServer::EFailClient - _INIT_SECURITY_POLICY_PASS - }, - }; - -/** Main policy */ -const CPolicyServer::TPolicy KNcmServerPolicy = - { - CPolicyServer::EAlwaysPass, /** Specifies all connect attempts should pass */ - KNcmServerRangeCount, - KNcmServerRanges, - KNcmServerElementsIndex, - KNcmServerElements, - }; - -#endif // NCMSERVERSECURITYPOLICY_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/server/inc/ncmsession.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/server/inc/ncmsession.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -/* -* 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 -*/ - -#ifndef NCMSESSION_H -#define NCMSESSION_H - -#include - - -class CNcmEngine; - -NONSHARABLE_CLASS(CNcmSession) : public CSession2 - { -public: - static CNcmSession* NewL(CNcmEngine& aEngine); - ~CNcmSession(); - -private: - CNcmSession(CNcmEngine& aEngine); - -private: // from CSession2 - /** - Called when a message is received from the client. - @param aMessage Message received from the client. - */ - void ServiceL(const RMessage2& aMessage); - -private: - // unowned - CNcmEngine& iNcmEngine; - }; - -#endif // NCMSESSION_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/server/src/ncmserver.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/server/src/ncmserver.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -/* -* 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 "ncmserver.h" -#include "ncmsession.h" -#include "ncmserversecuritypolicy.h" -#include "ncmserverconsts.h" - - -CNcmServer* CNcmServer::NewL(CNcmEngine& aEngine) - { - CNcmServer* self = new(ELeave) CNcmServer(aEngine); - CleanupStack::PushL(self); - TInt err = self->Start(KNcmServerName); - // KErrAlreadyExists is a success case (c.f. transient server boilerplate - // code). - if ( err != KErrAlreadyExists ) - { - User::LeaveIfError(err); - } - CleanupStack::Pop(self); - return self; - } - -CNcmServer::~CNcmServer() - { - } - -CNcmServer::CNcmServer(CNcmEngine& aEngine) - : CPolicyServer(CActive::EPriorityStandard, KNcmServerPolicy, ESharableSessions), - iNcmEngine(aEngine) - { - } - -CSession2* CNcmServer::NewSessionL(const TVersion& aVersion, const RMessage2& aMessage) const - { - //Validate session as coming from UsbSvr - static _LIT_SECURITY_POLICY_S0(KSidPolicy, 0x101fe1db); - TBool auth = KSidPolicy.CheckPolicy(aMessage); - if(!auth) - { - User::Leave(KErrPermissionDenied); - } - - // Version number check... - TVersion v( KNcmSrvMajorVersionNumber, - KNcmSrvMinorVersionNumber, - KNcmSrvBuildNumber); - - if ( !User::QueryVersionSupported(v, aVersion) ) - { - User::Leave(KErrNotSupported); - } - - CNcmSession* sess = CNcmSession::NewL(iNcmEngine); - return sess; - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/server/src/ncmsession.cpp --- a/usbmgmt/usbmgr/device/classdrivers/ncm/classimplementation/ncmpktdrv/server/src/ncmsession.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,117 +0,0 @@ -/* -* 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 "ncmserverconsts.h" -#include "ncmsession.h" -#include "ncmengine.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "ncmsessionTraces.h" -#endif - - - -CNcmSession* CNcmSession::NewL(CNcmEngine& aEngine) - { - CNcmSession* self = new(ELeave) CNcmSession(aEngine); - return self; - } - -CNcmSession::CNcmSession(CNcmEngine& aEngine) - : iNcmEngine(aEngine) - { - } - -CNcmSession::~CNcmSession() - { - } - -void CNcmSession::ServiceL(const RMessage2& aMessage) - { - OstTraceFunctionEntry0(CNCMSESSION_SERVICEL); - - OstTraceExt3(TRACE_NORMAL,CNCMSESSION_SERVICEL_DUP01, "CNcmSession::ServiceL %d %d %d", aMessage.Function(), - aMessage.Int0(), aMessage.Int1()); - - switch ( aMessage.Function() ) - { - case ENcmTransferHandle: - { - RMessagePtr2 messagePtr(aMessage); - TInt ret = iNcmEngine.Start(messagePtr); - - aMessage.Complete(ret); - break; - } - - case ENcmSetIapId: - { - TInt iap = aMessage.Int0(); - TInt ret = iNcmEngine.SetStateToWatcher(ENcmSetTypeIapId, iap); - - aMessage.Complete(ret); - } - break; - - case ENcmSetDhcpResult: - { - TInt result = aMessage.Int0(); - TInt ret = iNcmEngine.SetStateToWatcher(ENcmSetTypeDhcpReturn, result); - - aMessage.Complete(ret); - } - break; - - case ENcmDhcpProvisionNotify: - { - TInt ret = iNcmEngine.RegisterNotify(aMessage); - - if (KErrNone != ret) - { - aMessage.Complete(ret); - } - } - break; - - case ENcmDhcpProvisionNotifyCancel: - { - iNcmEngine.DeRegisterNotify(); - aMessage.Complete(KErrNone); - } - break; - - case ENcmTransferBufferSize: - { - TInt size = aMessage.Int0(); - TInt ret = iNcmEngine.SetInEpBufferSize(size); - aMessage.Complete(ret); - } - break; - - default: - // Unknown function, panic the user - aMessage.Panic(KNcmSrvPanic, ENcmBadNcmMessage); - break; - } - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/group/bld.inf --- a/usbmgmt/usbmgr/device/classdrivers/ncm/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -/* -* 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: -* -*/ - -#if !(defined(WINS) || defined(WINSCW)) -#include "../classimplementation/group/bld.inf" -#include "../classcontroller/group/bld.inf" -#endif - -PRJ_EXPORTS -../public/usbncm.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/usbncm.h) - -PRJ_MMPFILES - -PRJ_TESTMMPFILES diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/inc/ncmcommon.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/inc/ncmcommon.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -/* -* 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 -@internalTechnology - */ - -#ifndef NCMCOMMON_H -#define NCMCOMMON_H - -#ifndef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY -#error "NCM needs the 3-plane comms environment!" -#endif - -#include - -#ifndef __OVER_DUMMYUSBSCLDD__ -#include -#include //FOR KEthernetAddressLength -#else -#include -#endif - -//property's category UID. -//This Property is used to indicate the Packet Driver that it's started by NCM Class Controller. -#ifdef OVERDUMMY_NCMCC -static const TUid KUsbmanSvrUid = {0x2002EA88}; // -#else -static const TUid KUsbmanSvrUid = {0x101fe1db}; -#endif // OVERDUMMY_NCMCC - -//property's sub-key. -static const TUint KKeyNcmSharedState = 0x2002C340; - -//Platform Security for the property. -static _LIT_SECURITY_POLICY_PASS(KAllowAllPolicy); -static _LIT_SECURITY_POLICY_C1(KNetworkControlPolicy, ECapabilityNetworkControl); -static _LIT_SECURITY_POLICY_C1(KCommDDPolicy, ECapabilityCommDD); - - -/** -NCM network device MAC address. -*/ -typedef TBuf8 TNcmMacAddress; - -/** -NCM SharedState between NCM Class Controller and Packet Driver. -*/ -enum TNcmSharedState - { - ENcmStateIntial = 0, - ENcmStartRequested = 1, // NCM class controller is request NCM packet driver - ENcmStateEndMark - }; - -/** - Packet driver progress to Comms - */ -enum TNcmNifProgress - { - ENcmPktDrvFatalError = KMinNifProgress // NCM packet driver fatal error - }; - -#endif // NCMCOMMON_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/inc/ncminternalsrv.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/inc/ncminternalsrv.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -/* -* 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 - @internalTechnology -*/ - -#ifndef NCMINTERNALSRV_H -#define NCMINTERNALSRV_H - -#include - -/** -Client-side interface of the NCM internal server for the communication between the NCM Class Controller and the Packet Driver. -*/ -NONSHARABLE_CLASS(RNcmInternalSrv) : public RSessionBase - { -public: - IMPORT_C RNcmInternalSrv(); - IMPORT_C ~RNcmInternalSrv(); - -public: - /** - Connect the handle to the server. - Must be called before all other methods (except Version and Close). - @return Symbian error code - */ - IMPORT_C TInt Connect(); - /** - Getter for the version of the server. - @return Version of the server - */ - IMPORT_C TVersion Version() const; - -public: - /** - Transfer the Ldd's handles from NCM Class Controller to the Packet Driver. - @param[in] aCommHandle, the Communication Interface handle. - @param[in] aCommChunk, the Communication Interface's RChunk handle. - @param[in] aDataHandle, the Data Interface handle. - @param[in] aDataChunk, the Data Interface's RChunk handle. - @return KErrNone, successfully transferred handle to Packet Driver. - others, system-wide error code. - */ - IMPORT_C TInt TransferHandle(RHandleBase& aCommHandle, RHandleBase& aCommChunk, RHandleBase& aDataHandle, RHandleBase& aDataChunk); - /** - Set this RConnection's IapId to Packet Driver. - @param[in] aIapId, the RConnection's, which loads the Packet Driver, IapId. - @return KErrNone, successfully set IapId. - others, system-wide error code. - */ - IMPORT_C TInt SetIapId(TUint aIapId); - /** - Set the DHCP Provision result to Packet Driver. - @param[in] aResult, the result of DHCP Provision done by Class Controller. - @return KErrNone, successfully set the result to Packet Driver. - others, system-wide error code. - */ - IMPORT_C TInt SetDhcpResult(TInt aResult); - /** - Register the notification of doing DHCP Provision. - @param[in,out] aStatus, the request status to be registered. - */ - IMPORT_C void DhcpProvisionNotify(TRequestStatus& aStatus); - /** - Cancel the registration of DHCP Provision. - */ - IMPORT_C void DhcpProvisionNotifyCancel(); - /** - Transfer the buffer size of in endpoint of data interface. - */ - IMPORT_C TInt TransferBufferSize(TUint aSize); - -private: - }; - -#endif // NCMINTERNALSRV_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/ncm/public/usbncm.h --- a/usbmgmt/usbmgr/device/classdrivers/ncm/public/usbncm.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,164 +0,0 @@ -/* -* 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 -@publishedPartner -*/ - -#ifndef USBNCM_H -#define USBNCM_H - -//INCLUDES -#include - -/** Defines the exported P&S key and data structure of the value. */ -namespace UsbNcm - { - /** The property's category UID. - * This property is to notify the NCM connection state. - */ - static const TUid KCatNcmSvrUid = {0x101F7989}; - - /** The property's sub-key.*/ - static const TUint KKeyNcmConnectionEvent = 0x2002C33F; - - - /** NCM connection state.*/ - enum TNcmConnectionState - { - ENcmStateDisconnected = 0, - ENcmStateConnected, - ENcmStateMax - }; - - /** - * Defines the NCM connection event, which contains the IapId, NCM connection state and corresponding error code. - * The NCM connection is a special one which can not only be used by RConnection, but also needed to monitor the P&S to fetch its state changing. - * Once the P&S published the ENcmStateConnected, the iIapId is also available for starting this connection. - * Otherwise, if the P&S published the ENcmStateDisconnected, the iErrCode should be checked to notify the failure reason: - * KErrNone, normally disconnected probably because of USB cable unpluged. - * KErrInUse, means the other component(currently, BtPan or RNDIS) hold the other P&S key so that the DHCP Provision can't be done by NCM. - * system-wide error code, please check Developer Library. - * It is also possible that this P&S key is deleted when fetching its value because of the NCM connection closed by its driver. - * - * @see below sample code. - */ - struct TNcmConnectionEvent - { - TUint32 iIapId; - TNcmConnectionState iState; - TInt iErrCode; - TUint8 reserved[20]; - }; - } // namespace UsbNcm - -/** - Example Usage: - @code - //header file. - #include - using namespace UsbNcm; - - CMySampleClass: public CActive - { - private: - RProperty iProperty; - RConnection iConnection; - TPckgBuf iNcmEvent; - RSocket iSocket; - } - @endcode - - @code - #include "mysampleclass.h" - - void CMySampleClass::ContructL() - { - User::LeaveIfError(iProperty.Attach(KCatNcmSvrUid, KKeyNcmConnectionEvent, EOwnerThread)); - - iProperty.Get(iNcmEvent); - if (ENcmStateConnected == iNcmEvent.iState) - { - TRequestStatus* pStatus = &iStatus; - iStatus = KRequestPending; - User::RequestComplete(pStatus, KErrNone); - } - else - { - iProperty.Subscribe(iStatus); - SetActive(); - } - } - - void CMySampleClass::RunL() - { - if (KErrNone == iStatus.Int()) - { - iProperty.Get(iNcmEvent); - - switch(iNcmEvent.iState) - { - case ENcmStateConnected: - StartConnection(); - break; - - case ENcmStateDisconnected: - if (KErrInUse == iNcmEvent.u.iErrCode) - { - //Show error UI with msg like "BtPan or Rndis is active, pls deactive it then re-try....", etc. - } - else - { - //Show error UI with other msg as you like. - //StopConnection(); - } - break; - } - } - } - - //Sample code, not all string in this panic show on. - LIT(KNotFoundNcm, "NotFoundPanic - The NCM connection was not found!"); - - TInt CMySampleClass::StartConnection() - { - //the number of connections. - TInt cnt = 0; - iConnection.EnumerateConnections(cnt); - - TInt index = 1; - for (index = 1; index <= cnt; index++) - { - TPckgBuf info; - iConnection.GetConnectionInfo(index, info); - if (info().iIapId == iNcmEvent.iIapId) - { - iConnection.Attach(info, RConnection::EAttachTypeNormal); - break; - } - } - __ASSERT_ALWAYS(index <= cnt, User::Panic(KErrNotFound, KNotFoundNcm)); - - TInt ret = iSocket.Open(...., iConnection); - //..... - return ret; - } - @endcode -*/ -#endif // USBNCM_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/obex/classcontroller/group/ObexClassController.mmp --- a/usbmgmt/usbmgr/device/classdrivers/obex/classcontroller/group/ObexClassController.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/obex/classcontroller/group/ObexClassController.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -34,7 +34,6 @@ SOURCE CUsbObexClassController.cpp USERINCLUDE ../inc -USERINCLUDE ../traces OS_LAYER_SYSTEMINCLUDE_SYMBIAN @@ -45,3 +44,5 @@ LIBRARY euser.lib LIBRARY usbclasscontroller.lib + +#include diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/obex/classcontroller/src/CUsbObexClassController.cpp --- a/usbmgmt/usbmgr/device/classdrivers/obex/classcontroller/src/CUsbObexClassController.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/obex/classcontroller/src/CUsbObexClassController.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -23,17 +23,18 @@ #include "CUsbObexClassController.h" #include #include -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbObexClassControllerTraces.h" +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "OBEXCC"); #endif + +// Panic category only used in debug builds #ifdef _DEBUG -// Panic category only used in debug builds _LIT( KObexCcPanicCategory, "UsbObexCc" ); #endif - /** * Panic codes for the USB OBEX Class Controller. */ @@ -58,10 +59,10 @@ CUsbObexClassController* CUsbObexClassController::NewL( MUsbClassControllerNotify& aOwner) { - OstTraceFunctionEntry0( REF_CUSBOBEXCLASSCONTROLLER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY + CUsbObexClassController* self = new (ELeave) CUsbObexClassController(aOwner); - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_NEWL_EXIT ); return self; } @@ -74,9 +75,7 @@ MUsbClassControllerNotify& aOwner) : CUsbClassControllerPlugIn(aOwner, KObexClassPriority) { - OstTraceFunctionEntry0( REF_CUSBOBEXCLASSCONTROLLER_CUSBOBEXCLASSCONTROLLER_CONS_ENTRY ); iState = EUsbServiceIdle; - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_CUSBOBEXCLASSCONTROLLER_CONS_EXIT ); } /** @@ -84,8 +83,6 @@ */ CUsbObexClassController::~CUsbObexClassController() { - OstTraceFunctionEntry0( REF_CUSBOBEXCLASSCONTROLLER_CUSBOBEXCLASSCONTROLLER_DES_ENTRY ); - Cancel(); if (iState == EUsbServiceStarted) { @@ -95,7 +92,6 @@ iLdd2.ReleaseInterface(0); iLdd2.Close(); } - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_CUSBOBEXCLASSCONTROLLER_DES_EXIT ); } /** @@ -108,16 +104,12 @@ TInt CUsbObexClassController::SetUpClassAndInterface() { - OstTraceFunctionEntry0( REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_ENTRY ); - TUsbcInterfaceInfoBuf ifc; HBufC16* string = KUsbObexIfc().Alloc(); if (!string) - { - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT ); return KErrNoMemory; - } + ifc().iString = string; ifc().iClass.iClassNum = KObexClassNumber; ifc().iClass.iSubClassNum = KObexSubClassNumber; @@ -139,7 +131,6 @@ if (err != KErrNone) { - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP1 ); return err; } @@ -173,14 +164,12 @@ err= iLdd.SetCSInterfaceDescriptorBlock(0, desc); if (err!= KErrNone) { - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP2 ); return err; } err = iLdd2.Open(0); if (err != KErrNone) { - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP3 ); return err; } @@ -201,33 +190,26 @@ if (err != KErrNone) { iLdd2.Close(); - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP4 ); return err; } TUsbDeviceCaps dCaps; TInt ret = iLdd.DeviceCaps(dCaps); - if (ret != KErrNone) - { - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP5 ); + if (ret != KErrNone) return ret; - } + TInt n = dCaps().iTotalEndpoints; - if (n < KObexMinNumEndpoints) - { - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP6 ); + if (n < KObexMinNumEndpoints) return KErrGeneral; - } + // Endpoints TUsbcEndpointData data[KUsbcMaxEndpoints]; TPtr8 dataptr(REINTERPRET_CAST(TUint8*, data), sizeof(data), sizeof(data)); ret = iLdd.EndpointCaps(dataptr); - if (ret!= KErrNone) - { - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP7 ); + if (ret!= KErrNone) return ret; - } + // Set the active interface TUsbcInterfaceInfoBuf dataifc2; @@ -266,10 +248,7 @@ } if (!(foundIn && foundOut)) - { - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP8 ); return KErrGeneral; - } dataifc2().iString = NULL; dataifc2().iClass.iClassNum = KObexDataClass; @@ -286,12 +265,9 @@ { iLdd2.ReleaseInterface(0); iLdd2.Close(); - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP9 ); return err; } - - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP10 ); return KErrNone; } @@ -302,14 +278,10 @@ */ void CUsbObexClassController::Start(TRequestStatus& aStatus) { - OstTraceFunctionEntry0( REF_CUSBOBEXCLASSCONTROLLER_START_ENTRY ); - + LOG_FUNC + //Start() should never be called if started, starting or stopping (or in state EUsbServiceFatalError) - if (iState != EUsbServiceIdle) - { - OstTrace1( TRACE_FATAL, CUSBOBEXCLASSCONTROLLER_START, "CUsbObexClassController::Start;iState=%d", (TInt)iState ); - __ASSERT_DEBUG( EFalse, User::Panic(KObexCcPanicCategory, EBadApiCallStart) ); - } + __ASSERT_DEBUG( iState == EUsbServiceIdle, _USB_PANIC(KObexCcPanicCategory, EBadApiCallStart) ); TRequestStatus* reportStatus = &aStatus; @@ -320,7 +292,6 @@ { User::RequestComplete(reportStatus, err); iState = EUsbServiceIdle; - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_START_EXIT ); return; } @@ -330,7 +301,6 @@ iState = EUsbServiceIdle; User::RequestComplete(reportStatus, err); - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_START_EXIT_DUP1 ); return; } @@ -341,13 +311,11 @@ iState = EUsbServiceIdle; User::RequestComplete(reportStatus, err); - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_START_EXIT_DUP2 ); return; } iState = EUsbServiceStarted; User::RequestComplete(reportStatus, KErrNone); - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_START_EXIT_DUP3 ); } @@ -358,13 +326,10 @@ */ void CUsbObexClassController::Stop(TRequestStatus& aStatus) { - OstTraceFunctionEntry0( REF_CUSBOBEXCLASSCONTROLLER_STOP_ENTRY ); + LOG_FUNC + //Stop() should never be called if stopping, idle or starting (or in state EUsbServiceFatalError) - if (iState != EUsbServiceStarted) - { - OstTrace1( TRACE_FATAL, REF_CUSBOBEXCLASSCONTROLLER_STOP, "CUsbObexClassController::Stop;iState=%d", (TInt)iState ); - __ASSERT_DEBUG( EFalse, User::Panic(KObexCcPanicCategory, EBadApiCallStop) ); - } + __ASSERT_DEBUG( iState == EUsbServiceStarted, _USB_PANIC(KObexCcPanicCategory, EBadApiCallStop) ); TRequestStatus* ReportStatus = &aStatus; @@ -381,7 +346,6 @@ iState = EUsbServiceIdle; User::RequestComplete(ReportStatus, KErrNone); - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_STOP_EXIT ); } @@ -392,10 +356,8 @@ */ void CUsbObexClassController::GetDescriptorInfo(TUsbDescriptor& aDescriptorInfo) const { - OstTraceFunctionEntry0( REF_CUSBOBEXCLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY ); aDescriptorInfo.iNumInterfaces = KObexNumInterfaces; aDescriptorInfo.iLength = KObexDescriptorLength; - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_GETDESCRIPTORINFO_EXIT ); } /** @@ -405,10 +367,7 @@ */ void CUsbObexClassController::RunL() { - OstTraceFunctionEntry0( REF_CUSBOBEXCLASSCONTROLLER_RUNL_ENTRY ); - OstTrace0( TRACE_FATAL, REF_CUSBOBEXCLASSCONTROLLER_RUNL, "CUsbObexClassController::RunL;EUnusedFunction" ); - __ASSERT_DEBUG( EFalse, User::Panic(KObexCcPanicCategory, EUnusedFunction) ); - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_RUNL_EXIT ); + __ASSERT_DEBUG(EFalse, _USB_PANIC(KObexCcPanicCategory, EUnusedFunction)); } /** @@ -418,10 +377,7 @@ */ void CUsbObexClassController::DoCancel() { - OstTraceFunctionEntry0( REF_CUSBOBEXCLASSCONTROLLER_DOCANCEL_ENTRY ); - OstTrace0( TRACE_FATAL, REF_CUSBOBEXCLASSCONTROLLER_DOCANCEL, "CUsbObexClassController::DoCancel;EUnusedFunction" ); - __ASSERT_DEBUG( EFalse, User::Panic(KObexCcPanicCategory, EUnusedFunction) ); - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_DOCANCEL_EXIT ); + __ASSERT_DEBUG(EFalse, _USB_PANIC(KObexCcPanicCategory, EUnusedFunction)); } /** @@ -433,9 +389,6 @@ TInt CUsbObexClassController::RunError(TInt /*aError*/) { - OstTraceFunctionEntry0( REF_CUSBOBEXCLASSCONTROLLER_RUNERROR_ENTRY ); - OstTrace0( TRACE_FATAL, REF_CUSBOBEXCLASSCONTROLLER_RUNERROR, "CUsbObexClassController::RunError;EUnusedFunction" ); - __ASSERT_DEBUG( EFalse, User::Panic(KObexCcPanicCategory, EUnusedFunction) ); - OstTraceFunctionExit0( REF_CUSBOBEXCLASSCONTROLLER_RUNERROR_EXIT ); + __ASSERT_DEBUG(EFalse, _USB_PANIC(KObexCcPanicCategory, EUnusedFunction)); return KErrNone; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/obex/classcontroller/src/CUsbObexClassImpCollection.cpp --- a/usbmgmt/usbmgr/device/classdrivers/obex/classcontroller/src/CUsbObexClassImpCollection.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/obex/classcontroller/src/CUsbObexClassImpCollection.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -25,11 +25,6 @@ #include #include #include "CUsbObexClassController.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbObexClassImpCollectionTraces.h" -#endif - // Define the private interface UIDs const TImplementationProxy UsbCCImplementationTable[] = @@ -39,9 +34,8 @@ EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) { - OstTraceFunctionEntry0( CUSBOBEXCLASSIMPCOLLECTION_IMPLEMENTATIONGROUPPROXY_ENTRY ); aTableCount = sizeof(UsbCCImplementationTable) / sizeof(TImplementationProxy); - OstTraceFunctionExit0( CUSBOBEXCLASSIMPCOLLECTION__IMPLEMENTATIONGROUPPROXY_EXIT ); + return UsbCCImplementationTable; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/obex/classcontroller/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/device/classdrivers/obex/classcontroller/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/obex/classcontroller/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/device/classdrivers/obex/classcontroller/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_FATAL=0x81 -[GROUP]TRACE_FLOW=0x8a -[TRACE]TRACE_FATAL[0x81]_CUSBOBEXCLASSCONTROLLER_START=0x1 -[TRACE]TRACE_FATAL[0x81]_REF_CUSBOBEXCLASSCONTROLLER_DOCANCEL=0x4 -[TRACE]TRACE_FATAL[0x81]_REF_CUSBOBEXCLASSCONTROLLER_RUNERROR=0x5 -[TRACE]TRACE_FATAL[0x81]_REF_CUSBOBEXCLASSCONTROLLER_RUNL=0x3 -[TRACE]TRACE_FATAL[0x81]_REF_CUSBOBEXCLASSCONTROLLER_STOP=0x2 -[TRACE]TRACE_FLOW[0x8A]_CUSBOBEXCLASSIMPCOLLECTION_IMPLEMENTATIONGROUPPROXY_ENTRY=0x22 -[TRACE]TRACE_FLOW[0x8A]_CUSBOBEXCLASSIMPCOLLECTION__IMPLEMENTATIONGROUPPROXY_EXIT=0x23 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_CUSBOBEXCLASSCONTROLLER_CONS_ENTRY=0x3 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_CUSBOBEXCLASSCONTROLLER_CONS_EXIT=0x4 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_CUSBOBEXCLASSCONTROLLER_DES_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_CUSBOBEXCLASSCONTROLLER_DES_EXIT=0x6 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_DOCANCEL_ENTRY=0x1e -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_DOCANCEL_EXIT=0x1f -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY=0x1a -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_GETDESCRIPTORINFO_EXIT=0x1b -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_NEWL_ENTRY=0x1 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_NEWL_EXIT=0x2 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_RUNERROR_ENTRY=0x20 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_RUNERROR_EXIT=0x21 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_RUNL_ENTRY=0x1c -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_RUNL_EXIT=0x1d -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_ENTRY=0x7 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT=0x8 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP1=0x9 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP10=0x12 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP2=0xa -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP3=0xb -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP4=0xc -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP5=0xd -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP6=0xe -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP7=0xf -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP8=0x10 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_SETUPCLASSANDINTERFACE_EXIT_DUP9=0x11 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_START_ENTRY=0x13 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_START_EXIT=0x14 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_START_EXIT_DUP1=0x15 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_START_EXIT_DUP2=0x16 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_START_EXIT_DUP3=0x17 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_STOP_ENTRY=0x18 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBOBEXCLASSCONTROLLER_STOP_EXIT=0x19 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/SRC/CUsbWHCMClassController.cpp --- a/usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/SRC/CUsbWHCMClassController.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/SRC/CUsbWHCMClassController.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -20,16 +20,18 @@ @file */ +#include "CUsbWHCMClassController.h" #include #include #include -#include "CUsbWHCMClassController.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbWHCMClassControllerTraces.h" +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "WHCMCC"); #endif _LIT(KUsbLDDName, "eusbc"); + _LIT( KWhcmCcPanicCategory, "UsbWhcmCc" ); /** @@ -54,7 +56,7 @@ CUsbWHCMClassController* CUsbWHCMClassController::NewL( MUsbClassControllerNotify& aOwner) { - OstTraceFunctionEntry0( CUSBWHCMCLASSCONTROLLER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY CUsbWHCMClassController* self = new (ELeave) CUsbWHCMClassController(aOwner); @@ -62,7 +64,6 @@ CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(); - OstTraceFunctionExit0( CUSBWHCMCLASSCONTROLLER_NEWL_EXIT ); return self; } @@ -75,9 +76,7 @@ MUsbClassControllerNotify& aOwner) : CUsbClassControllerPlugIn(aOwner, KWHCMPriority) { - OstTraceFunctionEntry0( CUSBWHCMCLASSCONTROLLER_CUSBWHCMCLASSCONTROLLER_CONS_ENTRY ); iState = EUsbServiceIdle; - OstTraceFunctionExit0( CUSBWHCMCLASSCONTROLLER_CUSBWHCMCLASSCONTROLLER_CONS_EXIT ); } /** @@ -85,25 +84,14 @@ */ void CUsbWHCMClassController::ConstructL() { - OstTraceFunctionEntry0( CUSBWHCMCLASSCONTROLLER_CONSTRUCTL_ENTRY ); // Load the device driver TInt err = User::LoadLogicalDevice(KUsbLDDName); if (err != KErrNone && err != KErrAlreadyExists) { - OstTrace1( TRACE_NORMAL, CUSBWHCMCLASSCONTROLLER_CONSTRUCTL, - "CUsbWHCMClassController::ConstructL;err=%d", err ); - User::Leave(err); + LEAVEL(err); } - - err = iLdd.Open(0); - if (err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBWHCMCLASSCONTROLLER_CONSTRUCTL_DUP1, - "CUsbWHCMClassController::ConstructL;err=%d", err ); - User::Leave(err); - } - OstTraceFunctionExit0( CUSBWHCMCLASSCONTROLLER_CONSTRUCTL_EXIT ); + LEAVEIFERRORL(iLdd.Open(0)); } /** @@ -111,15 +99,14 @@ */ CUsbWHCMClassController::~CUsbWHCMClassController() { - OstTraceFunctionEntry0( CUSBWHCMCLASSCONTROLLER_CUSBWHCMCLASSCONTROLLER_DES_ENTRY ); Cancel(); + if (iState == EUsbServiceStarted) { // Must release all interfaces before closing the LDD to avoid a crash. iLdd.ReleaseInterface(0); } iLdd.Close(); - OstTraceFunctionExit0( CUSBWHCMCLASSCONTROLLER_CUSBWHCMCLASSCONTROLLER_DES_EXIT ); } /** @@ -129,29 +116,25 @@ */ void CUsbWHCMClassController::Start(TRequestStatus& aStatus) { - OstTraceFunctionEntry0( CUSBWHCMCLASSCONTROLLER_START_ENTRY ); + LOG_FUNC //Start() should never be called if started, starting or stopping (or in state EUsbServiceFatalError) - if (iState != EUsbServiceIdle) - { - OstTrace1( TRACE_FATAL, CUSBWHCMCLASSCONTROLLER_START, "CUsbWHCMClassController::Start;iState=%d", (TInt)iState ); - __ASSERT_DEBUG( EFalse, User::Panic(KWhcmCcPanicCategory, EBadApiCallStart) ); - } + __ASSERT_DEBUG( iState == EUsbServiceIdle, _USB_PANIC(KWhcmCcPanicCategory, EBadApiCallStart) ); TRequestStatus* reportStatus = &aStatus; iState = EUsbServiceStarting; + TRAPD(err, SetUpWHCMDescriptorL()); + if (err != KErrNone) { iState = EUsbServiceIdle; User::RequestComplete(reportStatus, err); - OstTraceFunctionExit0( CUSBWHCMCLASSCONTROLLER_START_EXIT ); return; } iState = EUsbServiceStarted; User::RequestComplete(reportStatus, KErrNone); - OstTraceFunctionExit0( CUSBWHCMCLASSCONTROLLER_START_EXIT_DUP1 ); } /** @@ -161,14 +144,10 @@ */ void CUsbWHCMClassController::Stop(TRequestStatus& aStatus) { - OstTraceFunctionEntry0( CUSBWHCMCLASSCONTROLLER_STOP_ENTRY ); + LOG_FUNC //Stop() should never be called if stopping, idle or starting (or in state EUsbServiceFatalError) - if (iState != EUsbServiceStarted) - { - OstTrace1( TRACE_FATAL, CUSBWHCMCLASSCONTROLLER_STOP, "CUsbWHCMClassController::Stop;iState=%d", (TInt)iState ); - __ASSERT_DEBUG( EFalse, User::Panic(KWhcmCcPanicCategory, EBadApiCallStart) ); - } + __ASSERT_DEBUG( iState == EUsbServiceStarted, _USB_PANIC(KWhcmCcPanicCategory, EBadApiCallStop) ); TRequestStatus* reportStatus = &aStatus; @@ -180,7 +159,6 @@ aStatus = KRequestPending; User::RequestComplete(reportStatus, KErrNone); - OstTraceFunctionExit0( CUSBWHCMCLASSCONTROLLER_STOP_EXIT ); } /** @@ -191,8 +169,6 @@ void CUsbWHCMClassController::GetDescriptorInfo( TUsbDescriptor& /*aDescriptorInfo*/) const { - OstTraceFunctionEntry0( CUSBWHCMCLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY ); - OstTraceFunctionExit0( CUSBWHCMCLASSCONTROLLER_GETDESCRIPTORINFO_EXIT ); } /** @@ -201,8 +177,7 @@ void CUsbWHCMClassController::RunL() { // This function should never be called. - OstTrace0( TRACE_FATAL, CUSBWHCMCLASSCONTROLLER_RUNL, "CUsbWHCMClassController::RunL;EUnusedFunction"); - User::Panic(KWhcmCcPanicCategory, EUnusedFunction); + _USB_PANIC(KWhcmCcPanicCategory, EUnusedFunction); } /** @@ -212,8 +187,7 @@ void CUsbWHCMClassController::DoCancel() { // This function should never be called. - OstTrace0( TRACE_FATAL, CUSBWHCMCLASSCONTROLLER_DOCANCEL, "CUsbWHCMClassController::DoCancel;EUnusedFunction"); - User::Panic(KWhcmCcPanicCategory, EUnusedFunction); + _USB_PANIC(KWhcmCcPanicCategory, EUnusedFunction); } /** @@ -223,8 +197,8 @@ TInt CUsbWHCMClassController::RunError(TInt /*aError*/) { // This function should never be called. - OstTrace0( TRACE_FATAL, CUSBWHCMCLASSCONTROLLER_RUNERROR, "CUsbWHCMClassController::RunError;EUnusedFunction"); - User::Panic(KWhcmCcPanicCategory, EUnusedFunction); + _USB_PANIC(KWhcmCcPanicCategory, EUnusedFunction); + return KErrNone; } @@ -234,8 +208,6 @@ * Setup the WHCM Class Descriptors. */ { - OstTraceFunctionEntry0( CUSBWHCMCLASSCONTROLLER_SETUPWHCMDESCROPTORL_ENTRY ); - // Set up and register the WHCM interface descriptor TUsbcInterfaceInfoBuf ifc; @@ -249,23 +221,11 @@ // from EP0. ifc().iFeatureWord |= KUsbcInterfaceInfo_NoEp0RequestsPlease; - TInt err = iLdd.SetInterface(0, ifc); - if (err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBWHCMCLASSCONTROLLER_SETUPWHCMDESCROPTORL, - "CUsbWHCMClassController::SetUpWHCMDescriptorL;err=%d", (TInt)err ); - User::Leave(err); - } + LEAVEIFERRORL(iLdd.SetInterface(0, ifc)); // Get the interface number from the LDD for later reference TBuf8<100> interface_descriptor; - err = iLdd.GetInterfaceDescriptor(0, interface_descriptor); - if (err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBWHCMCLASSCONTROLLER_SETUPWHCMDESCROPTORL_DUP1, - "CUsbWHCMClassController::SetUpWHCMDescriptorL;err=%d", (TInt)err ); - User::Leave(err); - } + LEAVEIFERRORL(iLdd.GetInterfaceDescriptor(0, interface_descriptor)); TUint8 WHCM_int_no = interface_descriptor[2]; @@ -319,12 +279,5 @@ desc[10] = union_len; // Register the whole class-specific interface block - err = iLdd.SetCSInterfaceDescriptorBlock(0, desc); - if (err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBWHCMCLASSCONTROLLER_SETUPWHCMDESCROPTORL_DUP2, - "CUsbWHCMClassController::SetUpWHCMDescriptorL;err=%d", (TInt)err ); - User::Leave(err); - } - OstTraceFunctionExit0( CUSBWHCMCLASSCONTROLLER_SETUPWHCMDESCROPTORL_EXIT ); + LEAVEIFERRORL(iLdd.SetCSInterfaceDescriptorBlock(0, desc)); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/SRC/CUsbWHCMClassImpCollection.cpp --- a/usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/SRC/CUsbWHCMClassImpCollection.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/SRC/CUsbWHCMClassImpCollection.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -25,10 +25,6 @@ #include #include #include "CUsbWHCMClassController.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbWHCMClassImpCollectionTraces.h" -#endif // Define the private interface UIDs const TImplementationProxy UsbCCImplementationTable[] = @@ -38,9 +34,8 @@ EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) { - OstTraceFunctionEntry0( CBUSWHCMCLASSIMPCOLLECTION_IMPLEMENTATUIONGROUPPROXY_ENTRY ); aTableCount = sizeof(UsbCCImplementationTable) / sizeof(TImplementationProxy); - OstTraceFunctionEntry0( CBUSWHCMCLASSIMPCOLLECTION_IMPLEMENTATUIONGROUPPROXY_EXIT ); + return UsbCCImplementationTable; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/group/WHCMClassController.mmp --- a/usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/group/WHCMClassController.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/group/WHCMClassController.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -33,8 +33,7 @@ SOURCE CUsbWHCMClassImpCollection.cpp SOURCE CUsbWHCMClassController.cpp -USERINCLUDE ../INC -USERINCLUDE ../traces +USERINCLUDE ../INC OS_LAYER_SYSTEMINCLUDE_SYMBIAN @@ -45,3 +44,5 @@ LIBRARY euser.lib LIBRARY usbclasscontroller.lib + +#include diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/device/classdrivers/whcm/classcontroller/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_FATAL=0x81 -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_FATAL[0x81]_CUSBWHCMCLASSCONTROLLER_DOCANCEL=0x4 -[TRACE]TRACE_FATAL[0x81]_CUSBWHCMCLASSCONTROLLER_RUNERROR=0x5 -[TRACE]TRACE_FATAL[0x81]_CUSBWHCMCLASSCONTROLLER_RUNL=0x3 -[TRACE]TRACE_FATAL[0x81]_CUSBWHCMCLASSCONTROLLER_START=0x1 -[TRACE]TRACE_FATAL[0x81]_CUSBWHCMCLASSCONTROLLER_STOP=0x2 -[TRACE]TRACE_FLOW[0x8A]_CBUSWHCMCLASSIMPCOLLECTION_IMPLEMENTATUIONGROUPPROXY_ENTRY=0x12 -[TRACE]TRACE_FLOW[0x8A]_CBUSWHCMCLASSIMPCOLLECTION_IMPLEMENTATUIONGROUPPROXY_EXIT=0x13 -[TRACE]TRACE_FLOW[0x8A]_CUSBWHCMCLASSCONTROLLER_CONSTRUCTL_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x8A]_CUSBWHCMCLASSCONTROLLER_CONSTRUCTL_EXIT=0x6 -[TRACE]TRACE_FLOW[0x8A]_CUSBWHCMCLASSCONTROLLER_CUSBWHCMCLASSCONTROLLER_CONS_ENTRY=0x3 -[TRACE]TRACE_FLOW[0x8A]_CUSBWHCMCLASSCONTROLLER_CUSBWHCMCLASSCONTROLLER_CONS_EXIT=0x4 -[TRACE]TRACE_FLOW[0x8A]_CUSBWHCMCLASSCONTROLLER_CUSBWHCMCLASSCONTROLLER_DES_ENTRY=0x7 -[TRACE]TRACE_FLOW[0x8A]_CUSBWHCMCLASSCONTROLLER_CUSBWHCMCLASSCONTROLLER_DES_EXIT=0x8 -[TRACE]TRACE_FLOW[0x8A]_CUSBWHCMCLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY=0xe -[TRACE]TRACE_FLOW[0x8A]_CUSBWHCMCLASSCONTROLLER_GETDESCRIPTORINFO_EXIT=0xf -[TRACE]TRACE_FLOW[0x8A]_CUSBWHCMCLASSCONTROLLER_NEWL_ENTRY=0x1 -[TRACE]TRACE_FLOW[0x8A]_CUSBWHCMCLASSCONTROLLER_NEWL_EXIT=0x2 -[TRACE]TRACE_FLOW[0x8A]_CUSBWHCMCLASSCONTROLLER_SETUPWHCMDESCROPTORL_ENTRY=0x10 -[TRACE]TRACE_FLOW[0x8A]_CUSBWHCMCLASSCONTROLLER_SETUPWHCMDESCROPTORL_EXIT=0x11 -[TRACE]TRACE_FLOW[0x8A]_CUSBWHCMCLASSCONTROLLER_START_ENTRY=0x9 -[TRACE]TRACE_FLOW[0x8A]_CUSBWHCMCLASSCONTROLLER_START_EXIT=0xa -[TRACE]TRACE_FLOW[0x8A]_CUSBWHCMCLASSCONTROLLER_START_EXIT_DUP1=0xb -[TRACE]TRACE_FLOW[0x8A]_CUSBWHCMCLASSCONTROLLER_STOP_ENTRY=0xc -[TRACE]TRACE_FLOW[0x8A]_CUSBWHCMCLASSCONTROLLER_STOP_EXIT=0xd -[TRACE]TRACE_NORMAL[0x86]_CUSBWHCMCLASSCONTROLLER_CONSTRUCTL=0x1 -[TRACE]TRACE_NORMAL[0x86]_CUSBWHCMCLASSCONTROLLER_CONSTRUCTL_DUP1=0x2 -[TRACE]TRACE_NORMAL[0x86]_CUSBWHCMCLASSCONTROLLER_SETUPWHCMDESCROPTORL=0x3 -[TRACE]TRACE_NORMAL[0x86]_CUSBWHCMCLASSCONTROLLER_SETUPWHCMDESCROPTORL_DUP1=0x4 -[TRACE]TRACE_NORMAL[0x86]_CUSBWHCMCLASSCONTROLLER_SETUPWHCMDESCROPTORL_DUP2=0x5 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/group/BLD.INF --- a/usbmgmt/usbmgr/group/BLD.INF Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/group/BLD.INF Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1999-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 1999-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" @@ -33,9 +33,8 @@ PRJ_EXPORTS usb.iby /epoc32/rom/include/usb.iby Usbman.iby /epoc32/rom/include/usbman.iby - -//Temporary location, Will be moved if SHAI is ready -usbperipheral.iby /epoc32/rom/include/usbperipheral.iby +Usbmanbin.iby /epoc32/rom/include/usbmanbin.iby +Usbmanrsc.iby /epoc32/rom/include/usbmanrsc.iby // ConfML Files ../conf/usbmanager.confml OS_LAYER_EXPORTS_CONFML(usbmanager.confml) diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/group/Usbman.iby --- a/usbmgmt/usbmgr/group/Usbman.iby Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/group/Usbman.iby Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2003-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" @@ -25,121 +25,8 @@ #include #include -// If __USB_DEBUG__ is defined pull in debug versions of the -// USB DLLs and Plugins regardless of the ROM type -#ifdef __USB_DEBUG__ -define USB_DIR UDEB -#define USB_PLUGIN ECOM_PLUGIN_UDEB -#else -define USB_DIR BUILD_DIR -#define USB_PLUGIN ECOM_PLUGIN -#endif - - -// *** Check we have been given a sensible set of buildrom options -#if defined (__OBEX_OVER_USB__) && (defined (__TEST_USB_ZLP__) || defined (__USBMAN_DUMMYCC__)) -#error Defining both OBEX over USB _and_ Zero Length Packet testing or dummy class controllers does not make sense. -#endif - -// *** USBMAN.DLL is the client side. It is always included in the ROM, -// *** whether USB is supported by the device or not, so that client -// *** applications can link against it regardless. -file=ABI_DIR\USB_DIR\usbman.dll usbman.dll - -// The main backup registration file. Plug-ins should use its own backup registration file in order to back its perfered data. -data=ZPRIVATE\101fe1db\backup_registration.xml private\101fe1db\backup_registration.xml - - -#if defined(_DEBUG) || defined (__USB_DEBUG__) -#include "commsdebugutility.iby" -#endif - -// *** Now for things which should only be included if the device supports -// *** USB, to save ROM space... -#if !defined(__USB) || !defined(EUSBC) -REM Feature USB is not included in this ROM (usbman.iby) -#else //defined(__USB) && defined(EUSBC) - -#include - -#include - -#ifndef __OBEX_OVER_USB__ - #ifndef __TEST_USB_ZLP__ - #ifdef __EXAMPLE_OBEX_CC__ - // *** OBEX Class Controller plugin. - USB_PLUGIN(obexclasscontroller.dll,1027433a.rsc) - // *** All the files needed by Obex Class Controller - // *** The executable that the class controller links to - file=ABI_DIR\BUILD_DIR\classControllerServerSession.exe sys\bin\classControllerServerSession.exe - // *** The dll that the class controller uses as a client - file=ABI_DIR\BUILD_DIR\classControllerClientSession.dll sys\bin\classControllerClientSession.dll - #endif //__EXAMPLE_OBEX_CC__ - #endif //__TEST_USB_ZLP__ -#endif //__OBEX_OVER_USB__ - -// *** 'buildrom -D__USBMAN_DUMMYCC__' will use the dummy Class Controller -// *** build of USBSVR for testing purposes. -// *** Note: DummyCC never includes OTG code. -#ifdef __USBMAN_DUMMYCC__ -#include -file=ABI_DIR\USB_DIR\t_usbman_dummycc.exe usbsvr.exe -#else -// -// Configuration of OTG or Client. -// -#if defined(SYMBIAN_ENABLE_USB_OTG_HOST) - - #if defined(SYMBIAN_INCLUDE_USB_OTG_HOST) - REM Feature USB Host (and related OTG) is included in this ROM (usbman.iby) - file=ABI_DIR\USB_DIR\usbsvrotg.exe usbsvr.exe - #include - REM Host Mass Storage binaries - #ifdef WITH_MASS_STORAGE - #include - #include - #endif - #else - REM Feature USB Host (and related OTG) is NOT included in this ROM (usbman.iby) - file=ABI_DIR\USB_DIR\usbsvr.exe usbsvr.exe - #endif // SYMBIAN_INCLUDE_USB_OTG_HOST - -#else - - REM SYMBIAN_ENABLE_USB_OTG_HOST is not defined - so we fall back to building in the - REM non-OTG usbsvr.exe - file=ABI_DIR\USB_DIR\usbsvr.exe usbsvr.exe - -#endif // SYMBIAN_ENABLE_USB_OTG_HOST - -#endif - -file=ABI_DIR\USB_DIR\usbclasscontroller.dll usbclasscontroller.dll -file=ABI_DIR\USB_DIR\usbmanextensionplugin.dll usbmanextensionplugin.dll - -#ifdef WITH_REFERENCE_USB_CHARGING_PLUGIN -// *** Reference battery charging plug-in -#if defined(SYMBIAN_ENABLE_USB_OTG_HOST) && defined (SYMBIAN_INCLUDE_USB_OTG_HOST) -USB_PLUGIN(usbbatterychargingpluginotg.dll,usbbatterychargingpluginotg.rsc) -#else -USB_PLUGIN(usbbatterychargingplugin.dll,usbbatterychargingplugin.rsc) -#endif -#endif - -// *** WHCM Class Controller - used for OBEX over USB. -USB_PLUGIN(whcmclasscontroller.dll,101fbf23.rsc) - -// *** Mass Storage Class Controller. -USB_PLUGIN(msclasscontroller.dll,10204bbb.rsc) -data=ZPRIVATE\10204bbb\usbms.rsc PRIVATE\101fe1db\usbms.rsc -#ifdef WITH_MASS_STORAGE_EXAMPLE_APP -file=ABI_DIR\USB_DIR\usbmsexampleapp.exe usbmsexampleapp.exe -#endif - -// *** OBEX Class Controller. This is test code, used for descriptor checking -// *** only. -// USB_PLUGIN(Obexclasscontroller.dll,101fbf27.rsc) - -#endif // !defined(__USB) || !defined(EUSBC) +// Resources are in a separate file, for easier customisation +#include +#include #endif // __USBMAN_IBY__ diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/group/Usbmanbin.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/group/Usbmanbin.iby Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,158 @@ +/* +* Copyright (c) 2003-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: +* Universal Serial Bus Interface Manager Binaries +* +*/ + +#ifndef __USBMANBIN_IBY__ +#define __USBMANBIN_IBY__ + +// If __USB_DEBUG__ is defined pull in debug versions of the +// USB DLLs and Plugins regardless of the ROM type +#ifdef __USB_DEBUG__ +define USB_DIR UDEB +#define USB_PLUGIN ECOM_PLUGIN_UDEB +#else +define USB_DIR BUILD_DIR +#define USB_PLUGIN ECOM_PLUGIN +#endif + + +// *** Check we have been given a sensible set of buildrom options +#if defined (__OBEX_OVER_USB__) && (defined (__TEST_USB_ZLP__) || defined (__USBMAN_DUMMYCC__)) +#error Defining both OBEX over USB _and_ Zero Length Packet testing or dummy class controllers does not make sense. +#endif + +// *** USBMAN.DLL is the client side. It is always included in the ROM, +// *** whether USB is supported by the device or not, so that client +// *** applications can link against it regardless. +file=ABI_DIR\USB_DIR\usbman.dll usbman.dll + +// The main backup registration file. Plug-ins should use its own backup registration file in order to back its perfered data. +data=ZPRIVATE\101fe1db\backup_registration.xml private\101fe1db\backup_registration.xml + +// *** USB logger. This is not dependent on EUSBC as it is used by +// *** usbman.dll. It compiles down to next to nothing when __FLOG_ACTIVE is +// *** undefined, and we cannot remove it altogether because things link +// *** against it. +file=ABI_DIR\USB_DIR\usblogger.dll usblogger.dll + +#if defined(_DEBUG) || defined (__USB_DEBUG__) +#include "commsdebugutility.iby" +#endif + +// *** Now for things which should only be included if the device supports +// *** USB, to save ROM space... +#if defined(SYMBIAN_EXCLUDE_USB) || !defined(EUSBC) +REM Feature USB is not included in this ROM (usbman.iby) +#else + +#include + +#ifndef __OBEX_OVER_USB__ + #ifndef __TEST_USB_ZLP__ + #ifdef __EXAMPLE_OBEX_CC__ + // *** OBEX Class Controller plugin. + USB_PLUGIN(obexclasscontroller.dll,1027433a.rsc) + // *** All the files needed by Obex Class Controller + // *** The executable that the class controller links to + file=ABI_DIR\BUILD_DIR\classControllerServerSession.exe sys\bin\classControllerServerSession.exe + // *** The dll that the class controller uses as a client + file=ABI_DIR\BUILD_DIR\classControllerClientSession.dll sys\bin\classControllerClientSession.dll + #endif //__EXAMPLE_OBEX_CC__ + #endif //__TEST_USB_ZLP__ +#endif //__OBEX_OVER_USB__ + +// *** 'buildrom -D__USBMAN_DUMMYCC__' will use the dummy Class Controller +// *** build of USBSVR for testing purposes. +// *** Note: DummyCC never includes OTG code. +#ifdef __USBMAN_DUMMYCC__ +#include +file=ABI_DIR\USB_DIR\t_usbman_dummycc.exe usbsvr.exe +#else +// +// Configuration of OTG or Client. +// +#if defined(SYMBIAN_ENABLE_USB_OTG_HOST) + + #if defined(SYMBIAN_INCLUDE_USB_OTG_HOST) + REM Feature USB Host (and related OTG) is included in this ROM (usbman.iby) + file=ABI_DIR\USB_DIR\usbsvrotg.exe usbsvr.exe + #include + REM Host Mass Storage binaries + #ifdef WITH_MASS_STORAGE + #include + #include + #endif + #else + REM Feature USB Host (and related OTG) is NOT included in this ROM (usbman.iby) + file=ABI_DIR\USB_DIR\usbsvr.exe usbsvr.exe + #endif // SYMBIAN_INCLUDE_USB_OTG_HOST + +#else + + REM SYMBIAN_ENABLE_USB_OTG_HOST is not defined - so we fall back to building in the + REM non-OTG usbsvr.exe + file=ABI_DIR\USB_DIR\usbsvr.exe usbsvr.exe + +#endif // SYMBIAN_ENABLE_USB_OTG_HOST + +#endif + +file=ABI_DIR\USB_DIR\usbclasscontroller.dll usbclasscontroller.dll +file=ABI_DIR\USB_DIR\usbmanextensionplugin.dll usbmanextensionplugin.dll + +#ifdef WITH_REFERENCE_USB_CHARGING_PLUGIN +// *** Reference battery charging plug-in +#if defined(SYMBIAN_ENABLE_USB_OTG_HOST) && defined (SYMBIAN_INCLUDE_USB_OTG_HOST) +USB_PLUGIN(usbbatterychargingpluginotg.dll,usbbatterychargingpluginotg.rsc) +#else +USB_PLUGIN(usbbatterychargingplugin.dll,usbbatterychargingplugin.rsc) +#endif +#endif + +// *** WHCM Class Controller - used for OBEX over USB. +USB_PLUGIN(whcmclasscontroller.dll,101fbf23.rsc) + +// *** Mass Storage Class Controller. +USB_PLUGIN(msclasscontroller.dll,10204bbb.rsc) +data=ZPRIVATE\10204bbb\usbms.rsc PRIVATE\101fe1db\usbms.rsc +#ifdef WITH_MASS_STORAGE_EXAMPLE_APP +file=ABI_DIR\USB_DIR\usbmsexampleapp.exe usbmsexampleapp.exe +#endif + +// *** OBEX Class Controller. This is test code, used for descriptor checking +// *** only. +// USB_PLUGIN(Obexclasscontroller.dll,101fbf27.rsc) + +#ifdef SYMBIAN_INCLUDE_USB_RNDIS +// *** RNDIS Class Controller. + +#include + +USB_PLUGIN(rndisclasscontroller.dll, rndisclasscontroller.rsc) +USB_PLUGIN(rndisproviders.dll, rndisproviders.rsc) + +// RNDIS IAP ID Backup registration file +data=ZPRIVATE\101fe1db\backup_registration_rndis.xml private\101fe1db\backup_registration_rndis.xml + +file=ABI_DIR\USB_DIR\rndispkt.drv System\Libs\rndispkt.drv +file=ABI_DIR\USB_DIR\rndismessages.dll System\Libs\rndismessages.dll +file=ABI_DIR\USB_DIR\rndisagt.agt System\Libs\rndisagt.agt +#endif // SYMBIAN_INCLUDE_USB_RNDIS + +#endif // SYMBIAN_EXCLUDE_USB + +#endif // __USBMANBIN_IBY__ diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/group/Usbmanrsc.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/group/Usbmanrsc.iby Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,68 @@ + +/* +* Copyright (c) 2003-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: +* Universal Serial Bus Interface Manager Resources +* +*/ + +#ifndef __USBMANRSC_IBY__ +#define __USBMANRSC_IBY__ + + +// *** Only include resource files if device supports USB +#if defined(SYMBIAN_EXCLUDE_USB) || !defined(EUSBC) +REM Feature USB is not included in this ROM (usbman.iby) +#else + +DEFINE __USBMAN_RSC_ZPATH__ ZPRIVATE\101fe1db +DEFINE __USBMAN_RSC_PATH__ PRIVATE\101fe1db + + +#ifdef __TEST_USB_ZLP__ + // *** use the ZLP-configured resource file (PID and VID for the ACM CC are different) + data=__USBMAN_RSC_ZPATH__\usbmanzlp.rsc __USBMAN_RSC_PATH__\usbman.rsc +#else //__TEST_USB_ZLP__ + + #ifdef __EXAMPLE_OBEX_CC__ + // *** 'buildrom -D__EXAMPLE_OBEX_CC__' will use example Obex class controller + // *** The RSC file that was created when building the example source + data=__USBMAN_RSC_ZPATH__\obexusbman.rsc __USBMAN_RSC_PATH__\usbman.rsc + #else //__EXAMPLE_OBEX_CC__ + // *** This is the normal resource file.. + #ifndef USB_EXCLUDE_DEFAULT_PERSONALITIES + #ifdef SYMBIAN_EXCLUDE_MTP + #ifdef SYMBIAN_INCLUDE_USB_RNDIS + // *** Normal resource file including RNDIS support but excluding MTP + data=__USBMAN_RSC_ZPATH__\usbmanrndis.rsc __USBMAN_RSC_PATH__\usbman.rsc + #else + // *** Normal resource file excluding MTP and RNDIS support + data=__USBMAN_RSC_ZPATH__\usbman.rsc __USBMAN_RSC_PATH__\usbman.rsc + #endif // SYMBIAN_INCLUDE_USB_RNDIS + #else // SYMBIAN_EXCLUDE_MTP + #ifdef SYMBIAN_INCLUDE_USB_RNDIS + // *** Normal resource file including RNDIS and MTP support + data=__USBMAN_RSC_ZPATH__\usbmanmtprndis.rsc __USBMAN_RSC_PATH__\usbman.rsc + #else + // *** Normal resource file including MTP support but excluding RNDIS + data=__USBMAN_RSC_ZPATH__\usbmanmtp.rsc __USBMAN_RSC_PATH__\usbman.rsc + #endif // SYMBIAN_INCLUDE_USB_RNDIS + #endif // SYMBIAN_EXCLUDE_MTP + #endif // USB_EXCLUDE_DEFAULT_PERSONALITIES + #endif //__EXAMPLE_OBEX_CC__ +#endif //__TEST_USB_ZLP__ + +#endif // SYMBIAN_EXCLUDE_USB + +#endif // __USBMANRSC_IBY__ diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/group/usb.iby --- a/usbmgmt/usbmgr/group/usb.iby Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/group/usb.iby Wed Sep 01 12:35:00 2010 +0100 @@ -28,10 +28,10 @@ REM *** Now for things which should only be included if the device REM *** supports USB, to save ROM space... -#if !defined(__USB) || !defined(EUSBC) +#if defined(SYMBIAN_EXCLUDE_USB) || !defined(EUSBC) REM Feature USB is not included in this ROM (usb.iby) -#else // defined(__USB) && defined(EUSBC) +#else REM USB component can be added here. -#endif // !defined(__USB) || !defined(EUSBC) +#endif // SYMBIAN_EXCLUDE_USB #endif diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/group/usb_manager.history.xml --- a/usbmgmt/usbmgr/group/usb_manager.history.xml Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/group/usb_manager.history.xml Wed Sep 01 12:35:00 2010 +0100 @@ -220,7 +220,7 @@ - Added new .rss file (usbmanmtp.rss) which contains additional personality definition for the MTP personality - Extended usbsvrbase.mmp to build the new .rss file as usbmanmtp.rsc - Added more definitions to the usbman*.rls localisation files to cover the new MTP personality - - Amended usbman.iby to choose the usbman.rsc file in the final ROM depending on the presence or absence of the __MTP_PROTOCOL_SUPPORT macro at ROM build time. + - Amended usbman.iby to choose the usbman.rsc file in the final ROM depending on the presence or absence of the SYMBIAN_EXCLUDE_MTP macro at ROM build time. diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/group/usbperipheral.iby --- a/usbmgmt/usbmgr/group/usbperipheral.iby Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -/* -* 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: -* Logical Device Driver of USB peripheral stack -* -*/ -#ifndef USBPERIPHERAL_IBY -#define USBPERIPHERAL_IBY - -#include - -#ifndef COREOS -#ifndef NCP_COMMON_PLATFORM_SIMULATOR -device[VARID]=KERNEL_DIR\BUILD_DIR\usbc.ldd \Sys\Bin\eusbc.ldd -device[VARID]=KERNEL_DIR\BUILD_DIR\usbcsc.ldd \Sys\Bin\eusbcsc.ldd -#endif // NCP_COMMON_PLATFORM_SIMULATOR -#endif // COREOS - -#endif \ No newline at end of file diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/client/group/usbhoststack.mmp --- a/usbmgmt/usbmgr/host/fdf/production/client/group/usbhoststack.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/client/group/usbhoststack.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/client/group/usbhoststack_base.mmp --- a/usbmgmt/usbmgr/host/fdf/production/client/group/usbhoststack_base.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/client/group/usbhoststack_base.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -29,10 +29,11 @@ USERINCLUDE ../../server/public USERINCLUDE ../public -USERINCLUDE ../traces OS_LAYER_SYSTEMINCLUDE_SYMBIAN DEFFILE usbhoststack.def LIBRARY euser.lib + +#include diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/client/group/usbhoststack_over_dummyusbdi.mmp --- a/usbmgmt/usbmgr/host/fdf/production/client/group/usbhoststack_over_dummyusbdi.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/client/group/usbhoststack_over_dummyusbdi.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/client/public/usbhosterrors.h --- a/usbmgmt/usbmgr/host/fdf/production/client/public/usbhosterrors.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/client/public/usbhosterrors.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/client/public/usbhoststack.h --- a/usbmgmt/usbmgr/host/fdf/production/client/public/usbhoststack.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/client/public/usbhoststack.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/client/src/session.cpp --- a/usbmgmt/usbmgr/host/fdf/production/client/src/session.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/client/src/session.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -21,22 +21,21 @@ */ #include +#include #include "usbhoststack.h" #include "fdfapi.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "sessionTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "usbhstcli"); #endif - - /** Starts the server process. */ static TInt StartServer() { - OstTraceFunctionEntry0( _FDF_STARTSERVER_ENTRY ); - + LOG_STATIC_FUNC_ENTRY + const TUidType serverUid(KNullUid, KNullUid, KUsbFdfUid); // @@ -46,12 +45,10 @@ // RProcess server; TInt err = server.Create(KUsbFdfImg, KNullDesC, serverUid); - - OstTrace1( TRACE_NORMAL, _FDF_STARTSERVER, "\terr = %d", err ); + LOGTEXT2(_L8("\terr = %d"), err); if ( err != KErrNone ) { - OstTraceFunctionExit0( _FDF_STARTSERVER_EXIT ); return err; } @@ -60,14 +57,12 @@ if ( stat != KRequestPending ) { - OstTrace0( TRACE_NORMAL, _FDF_STARTSERVER_DUP1, "\taborting startup" ); - + LOGTEXT(_L8("\taborting startup")); server.Kill(0); // abort startup } else { - OstTrace0( TRACE_NORMAL, _FDF_STARTSERVER_DUP2, "\tresuming" ); - + LOGTEXT(_L8("\tresuming")); server.Resume(); // logon OK - start the server } @@ -76,15 +71,12 @@ // we can't use the 'exit reason' if the server panicked as this // is the panic 'reason' and may be '0' which cannot be distinguished // from KErrNone - OstTrace1( TRACE_NORMAL, _FDF_STARTSERVER_DUP3, "\tstat.Int = %d", stat.Int()); - + LOGTEXT2(_L8("\tstat.Int = %d"), stat.Int()); err = (server.ExitType() == EExitPanic) ? KErrServerTerminated : stat.Int(); server.Close(); - OstTrace1( TRACE_NORMAL, _FDF_STARTSERVER_DUP4, "\terr = %d", err ); - - OstTraceFunctionExit0( _FDF_STARTSERVER_EXIT_DUP1 ); + LOGTEXT2(_L8("\terr = %d"), err); return err; } @@ -93,16 +85,17 @@ : iDeviceEventPckg(TDeviceEventInformation()), iDevmonEventPckg(0) { - OstTraceFunctionEntry0( RUSBHOSTSTACK_RUSBHOSTSTACK_ENTRY ); - - OstTrace0( TRACE_NORMAL, RUSBHOSTSTACK_RUSBHOSTSTACK, "*** Search on '***USB HOST STACK' to find device events." ); - + LOGTEXT(_L8("*** Search on '***USB HOST STACK' to find device events.")); + + LOG_LINE + LOG_FUNC } EXPORT_C TVersion RUsbHostStack::Version() const { - OstTraceFunctionEntry0( RUSBHOSTSTACK_VERSION_ENTRY ); - + LOG_LINE + LOG_FUNC + return(TVersion( KUsbFdfSrvMajorVersionNumber, KUsbFdfSrvMinorVersionNumber, KUsbFdfSrvBuildNumber @@ -112,12 +105,12 @@ EXPORT_C TInt RUsbHostStack::Connect() { - OstTraceFunctionEntry0( RUSBHOSTSTACK_CONNECT_ENTRY ); - + LOG_LINE + LOG_FUNC; + TInt err = DoConnect(); - OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_CONNECT, "\terr = %d", err); - + LOGTEXT2(_L8("\terr = %d"), err); return err; } @@ -127,8 +120,7 @@ */ TInt RUsbHostStack::DoConnect() { - OstTraceFunctionEntry0( RUSBHOSTSTACK_DOCONNECT_ENTRY); - + LOG_FUNC TInt retry = 2; @@ -136,32 +128,26 @@ { // Use message slots from the global pool. TInt err = CreateSession(KUsbFdfServerName, Version(), -1); - OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_DOCONNECT, "\terr = %d", err ); - + LOGTEXT2(_L8("\terr = %d"), err); + if ((err != KErrNotFound) && (err != KErrServerTerminated)) { - OstTrace0( TRACE_NORMAL, RUSBHOSTSTACK_DOCONNECT_DUP1, "\treturning after CreateSession" ); - - OstTraceFunctionExit0( RUSBHOSTSTACK_DOCONNECT_EXIT); + LOGTEXT(_L8("\treturning after CreateSession")); return err; } if (--retry == 0) { - OstTrace0( TRACE_NORMAL, RUSBHOSTSTACK_DOCONNECT_DUP2, "\treturning after running out of retries" ); - - OstTraceFunctionExit0( RUSBHOSTSTACK_DOCONNECT_EXIT_DUP1 ); + LOGTEXT(_L8("\treturning after running out of retries")); return err; } err = StartServer(); - OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_DOCONNECT_DUT3, "\terr = %d", err ); - + LOGTEXT2(_L8("\terr = %d"), err); + if ((err != KErrNone) && (err != KErrAlreadyExists)) { - OstTrace0( TRACE_NORMAL, RUSBHOSTSTACK_DOCONNECT_DUP4, "\treturning after StartServer" ); - - OstTraceFunctionExit0( RUSBHOSTSTACK_DOCONNECT_EXIT_DUP2 ); + LOGTEXT(_L8("\treturning after StartServer")); return err; } } @@ -169,85 +155,83 @@ EXPORT_C TInt RUsbHostStack::EnableDriverLoading() { - OstTraceFunctionEntry0( RUSBHOSTSTACK_ENABLEDRIVERLOADING_ENTRY ); - + LOG_LINE + LOG_FUNC + TInt ret = SendReceive(EUsbFdfSrvEnableDriverLoading); - OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_ENABLEDRIVERLOADING, "\tret = %d", ret ); - - OstTraceFunctionExit0( RUSBHOSTSTACK_ENABLEDRIVERLOADING_EXIT ); + LOGTEXT2(_L8("\tret = %d"), ret); return ret; } EXPORT_C void RUsbHostStack::DisableDriverLoading() { - OstTraceFunctionEntry0( RUSBHOSTSTACK_DISABLEDRIVERLOADING_ENTRY ); + LOG_LINE + LOG_FUNC TInt ret = SendReceive(EUsbFdfSrvDisableDriverLoading); - OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_DISABLEDRIVERLOADING, "\tret = %d", ret ); + LOGTEXT2(_L8("\tret = %d"), ret); (void)ret; - OstTraceFunctionExit0( RUSBHOSTSTACK_DISABLEDRIVERLOADING_EXIT ); } EXPORT_C void RUsbHostStack::NotifyDeviceEvent(TRequestStatus& aStat, TDeviceEventInformation& aDeviceEventInformation) { - OstTraceFunctionEntry0( RUSBHOSTSTACK_NOTIFYDEVICEEVENT_ENTRY ); - + LOG_LINE + LOG_FUNC + TIpcArgs args; iDeviceEventPckg.Set((TUint8*)&aDeviceEventInformation, sizeof(TDeviceEventInformation), sizeof(TDeviceEventInformation)); args.Set(0, &iDeviceEventPckg); SendReceive(EUsbFdfSrvNotifyDeviceEvent, args, aStat); - OstTraceFunctionExit0( RUSBHOSTSTACK_NOTIFYDEVICEEVENT_EXIT ); } EXPORT_C void RUsbHostStack::NotifyDeviceEventCancel() { - OstTraceFunctionEntry0( RUSBHOSTSTACK_NOTIFYDEVICEEVENTCANCEL_ENTRY ); - + LOG_LINE + LOG_FUNC + TInt ret = SendReceive(EUsbFdfSrvNotifyDeviceEventCancel); - OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_NOTIFYDEVICEEVENTCANCEL, "\tret = %d", ret); + LOGTEXT2(_L8("\tret = %d"), ret); (void)ret; - OstTraceFunctionExit0( RUSBHOSTSTACK_NOTIFYDEVICEEVENTCANCEL_EXIT ); } EXPORT_C void RUsbHostStack::NotifyDevmonEvent(TRequestStatus& aStat, TInt& aEvent) { - OstTraceFunctionEntry0( RUSBHOSTSTACK_NOTIFYDEVMONEVENT_ENTRY ); - + LOG_LINE + LOG_FUNC + TIpcArgs args; iDevmonEventPckg.Set((TUint8*)&aEvent, sizeof(TInt), sizeof(TInt)); args.Set(0, &iDevmonEventPckg); SendReceive(EUsbFdfSrvNotifyDevmonEvent, args, aStat); - OstTraceFunctionExit0( RUSBHOSTSTACK_NOTIFYDEVMONEVENT_EXIT ); } EXPORT_C void RUsbHostStack::NotifyDevmonEventCancel() { - OstTraceFunctionEntry0( RUSBHOSTSTACK_NOTIFYDEVMONEVENTCANCEL_ENTRY ); - + LOG_LINE + LOG_FUNC + TInt ret = SendReceive(EUsbFdfSrvNotifyDevmonEventCancel); - OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_NOTIFYDEVMONEVENTCANCEL, "\tret = %d", ret); + LOGTEXT2(_L8("\tret = %d"), ret); (void)ret; - OstTraceFunctionExit0( RUSBHOSTSTACK_NOTIFYDEVMONEVENTCANCEL_EXIT ); } EXPORT_C TInt RUsbHostStack::GetSupportedLanguages(TUint aDeviceId, RArray& aLangIds) { - OstTraceFunctionEntry0( RUSBHOSTSTACK_GETSUPPORTEDLANGUAGES_ENTRY ); - + LOG_LINE + LOG_FUNC + aLangIds.Reset(); TUint singleLangIdOrNumLangs = 0; TPckg singleLangIdOrNumLangsBuf(singleLangIdOrNumLangs); TInt ret = SendReceive(EUsbFdfSrvGetSingleSupportedLanguageOrNumberOfSupportedLanguages, TIpcArgs(aDeviceId, &singleLangIdOrNumLangsBuf)); - OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_GETSUPPORTEDLANGUAGES, "\tsingleLangIdOrNumLangs = %d", singleLangIdOrNumLangs); - + LOGTEXT2(_L8("\tsingleLangIdOrNumLangs = %d"), singleLangIdOrNumLangs); switch ( ret ) { case KErrNotFound: - OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_GETSUPPORTEDLANGUAGES_DUP1, "\tThere is no language available or the wrong device id %d was supplied",aDeviceId); - + LOGTEXT2(_L8("\tThere is no language available or the wrong device id %d was supplied"),aDeviceId); ret = KErrNotFound; break; @@ -279,21 +263,18 @@ break; } - OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_GETSUPPORTEDLANGUAGES_DUP2, "\tret = %d", ret); - - OstTraceFunctionExit0( RUSBHOSTSTACK_GETSUPPORTEDLANGUAGES_EXIT ); + LOGTEXT2(_L8("\tret = %d"), ret); return ret; } TInt RUsbHostStack::CopyLangIdsToArray(RArray& aLangIds, const TDesC8& aBuffer) { - OstTraceFunctionEntry0( RUSBHOSTSTACK_COPYLANGIDSTOARRAY_ENTRY ); - + LOG_FUNC + ASSERT(!(aBuffer.Size() % 4)); const TUint numLangs = aBuffer.Size() / 4; - - OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_COPYLANGIDSTOARRAY, "\tnumLangs = %d", numLangs ); - + LOGTEXT2(_L8("\tnumLangs = %d"), numLangs); + TInt ret = KErrNone; const TUint* ptr = reinterpret_cast(aBuffer.Ptr()); for ( TUint ii = 0 ; ii < numLangs ; ++ii ) @@ -306,51 +287,46 @@ } } - OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_COPYLANGIDSTOARRAY_DUP1, "\tret = %d", ret ); - - OstTraceFunctionExit0( RUSBHOSTSTACK_COPYLANGIDSTOARRAY_EXIT ); + LOGTEXT2(_L8("\tret = %d"), ret); return ret; } EXPORT_C TInt RUsbHostStack::GetManufacturerStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString) { - OstTraceFunctionEntry0( RUSBHOSTSTACK_GETMANUFACTURERSTRINGDESCRIPTOR_ENTRY ); - + LOG_LINE + LOG_FUNC + TInt ret = SendReceive(EUsbFdfSrvGetManufacturerStringDescriptor, TIpcArgs(aDeviceId, aLangId, &aString)); +#ifdef __FLOG_ACTIVE if ( !ret ) { - OstTraceExt1( TRACE_NORMAL, RUSBHOSTSTACK_GETMANUFACTURERSTRINGDESCRIPTOR, "RUsbHostStack::GetManufacturerStringDescriptor;aString=%S", aString ); - - } - - OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_GETMANUFACTURERSTRINGDESCRIPTOR_DUP1, "\tret = %d", ret ); - - OstTraceFunctionExit0( RUSBHOSTSTACK_GETMANUFACTURERSTRINGDESCRIPTOR_EXIT ); + LOGTEXT2(_L("\taString = \"%S\""), &aString); + } +#endif + LOGTEXT2(_L8("\tret = %d"), ret); return ret; } EXPORT_C TInt RUsbHostStack::GetProductStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString) { - OstTraceFunctionEntry0( RUSBHOSTSTACK_GETPRODUCTSTRINGDESCRIPTOR_ENTRY ); - + LOG_LINE + LOG_FUNC + TInt ret = SendReceive(EUsbFdfSrvGetProductStringDescriptor, TIpcArgs(aDeviceId, aLangId, &aString)); +#ifdef __FLOG_ACTIVE if ( !ret ) { - OstTraceExt1( TRACE_NORMAL, RUSBHOSTSTACK_GETPRODUCTSTRINGDESCRIPTOR, "\taString = \"%S\"", aString ); - - + LOGTEXT2(_L("\taString = \"%S\""), &aString); } - OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_GETPRODUCTSTRINGDESCRIPTOR_DUP1, "\tret = %d", ret ); - - - OstTraceFunctionExit0( RUSBHOSTSTACK_GETPRODUCTSTRINGDESCRIPTOR_EXIT ); +#endif + LOGTEXT2(_L8("\tret = %d"), ret); return ret; } EXPORT_C TInt RUsbHostStack::GetOtgDescriptor(TUint aDeviceId, TOtgDescriptor& aDescriptor) { - OstTraceFunctionEntry0( RUSBHOSTSTACK_GETOTGDESCRIPTOR_ENTRY ); - + LOG_LINE + LOG_FUNC TPckg otgDescriptorPckg(aDescriptor); @@ -359,14 +335,14 @@ args.Set(1, &otgDescriptorPckg); TInt ret = SendReceive(EUsbFdfSrvGetOtgDescriptor, args); +#ifdef __FLOG_ACTIVE if ( !ret ) { - OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_GETOTGDESCRIPTOR, "\taDescriptor.iDeviceId = %d", aDescriptor.iDeviceId ); - OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_GETOTGDESCRIPTOR_DUP1, "\taDescriptor.iAttributes = %d", aDescriptor.iAttributes ); + LOGTEXT2(_L("\taDescriptor.iDeviceId = %d"), aDescriptor.iDeviceId); + LOGTEXT2(_L("\taDescriptor.iAttributes = %d"), aDescriptor.iAttributes); } - OstTrace1( TRACE_NORMAL, RUSBHOSTSTACK_GETOTGDESCRIPTOR_DUP2, "\tret = %d", ret ); - - OstTraceFunctionExit0( RUSBHOSTSTACK_GETOTGDESCRIPTOR_EXIT ); +#endif + LOGTEXT2(_L8("\tret = %d"), ret); return ret; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/client/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/host/fdf/production/client/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/client/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/host/fdf/production/client/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_CONNECT_ENTRY=0x6 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_COPYLANGIDSTOARRAY_ENTRY=0x19 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_COPYLANGIDSTOARRAY_EXIT=0x1a -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_DISABLEDRIVERLOADING_ENTRY=0xd -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_DISABLEDRIVERLOADING_EXIT=0xe -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_DOCONNECT_ENTRY=0x7 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_DOCONNECT_EXIT=0x8 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_DOCONNECT_EXIT_DUP1=0x24 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_DOCONNECT_EXIT_DUP2=0x25 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_ENABLEDRIVERLOADING_ENTRY=0xb -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_ENABLEDRIVERLOADING_EXIT=0xc -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_GETMANUFACTURERSTRINGDESCRIPTOR_ENTRY=0x1b -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_GETMANUFACTURERSTRINGDESCRIPTOR_EXIT=0x1c -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_GETOTGDESCRIPTOR_ENTRY=0x1f -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_GETOTGDESCRIPTOR_EXIT=0x20 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_GETPRODUCTSTRINGDESCRIPTOR_ENTRY=0x1d -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_GETPRODUCTSTRINGDESCRIPTOR_EXIT=0x1e -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_GETSUPPORTEDLANGUAGES_ENTRY=0x17 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_GETSUPPORTEDLANGUAGES_EXIT=0x18 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_NOTIFYDEVICEEVENTCANCEL_ENTRY=0x11 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_NOTIFYDEVICEEVENTCANCEL_EXIT=0x12 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_NOTIFYDEVICEEVENT_ENTRY=0xf -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_NOTIFYDEVICEEVENT_EXIT=0x10 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_NOTIFYDEVMONEVENTCANCEL_ENTRY=0x15 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_NOTIFYDEVMONEVENTCANCEL_EXIT=0x16 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_NOTIFYDEVMONEVENT_ENTRY=0x13 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_NOTIFYDEVMONEVENT_EXIT=0x14 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_RUSBHOSTSTACK_ENTRY=0x4 -[TRACE]TRACE_FLOW[0x8A]_RUSBHOSTSTACK_VERSION_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x8A]__FDF_STARTSERVER_ENTRY=0x21 -[TRACE]TRACE_FLOW[0x8A]__FDF_STARTSERVER_EXIT=0x22 -[TRACE]TRACE_FLOW[0x8A]__FDF_STARTSERVER_EXIT_DUP1=0x23 -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_CONNECT=0x7 -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_COPYLANGIDSTOARRAY=0x16 -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_COPYLANGIDSTOARRAY_DUP1=0x17 -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_DISABLEDRIVERLOADING=0xe -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_DOCONNECT=0x8 -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_DOCONNECT_DUP1=0x9 -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_DOCONNECT_DUP2=0xa -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_DOCONNECT_DUP4=0xc -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_DOCONNECT_DUT3=0xb -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_ENABLEDRIVERLOADING=0xd -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_GETMANUFACTURERSTRINGDESCRIPTOR=0x19 -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_GETMANUFACTURERSTRINGDESCRIPTOR_DUP1=0x1a -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_GETOTGDESCRIPTOR=0x18 -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_GETOTGDESCRIPTOR_DUP1=0x1b -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_GETOTGDESCRIPTOR_DUP2=0x1c -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_GETPRODUCTSTRINGDESCRIPTOR=0x1d -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_GETPRODUCTSTRINGDESCRIPTOR_DUP1=0x15 -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_GETSUPPORTEDLANGUAGES=0x11 -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_GETSUPPORTEDLANGUAGES_DUP1=0x12 -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_GETSUPPORTEDLANGUAGES_DUP2=0x13 -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_NOTIFYDEVICEEVENTCANCEL=0xf -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_NOTIFYDEVMONEVENTCANCEL=0x10 -[TRACE]TRACE_NORMAL[0x86]_RUSBHOSTSTACK_RUSBHOSTSTACK=0x6 -[TRACE]TRACE_NORMAL[0x86]__FDF_STARTSERVER=0x1e -[TRACE]TRACE_NORMAL[0x86]__FDF_STARTSERVER_DUP1=0x1f -[TRACE]TRACE_NORMAL[0x86]__FDF_STARTSERVER_DUP2=0x20 -[TRACE]TRACE_NORMAL[0x86]__FDF_STARTSERVER_DUP3=0x21 -[TRACE]TRACE_NORMAL[0x86]__FDF_STARTSERVER_DUP4=0x22 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_RUSBHOSTSTACK_DOCONNECT_EXIT=0x9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1__STARTSERVER_EXIT=0x3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP2_RUSBHOSTSTACK_DOCONNECT_EXIT=0xa -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]__STARTSERVER_ENTRY=0x1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]__STARTSERVER_EXIT=0x2 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]__STARTSERVER=0x1 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]__STARTSERVER_DUP1=0x2 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]__STARTSERVER_DUP2=0x3 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]__STARTSERVER_DUP3=0x4 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]__STARTSERVER_DUP4=0x5 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/fdcbase/group/bld.inf --- a/usbmgmt/usbmgr/host/fdf/production/fdcbase/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/fdcbase/group/bld.inf Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/fdcbase/group/fdcbase.mmp --- a/usbmgmt/usbmgr/host/fdf/production/fdcbase/group/fdcbase.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/fdcbase/group/fdcbase.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -37,6 +37,5 @@ LIBRARY euser.lib LIBRARY ecom.lib -USERINCLUDE ../traces - +#include #include diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/fdcbase/group/fdcbase_base_bld.inf --- a/usbmgmt/usbmgr/host/fdf/production/fdcbase/group/fdcbase_base_bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/fdcbase/group/fdcbase_base_bld.inf Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/fdcbase/group/fdcbase_over_dummyusbdi_bld.inf --- a/usbmgmt/usbmgr/host/fdf/production/fdcbase/group/fdcbase_over_dummyusbdi_bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/fdcbase/group/fdcbase_over_dummyusbdi_bld.inf Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/fdcbase/public/fdcinterface.h --- a/usbmgmt/usbmgr/host/fdf/production/fdcbase/public/fdcinterface.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/fdcbase/public/fdcinterface.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/fdcbase/public/fdcplugin.h --- a/usbmgmt/usbmgr/host/fdf/production/fdcbase/public/fdcplugin.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/fdcbase/public/fdcplugin.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/fdcbase/public/fdcplugin.hrh --- a/usbmgmt/usbmgr/host/fdf/production/fdcbase/public/fdcplugin.hrh Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/fdcbase/public/fdcplugin.hrh Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/fdcbase/public/fdcpluginobserver.h --- a/usbmgmt/usbmgr/host/fdf/production/fdcbase/public/fdcpluginobserver.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/fdcbase/public/fdcpluginobserver.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/fdcbase/src/fdcplugin.cpp --- a/usbmgmt/usbmgr/host/fdf/production/fdcbase/src/fdcplugin.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/fdcbase/src/fdcplugin.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -24,32 +24,30 @@ #include #include #include +#include -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "fdcpluginTraces.h" +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "fdcplugin"); #endif - EXPORT_C CFdcPlugin::~CFdcPlugin() { - OstTraceFunctionEntry0( CFDCPLUGIN_CFDCPLUGIN_DES_ENTRY ); - + LOG_FUNC + REComSession::DestroyedImplementation(iInstanceId); } EXPORT_C CFdcPlugin::CFdcPlugin(MFdcPluginObserver& aObserver) : iObserver(aObserver) { - OstTraceFunctionEntry0( CFDCPLUGIN_CFDCPLUGIN_CONS_ENTRY ); - + LOG_FUNC } EXPORT_C CFdcPlugin* CFdcPlugin::NewL(TUid aImplementationUid, MFdcPluginObserver& aObserver) { - OstTraceFunctionEntry0( CFDCPLUGIN_NEWL_ENTRY ); - - OstTrace1( TRACE_NORMAL, CFDCPLUGIN_NEWL, "\t\tFDC implementation UID: 0x%08x", aImplementationUid.iUid); + LOG_STATIC_FUNC_ENTRY + + LOGTEXT2(_L8("\t\tFDC implementation UID: 0x%08x"), aImplementationUid); CFdcPlugin* plugin = reinterpret_cast( REComSession::CreateImplementationL( @@ -59,8 +57,7 @@ ) ); - OstTrace1( TRACE_NORMAL, CFDCPLUGIN_NEWL_DUP1, "\tplugin = 0x%08x", plugin); - + LOGTEXT2(_L8("\tplugin = 0x%08x"), plugin); return plugin; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/fdcbase/src/fdcpluginobserver.cpp --- a/usbmgmt/usbmgr/host/fdf/production/fdcbase/src/fdcpluginobserver.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/fdcbase/src/fdcpluginobserver.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -21,16 +21,15 @@ */ #include +#include -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "fdcpluginobserverTraces.h" +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "fdcplugin"); #endif - EXPORT_C TUint32 MFdcPluginObserver::TokenForInterface(TUint8 aInterface) { - OstTraceFunctionEntry1( MFDCPLUGINOBSERVER_TOKENFORINTERFACE_ENTRY, this ); + LOG_FUNC return MfpoTokenForInterface(aInterface); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/fdcbase/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/host/fdf/production/fdcbase/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/fdcbase/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/host/fdf/production/fdcbase/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_FLOW[0x8A]_CFDCPLUGIN_CFDCPLUGIN_CONS_ENTRY=0xb -[TRACE]TRACE_FLOW[0x8A]_CFDCPLUGIN_CFDCPLUGIN_DES_ENTRY=0xa -[TRACE]TRACE_FLOW[0x8A]_CFDCPLUGIN_NEWL_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x8A]_MFDCPLUGINOBSERVER_TOKENFORINTERFACE_ENTRY=0x8 -[TRACE]TRACE_NORMAL[0x86]_CFDCPLUGIN_NEWL=0x3 -[TRACE]TRACE_NORMAL[0x86]_CFDCPLUGIN_NEWL_DUP1=0x2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDCPLUGIN_CFDCPLUGIN_ENTRY=0x1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDCPLUGIN_CFDCPLUGIN_ENTRY_DUP1=0x9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDCPLUGIN_CFDCPLUGIN_ENTRY_DUP1_EXIT=0x4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDCPLUGIN_CFDCPLUGIN_EXIT=0x2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDCPLUGIN_NEWL_EXIT=0x6 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CFDCPLUGIN_CFDCPLUGIN_ENTRY=0x7 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDCPLUGIN_NEWL=0x1 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/group/fdf.mmp --- a/usbmgmt/usbmgr/host/fdf/production/server/group/fdf.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/group/fdf.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/group/fdf_base.mmp --- a/usbmgmt/usbmgr/host/fdf/production/server/group/fdf_base.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/group/fdf_base.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -22,6 +22,7 @@ */ #include +#include TARGETTYPE exe VENDORID 0x70000001 @@ -40,7 +41,6 @@ SOURCE utils.cpp USERINCLUDE ../inc -USERINCLUDE ../traces USERINCLUDE ../public USERINCLUDE ../../client/public @@ -51,4 +51,7 @@ LIBRARY euser.lib LIBRARY ecom.lib LIBRARY fdcbase.lib + +#ifdef __FLOGGER_INCLUDED LIBRARY efsrv.lib +#endif diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/group/fdf_over_dummyusbdi.mmp --- a/usbmgmt/usbmgr/host/fdf/production/server/group/fdf_over_dummyusbdi.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/group/fdf_over_dummyusbdi.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/group/fdf_over_dummyusbdi_bld.inf --- a/usbmgmt/usbmgr/host/fdf/production/server/group/fdf_over_dummyusbdi_bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/group/fdf_over_dummyusbdi_bld.inf Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/inc/activewaitforbusevent.h --- a/usbmgmt/usbmgr/host/fdf/production/server/inc/activewaitforbusevent.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/inc/activewaitforbusevent.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/inc/activewaitforecomevent.h --- a/usbmgmt/usbmgr/host/fdf/production/server/inc/activewaitforecomevent.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/inc/activewaitforecomevent.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/inc/deviceproxy.h --- a/usbmgmt/usbmgr/host/fdf/production/server/inc/deviceproxy.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/inc/deviceproxy.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/inc/event.h --- a/usbmgmt/usbmgr/host/fdf/production/server/inc/event.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/inc/event.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/inc/eventqueue.h --- a/usbmgmt/usbmgr/host/fdf/production/server/inc/eventqueue.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/inc/eventqueue.h Wed Sep 01 12:35:00 2010 +0100 @@ -65,9 +65,7 @@ CEventQueue(CFdf& aFdf); private: -#ifdef _DEBUG void Log(); -#endif void PokeSession(); private: // unowned diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/inc/fdcproxy.h --- a/usbmgmt/usbmgr/host/fdf/production/server/inc/fdcproxy.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/inc/fdcproxy.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/inc/fdf.h --- a/usbmgmt/usbmgr/host/fdf/production/server/inc/fdf.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/inc/fdf.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/inc/fdfserver.h --- a/usbmgmt/usbmgr/host/fdf/production/server/inc/fdfserver.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/inc/fdfserver.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/inc/fdfsession.h --- a/usbmgmt/usbmgr/host/fdf/production/server/inc/fdfsession.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/inc/fdfsession.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/inc/utils.h --- a/usbmgmt/usbmgr/host/fdf/production/server/inc/utils.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/inc/utils.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -37,7 +37,47 @@ #define CLEANUPSTACK_POP2(a, b) CleanupStack::Pop(2); #endif // _DEBUG +// What we want for internal programming errors in a server is a set of macros +// which, to save effort all round, use __LINE__ as the panic code, and a +// file-specific panic category. To make this non-standard pattern as helpful +// to users as possible, we append ' line#' to the category. That means we +// first have to check that the category is 10 characters long or less, so +// that the whole thing is legible to users when it appears on the screen. +template struct ASSERTION_FAILURE; +TEMPLATE_SPECIALIZATION struct ASSERTION_FAILURE{}; +template struct __assertion_test; +#define COMPILE_ASSERT( B ) void __compile_assert(::__assertion_test)>) +// We want a 10-character string (but allow for the NULL terminator). +#define PANICCATEGORY(aaa) COMPILE_ASSERT(sizeof(L##aaa)/2 <= 11); _LIT(KPanicCat, aaa) + +// A handy panic-self macro- the category is KPanicCat with " line#" appended; +// the code is the line number. +#define PANIC_LINENUM \ + { \ + _LIT(KLnNo, " line#"); \ + TBuf cat = KPanicCat(); \ + cat.Append(KLnNo()); \ + _USB_PANIC(cat, __LINE__); \ + } + +// A handy assertion macro that panics with a locally-defined panic category +// and the line number. +#define ASSERT_ALWAYS(a) \ + { \ + if ( !(a) ) \ + { \ + PANIC_LINENUM; \ + } \ + } + +#ifdef _DEBUG +#define ASSERT_DEBUG(a) ASSERT_ALWAYS(a) +#define DEBUG_PANIC_LINENUM PANIC_LINENUM +#else +#define ASSERT_DEBUG(a) +#define DEBUG_PANIC_LINENUM +#endif // _DEBUG // Undefine the e32def.h-defined ASSERT macro to make sure no-one uses it // under the mistaken impression that it's useful. Use our informative one diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/public/fdfapi.h --- a/usbmgmt/usbmgr/host/fdf/production/server/public/fdfapi.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/public/fdfapi.h Wed Sep 01 12:35:00 2010 +0100 @@ -28,15 +28,15 @@ #ifdef __OVER_DUMMYUSBDI__ const TUint32 KUsbFdfTUint = 0x10282B50; _LIT(KUsbFdfImg, "fdf_over_dummyusbdi.exe"); -_LIT(KUsbFdfServerName, "!FdfSrv_over_dummyusbdi"); #else const TUint32 KUsbFdfTUint = 0x10282B48; _LIT(KUsbFdfImg, "fdf.exe"); -_LIT(KUsbFdfServerName, "!FdfSrv"); #endif const TUid KUsbFdfUid = {KUsbFdfTUint}; +_LIT(KUsbFdfServerName, "!FdfSrv"); + /** Version numbers. */ const TInt8 KUsbFdfSrvMajorVersionNumber = 1; const TInt8 KUsbFdfSrvMinorVersionNumber = 1; diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/src/activewaitforbusevent.cpp --- a/usbmgmt/usbmgr/host/fdf/production/server/src/activewaitforbusevent.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/src/activewaitforbusevent.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -18,14 +18,12 @@ #include "activewaitforbusevent.h" #include #include "utils.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "activewaitforbuseventTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "fdf "); #endif - - CActiveWaitForBusEvent::CActiveWaitForBusEvent(RUsbHubDriver& aHubDriver, RUsbHubDriver::TBusEvent& aBusEvent, MBusEventObserver& aObserver) @@ -34,18 +32,16 @@ iBusEvent(aBusEvent), iObserver(aObserver) { - OstTraceFunctionEntry0( CACTIVEWAITFORBUSEVENT_CACTIVEWAITFORBUSEVENT_CONS_ENTRY ); - + LOG_FUNC + CActiveScheduler::Add(this); - OstTraceFunctionExit0( CACTIVEWAITFORBUSEVENT_CACTIVEWAITFORBUSEVENT_CONS_EXIT ); } CActiveWaitForBusEvent::~CActiveWaitForBusEvent() { - OstTraceFunctionEntry0( CACTIVEWAITFORBUSEVENT_CACTIVEWAITFORBUSEVENT_DES_ENTRY ); - + LOG_FUNC + Cancel(); - OstTraceFunctionExit0( CACTIVEWAITFORBUSEVENT_CACTIVEWAITFORBUSEVENT_DES_EXIT ); } CActiveWaitForBusEvent* CActiveWaitForBusEvent::NewL(RUsbHubDriver& aHubDriver, @@ -58,26 +54,24 @@ void CActiveWaitForBusEvent::Wait() { - OstTraceFunctionEntry0( CACTIVEWAITFORBUSEVENT_WAIT_ENTRY ); - + LOG_FUNC + iHubDriver.WaitForBusEvent(iBusEvent, iStatus); SetActive(); - OstTraceFunctionExit0( CACTIVEWAITFORBUSEVENT_WAIT_EXIT ); } void CActiveWaitForBusEvent::RunL() { - OstTraceFunctionEntry0( CACTIVEWAITFORBUSEVENT_RUNL_ENTRY ); - OstTraceExt2( TRACE_NORMAL, CACTIVEWAITFORBUSEVENT_RUNL, "\tiStatus = %d , iBusEvent.iError=%d ", iStatus.Int(),iBusEvent.iError ); - + LOG_LINE + LOG_FUNC + LOGTEXT3(_L8("\tiStatus = %d , iBusEvent.iError=%d "), iStatus.Int(),iBusEvent.iError); + iObserver.MbeoBusEvent(); - OstTraceFunctionExit0( CACTIVEWAITFORBUSEVENT_RUNL_EXIT ); } void CActiveWaitForBusEvent::DoCancel() { - OstTraceFunctionEntry0( CACTIVEWAITFORBUSEVENT_DOCANCEL_ENTRY ); + LOG_FUNC iHubDriver.CancelWaitForBusEvent(); - OstTraceFunctionExit0( CACTIVEWAITFORBUSEVENT_DOCANCEL_EXIT ); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/src/activewaitforecomevent.cpp --- a/usbmgmt/usbmgr/host/fdf/production/server/src/activewaitforecomevent.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/src/activewaitforecomevent.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -15,13 +15,16 @@ * */ + +#include "activewaitforecomevent.h" #include -#include "activewaitforecomevent.h" #include "utils.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "activewaitforecomeventTraces.h" + + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "fdf "); #endif + #ifdef _DEBUG _LIT( KFdfEcomEventAOPanicCategory, "FdfEcomEventAO" ); #endif @@ -30,20 +33,17 @@ : CActive(CActive::EPriorityStandard), iObserver(aObserver) { - OstTraceFunctionEntry0( CACTIVEWAITFORECOMEVENT_CACTIVEWAITFORECOMEVENT_CONS_ENTRY ); - + LOG_FUNC + CActiveScheduler::Add(this); - OstTraceFunctionExit0( CACTIVEWAITFORECOMEVENT_CACTIVEWAITFORECOMEVENT_CONS_EXIT ); } CActiveWaitForEComEvent::~CActiveWaitForEComEvent() { - OstTraceFunctionEntry0( CACTIVEWAITFORECOMEVENT_CACTIVEWAITFORECOMEVENT_DES_ENTRY ); - - Cancel(); + LOG_FUNC + Cancel(); iEComSession.Close(); REComSession::FinalClose(); - OstTraceFunctionExit0( CACTIVEWAITFORECOMEVENT_CACTIVEWAITFORECOMEVENT_DES_EXIT ); } CActiveWaitForEComEvent* CActiveWaitForEComEvent::NewL(MEComEventObserver& aObserver) @@ -63,36 +63,30 @@ void CActiveWaitForEComEvent::Wait() { - OstTraceFunctionEntry0( CACTIVEWAITFORECOMEVENT_WAIT_ENTRY ); - + LOG_FUNC iEComSession.NotifyOnChange(iStatus); SetActive(); - OstTraceFunctionExit0( CACTIVEWAITFORECOMEVENT_WAIT_EXIT ); } void CActiveWaitForEComEvent::RunL() { - OstTraceFunctionEntry0( CACTIVEWAITFORECOMEVENT_RUNL_ENTRY ); - - iObserver.EComEventReceived(); + LOG_LINE + LOG_FUNC + iObserver.EComEventReceived(); Wait(); - OstTraceFunctionExit0( CACTIVEWAITFORECOMEVENT_RUNL_EXIT ); } void CActiveWaitForEComEvent::DoCancel() { - OstTraceFunctionEntry0( CACTIVEWAITFORECOMEVENT_DOCANCEL_ENTRY ); - + LOG_FUNC iEComSession.CancelNotifyOnChange(iStatus); - OstTraceFunctionExit0( CACTIVEWAITFORECOMEVENT_DOCANCEL_EXIT ); } TInt CActiveWaitForEComEvent::RunError(TInt aError) { - OstTraceFunctionEntry0( CACTIVEWAITFORECOMEVENT_RUNERROR_ENTRY ); - OstTrace1( TRACE_FATAL, CACTIVEWAITFORECOMEVENT_RUNERROR, "ECOM change notification error = %d ", aError ); - - __ASSERT_DEBUG(EFalse,User::Panic(KFdfEcomEventAOPanicCategory, aError)); - OstTraceFunctionExit0( CACTIVEWAITFORECOMEVENT_RUNERROR_EXIT ); + LOG_LINE + LOG_FUNC + LOGTEXT2(_L8("ECOM change notification error = %d "), aError); + __ASSERT_DEBUG(EFalse, _USB_PANIC(KFdfEcomEventAOPanicCategory, aError)); return KErrNone; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/src/deviceproxy.cpp --- a/usbmgmt/usbmgr/host/fdf/production/server/src/deviceproxy.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/src/deviceproxy.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -20,54 +20,48 @@ @internalComponent */ - +#include "deviceproxy.h" #include #include #include "utils.h" #include "event.h" -#include "deviceproxy.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "deviceproxyTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "fdf "); #endif #ifdef _DEBUG +PANICCATEGORY("devproxy"); +#endif + +#ifdef __FLOG_ACTIVE #define LOG Log() -_LIT(KPanicCategory,"devproxy"); #else #define LOG #endif - - CDeviceProxy* CDeviceProxy::NewL(RUsbHubDriver& aHubDriver, TUint aDeviceId) { - OstTraceFunctionEntry0( CDEVICEPROXY_NEWL_ENTRY ); - + LOG_STATIC_FUNC_ENTRY + CDeviceProxy* self = new(ELeave) CDeviceProxy(aDeviceId); CleanupStack::PushL(self); self->ConstructL(aHubDriver); CLEANUPSTACK_POP1(self); - OstTraceFunctionExit0( CDEVICEPROXY_NEWL_EXIT ); return self; } CDeviceProxy::CDeviceProxy(TUint aDeviceId) : iId(aDeviceId) { - OstTraceFunctionEntry0( CDEVICEPROXY_CDEVICEPROXY_CONS_ENTRY ); + LOG_FUNC } void CDeviceProxy::ConstructL(RUsbHubDriver& aHubDriver) { - OstTraceFunctionEntry0( CDEVICEPROXY_CONSTRUCTL_ENTRY ); - - TInt err=iHandle.Open(aHubDriver, iId); - if (err<0) - { - OstTrace1( TRACE_NORMAL, CDEVICEPROXY_CONSTRUCTL, "handle open with error %d", err ); - User::Leave(err); - } + LOG_FUNC + + LEAVEIFERRORL(iHandle.Open(aHubDriver, iId)); // Pre-allocate objects relating to this device for the event queue. iAttachmentEvent = new(ELeave) TDeviceEvent; @@ -85,13 +79,12 @@ ReadStringDescriptorsL(); LOG; - OstTraceFunctionExit0( CDEVICEPROXY_CONSTRUCTL_EXIT ); } void CDeviceProxy::ReadStringDescriptorsL() { - OstTraceFunctionEntry0( CDEVICEPROXY_READSTRINGDESCRIPTORSL_ENTRY ); - + LOG_FUNC + // wait 10 ms before reading any string descriptors // to avoid IOP issues with some USB devices (e.g. PNY Attache) User::After(10000); @@ -108,16 +101,8 @@ // language IDs. TBuf8<256> stringBuf; TUsbStringDescriptor* stringDesc = NULL; - - if(!(iHandle.Handle())) - { - OstTrace0( TRACE_FATAL, CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP1, "Empty handler" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory, __LINE__)); - } - - TInt err=iHandle.GetStringDescriptor(stringDesc, stringBuf, 0); - LEAVEIFERRORL(err, OstTrace1( TRACE_ERROR, CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP6, - "iHandle.GetStringDescriptor error %d", err );); + ASSERT_DEBUG(iHandle.Handle()); + LEAVEIFERRORL(iHandle.GetStringDescriptor(stringDesc, stringBuf, 0)); CleanupStack::PushL(*stringDesc); // Copy the language IDs into our array. @@ -125,8 +110,7 @@ TInt16 langId = stringDesc->GetLangId(index); while ( langId != KErrNotFound ) { - OstTrace1( TRACE_NORMAL, CDEVICEPROXY_READSTRINGDESCRIPTORSL, "\tsupported language: 0x%04x", langId ); - + LOGTEXT2(_L8("\tsupported language: 0x%04x"), langId); iLangIds.AppendL(langId); // stored as TUint ++index; langId = stringDesc->GetLangId(index); @@ -136,38 +120,17 @@ // Get the actual strings for each supported language. TUsbDeviceDescriptor deviceDescriptor; - if(!(iHandle.Handle())) - { - OstTrace0( TRACE_FATAL, CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP2, "Empty handler" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory, __LINE__)); - } - - err=iHandle.GetDeviceDescriptor(deviceDescriptor); - LEAVEIFERRORL(err, OstTrace1( TRACE_ERROR, CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP7, - "iHandle.GetDeviceDescriptor error %d", err );); - + ASSERT_DEBUG(iHandle.Handle()); + LEAVEIFERRORL(iHandle.GetDeviceDescriptor(deviceDescriptor)); TUint8 manufacturerStringDescriptorIndex = deviceDescriptor.ManufacturerIndex(); TUint8 productStringDescriptorIndex = deviceDescriptor.ProductIndex(); TUint8 serialNumberStringDescriptorIndex = deviceDescriptor.SerialNumberIndex(); PopulateStringDescriptorsL(manufacturerStringDescriptorIndex, iManufacturerStrings); PopulateStringDescriptorsL(productStringDescriptorIndex, iProductStrings); PopulateStringDescriptorsL(serialNumberStringDescriptorIndex, iSerialNumberStrings); - if(!(iManufacturerStrings.Count() == iLangIds.Count())) - { - OstTrace0( TRACE_FATAL, CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP3, "iLangIds error" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory, __LINE__)); - } - if(!(iProductStrings.Count() == iLangIds.Count())) - { - OstTrace0( TRACE_FATAL, CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP4, "iLangIds error" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory, __LINE__)); - } - if(!(iSerialNumberStrings.Count() == iLangIds.Count())) - { - OstTrace0( TRACE_FATAL, CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP5, "iLangIds error" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory, __LINE__)); - } - OstTraceFunctionExit0( CDEVICEPROXY_READSTRINGDESCRIPTORSL_EXIT ); + ASSERT_DEBUG(iManufacturerStrings.Count() == iLangIds.Count()); + ASSERT_DEBUG(iProductStrings.Count() == iLangIds.Count()); + ASSERT_DEBUG(iSerialNumberStrings.Count() == iLangIds.Count()); } // Populates the given array with the supported language variants of the given @@ -176,8 +139,8 @@ // supported but serial number strings to *not* be.) void CDeviceProxy::PopulateStringDescriptorsL(TUint8 aStringDescriptorIndex, RArray& aStringArray) { - OstTraceFunctionEntry0( CDEVICEPROXY_POPULATESTRINGDESCRIPTORSL_ENTRY ); - + LOG_FUNC + const TUint langCount = iLangIds.Count(); for ( TUint ii = 0 ; ii < langCount ; ++ii ) { @@ -189,20 +152,17 @@ string = KNullDesC(); } else - { - LEAVEIFERRORL(err, OstTrace1( TRACE_NORMAL, CDEVICEPROXY_POPULATESTRINGDESCRIPTORSL, "err=%d", err );); + { + LEAVEIFERRORL(err); } - err=aStringArray.Append(string); - LEAVEIFERRORL(err, OstTrace0( TRACE_NORMAL, CDEVICEPROXY_POPULATESTRINGDESCRIPTORSL_DUP1, "aStringArray append error");); + LEAVEIFERRORL(aStringArray.Append(string)); } - OstTraceFunctionExit0( CDEVICEPROXY_POPULATESTRINGDESCRIPTORSL_EXIT ); } CDeviceProxy::~CDeviceProxy() { - OstTraceFunctionEntry0( CDEVICEPROXY_CDEVICEPROXY_DES_ENTRY ); - + LOG_FUNC LOG; // In the design, the event objects should all have had ownership taken @@ -222,95 +182,76 @@ iSerialNumberStrings.Reset(); iHandle.Close(); - OstTraceFunctionExit0( CDEVICEPROXY_CDEVICEPROXY_DES_EXIT ); } TInt CDeviceProxy::GetDeviceDescriptor(TUsbDeviceDescriptor& aDescriptor) { - OstTraceFunctionEntry0( CDEVICEPROXY_GETDEVICEDESCRIPTOR_ENTRY ); - if(!(iHandle.Handle())) - { - OstTrace0( TRACE_FATAL, CDEVICEPROXY_GETDEVICEDESCRIPTOR_DUP1, "Empty handler" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory, __LINE__)); - } + LOG_FUNC + + ASSERT_DEBUG(iHandle.Handle()); TInt err = iHandle.GetDeviceDescriptor(aDescriptor); - OstTrace1( TRACE_NORMAL, CDEVICEPROXY_GETDEVICEDESCRIPTOR, "\terr = %d", err ); - - OstTraceFunctionExit0( CDEVICEPROXY_GETDEVICEDESCRIPTOR_EXIT ); + LOGTEXT2(_L8("\terr = %d"), err); return err; } TInt CDeviceProxy::GetConfigurationDescriptor(TUsbConfigurationDescriptor& aDescriptor) const { - OstTraceFunctionEntry0( CDEVICEPROXY_GETCONFIGURATIONDESCRIPTOR_ENTRY ); - if(!(iHandle.Handle())) - { - OstTrace0( TRACE_FATAL, CDEVICEPROXY_GETCONFIGURATIONDESCRIPTOR, "Empty handler" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory, __LINE__)); - } + LOG_FUNC + + ASSERT_DEBUG(iHandle.Handle()); TInt err = const_cast(iHandle).GetConfigurationDescriptor(aDescriptor); - OstTrace1( TRACE_NORMAL, CDEVICEPROXY_GETCONFIGURATIONDESCRIPTOR_DUP1, "\terr = %d", err ); - - OstTraceFunctionExit0( CDEVICEPROXY_GETCONFIGURATIONDESCRIPTOR_EXIT ); + LOGTEXT2(_L8("\terr = %d"), err); return err; } TInt CDeviceProxy::GetTokenForInterface(TUint aIndex, TUint32& aToken) const { - OstTraceFunctionEntry0( CDEVICEPROXY_GETTOKENFORINTERFACE_ENTRY ); - if(!(iHandle.Handle())) - { - OstTrace0( TRACE_FATAL, CDEVICEPROXY_GETTOKENFORINTERFACE_DUP1, "Empty handler" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory, __LINE__)); - } - // We shouldn't need to worry about whether the device is suspended or + LOG_FUNC + + ASSERT_DEBUG(iHandle.Handle()); + // We shouldn't need to worry about whether the device is suspended or // resumed before doing this. This function is only called if we find FDs // for the device, in which case we wouldn't have suspended it in the // first place. TInt err = const_cast(iHandle).GetTokenForInterface(aIndex, aToken); - OstTrace1( TRACE_NORMAL, CDEVICEPROXY_GETTOKENFORINTERFACE, "\terr = %d", err ); - - OstTraceFunctionExit0( CDEVICEPROXY_GETTOKENFORINTERFACE_EXIT ); + LOGTEXT2(_L8("\terr = %d"), err); return err; } const RArray& CDeviceProxy::GetSupportedLanguages() const { - OstTraceFunctionEntry0( CDEVICEPROXY_GETSUPPORTEDLANGUAGES_ENTRY ); - + LOG_FUNC + return iLangIds; } void CDeviceProxy::GetManufacturerStringDescriptorL(TUint32 aLangId, TName& aString) const { - OstTraceFunctionEntry0( CDEVICEPROXY_GETMANUFACTURERSTRINGDESCRIPTORL_ENTRY ); - + LOG_FUNC + GetStringDescriptorFromCacheL(aLangId, aString, iManufacturerStrings); - OstTraceFunctionExit0( CDEVICEPROXY_GETMANUFACTURERSTRINGDESCRIPTORL_EXIT ); } void CDeviceProxy::GetProductStringDescriptorL(TUint32 aLangId, TName& aString) const { - OstTraceFunctionEntry0( CDEVICEPROXY_GETPRODUCTSTRINGDESCRIPTORL_ENTRY ); - + LOG_FUNC + GetStringDescriptorFromCacheL(aLangId, aString, iProductStrings); - OstTraceFunctionExit0( CDEVICEPROXY_GETPRODUCTSTRINGDESCRIPTORL_EXIT ); } void CDeviceProxy::GetSerialNumberStringDescriptorL(TUint32 aLangId, TName& aString) const { - OstTraceFunctionEntry0( CDEVICEPROXY_GETSERIALNUMBERSTRINGDESCRIPTORL_ENTRY ); - + LOG_FUNC + GetStringDescriptorFromCacheL(aLangId, aString, iSerialNumberStrings); - OstTraceFunctionExit0( CDEVICEPROXY_GETSERIALNUMBERSTRINGDESCRIPTORL_EXIT ); } void CDeviceProxy::GetOtgDescriptorL(TOtgDescriptor& aDescriptor) const { - OstTraceFunctionEntry0( CDEVICEPROXY_GETOTGDESCRIPTORL_ENTRY ); + LOG_FUNC if (iOtgDescriptor) { @@ -318,10 +259,8 @@ } else { - OstTrace1( TRACE_NORMAL, CDEVICEPROXY_GETOTGDESCRIPTORL, "Error=%d", KErrNotSupported ); - User::Leave(KErrNotSupported); + LEAVEL(KErrNotSupported); } - OstTraceFunctionExit0( CDEVICEPROXY_GETOTGDESCRIPTORL_EXIT ); } void CDeviceProxy::SetOtgDescriptorL(const TUsbOTGDescriptor& aDescriptor) @@ -340,44 +279,31 @@ // Used during instantiation to read supported strings. void CDeviceProxy::GetStringDescriptorFromUsbdL(TUint32 aLangId, TName& aString, TUint8 aStringDescriptorIndex) const { - OstTraceFunctionEntry0( CDEVICEPROXY_GETSTRINGDESCRIPTORFROMUSBDL_ENTRY ); - - OstTraceExt2( TRACE_NORMAL, CDEVICEPROXY_GETSTRINGDESCRIPTORFROMUSBDL, "\taLangId = 0x%d, aStringDescriptorIndex = %d", aLangId, aStringDescriptorIndex ); - + LOG_FUNC + LOGTEXT3(_L8("\taLangId = 0x%04x, aStringDescriptorIndex = %d"), aLangId, aStringDescriptorIndex); + // If the string is not defined by the device, leave. if ( aStringDescriptorIndex == 0 ) { - OstTrace1( TRACE_NORMAL, CDEVICEPROXY_GETSTRINGDESCRIPTORFROMUSBDL_DUP1, "err=%d", KErrNotFound ); - User::Leave(KErrNotFound); + LEAVEL(KErrNotFound); } TBuf8<255> stringBuf; TUsbStringDescriptor* stringDesc = NULL; - if(!(iHandle.Handle())) - { - OstTrace0( TRACE_FATAL, CDEVICEPROXY_GETSTRINGDESCRIPTORFROMUSBDL_DUP2, "Empty handler" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory, __LINE__)); - } - TInt err=const_cast(iHandle).GetStringDescriptor(stringDesc, stringBuf, aStringDescriptorIndex, aLangId); - if(err<0) - { - OstTrace0( TRACE_NORMAL, CDEVICEPROXY_GETSTRINGDESCRIPTORFROMUSBDL_DUP4, "GetStringDescriptor error" ); - User::Leave(err); - } + ASSERT_DEBUG(iHandle.Handle()); + LEAVEIFERRORL(const_cast(iHandle).GetStringDescriptor(stringDesc, stringBuf, aStringDescriptorIndex, aLangId)); stringDesc->StringData(aString); stringDesc->DestroyTree(); delete stringDesc; - OstTraceExt1( TRACE_NORMAL, CDEVICEPROXY_GETSTRINGDESCRIPTORFROMUSBDL_DUP3, "\taString = \"%S\"", aString ); - OstTraceFunctionExit0( CDEVICEPROXY_GETSTRINGDESCRIPTORFROMUSBDL_EXIT ); + LOGTEXT2(_L("\taString = \"%S\""), &aString); } // Called indirectly by users of this class to query a string descriptor. void CDeviceProxy::GetStringDescriptorFromCacheL(TUint32 aLangId, TName& aString, const RArray& aStringArray) const { - OstTraceFunctionEntry0( CDEVICEPROXY_GETSTRINGDESCRIPTORFROMCACHEL_ENTRY ); - - OstTrace1( TRACE_NORMAL, CDEVICEPROXY_GETSTRINGDESCRIPTORFROMCACHEL_DUP1, "\taLangId = 0x%04x", aLangId ); - + LOG_FUNC + LOGTEXT2(_L8("\taLangId = 0x%04x"), aLangId); + // If the lang ID is not supported by the device, leave. At the same time // find the index of the required string in the given string array. const TUint langCount = iLangIds.Count(); @@ -391,29 +317,21 @@ } if ( index == langCount ) { - OstTrace0( TRACE_NORMAL, CDEVICEPROXY_GETSTRINGDESCRIPTORFROMCACHEL, "CDeviceProxy::GetStringDescriptorFromCacheL" ); - User::Leave(KErrNotFound); + LEAVEL(KErrNotFound); } aString = aStringArray[index]; - OstTraceExt1( TRACE_NORMAL, CDEVICEPROXY_GETSTRINGDESCRIPTORFROMCACHEL_DUP2, "\taString = \"%S\"", aString ); - - OstTraceFunctionExit0( CDEVICEPROXY_GETSTRINGDESCRIPTORFROMCACHEL_EXIT ); + LOGTEXT2(_L("\taString = \"%S\""), &aString); } TInt CDeviceProxy::Suspend() { - OstTraceFunctionEntry0( CDEVICEPROXY_SUSPEND_ENTRY ); - if(!(iHandle.Handle())) - { - OstTrace0( TRACE_FATAL, CDEVICEPROXY_SUSPEND_DUP1, "Empty handler" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory, __LINE__)); - } + LOG_FUNC + + ASSERT_DEBUG(iHandle.Handle()); TInt ret = iHandle.Suspend(); - OstTrace1( TRACE_NORMAL, CDEVICEPROXY_SUSPEND, "\tret = %d", ret ); - - OstTraceFunctionExit0( CDEVICEPROXY_SUSPEND_EXIT ); + LOGTEXT2(_L8("\tret = %d"), ret); return ret; } @@ -424,100 +342,73 @@ void CDeviceProxy::SetDriverLoadingEventData(TDriverLoadStatus aStatus, TInt aError) { - OstTraceFunctionEntry0( CDEVICEPROXY_SETDRIVERLOADINGEVENTDATA_ENTRY ); - - OstTraceExt2( TRACE_NORMAL, CDEVICEPROXY_SETDRIVERLOADINGEVENTDATA, "\taStatus = %d, aError = %d", aStatus, aError ); - if(!iDriverLoadingEvent) - { - OstTrace0( TRACE_FATAL, CDEVICEPROXY_SETDRIVERLOADINGEVENTDATA_DUP1, "Empty Driver Loading Event" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory, __LINE__)); - } - iDriverLoadingEvent->iInfo.iDriverLoadStatus = aStatus; + LOG_FUNC + LOGTEXT3(_L8("\taStatus = %d, aError = %d"), aStatus, aError); + + ASSERT_DEBUG(iDriverLoadingEvent); + iDriverLoadingEvent->iInfo.iDriverLoadStatus = aStatus; iDriverLoadingEvent->iInfo.iError = aError; LOG; - OstTraceFunctionExit0( CDEVICEPROXY_SETDRIVERLOADINGEVENTDATA_EXIT ); } TDeviceEvent* CDeviceProxy::GetAttachmentEventObject() { - OstTraceFunctionEntry0( CDEVICEPROXY_GETATTACHMENTEVENTOBJECT_ENTRY ); - - LOG; - if(!iAttachmentEvent) - { - OstTrace0( TRACE_FATAL, CDEVICEPROXY_GETATTACHMENTEVENTOBJECT_DUP1, "Empty Attechment Event" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory, __LINE__)); - } + LOG_FUNC + LOG; + ASSERT_DEBUG(iAttachmentEvent); TDeviceEvent* const obj = iAttachmentEvent; iAttachmentEvent = NULL; - OstTrace1( TRACE_NORMAL, CDEVICEPROXY_GETATTACHMENTEVENTOBJECT, "\tobj = 0x%08x", obj ); - - OstTraceFunctionExit0( CDEVICEPROXY_GETATTACHMENTEVENTOBJECT_EXIT ); + LOGTEXT2(_L8("\tobj = 0x%08x"), obj); return obj; } TDeviceEvent* CDeviceProxy::GetDriverLoadingEventObject() { - OstTraceFunctionEntry0( CDEVICEPROXY_GETDRIVERLOADINGEVENTOBJECT_ENTRY ); - - LOG; - if(!iDriverLoadingEvent) - { - OstTrace0( TRACE_FATAL, CDEVICEPROXY_GETDRIVERLOADINGEVENTOBJECT, "Empty Driver Loading Event" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory, __LINE__)); - } + LOG_FUNC + LOG; + ASSERT_DEBUG(iDriverLoadingEvent); TDeviceEvent* const obj = iDriverLoadingEvent; iDriverLoadingEvent = NULL; - OstTrace1( TRACE_NORMAL, CDEVICEPROXY_GETDRIVERLOADINGEVENTOBJECT_DUP1, "\tobj = 0x%08x", obj ); - - OstTraceFunctionExit0( CDEVICEPROXY_GETDRIVERLOADINGEVENTOBJECT_EXIT ); + LOGTEXT2(_L8("\tobj = 0x%08x"), obj); return obj; } TDeviceEvent* CDeviceProxy::GetDetachmentEventObject() { - OstTraceFunctionEntry0( CDEVICEPROXY_GETDETACHMENTEVENTOBJECT_ENTRY ); - LOG; + LOG_FUNC + LOG; - if(!iDetachmentEvent) - { - OstTrace0( TRACE_FATAL, CDEVICEPROXY_GETDETACHMENTEVENTOBJECT, "Empty Detachment Event" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory, __LINE__)); - } + ASSERT_DEBUG(iDetachmentEvent); TDeviceEvent* const obj = iDetachmentEvent; iDetachmentEvent = NULL; - - OstTrace1( TRACE_NORMAL, CDEVICEPROXY_GETDETACHMENTEVENTOBJECT_DUP1, "\tobj = 0x%08x", obj ); - - OstTraceFunctionExit0( CDEVICEPROXY_GETDETACHMENTEVENTOBJECT_EXIT ); + LOGTEXT2(_L8("\tobj = 0x%08x"), obj); return obj; } +#ifdef __FLOG_ACTIVE void CDeviceProxy::Log() { - OstTraceFunctionEntry0( CDEVICEPROXY_LOG_ENTRY ); - - OstTrace1( TRACE_DUMP, CDEVICEPROXY_LOG, "\tiId = %d", iId ); - OstTrace1( TRACE_DUMP, CDEVICEPROXY_LOG_DUP1, "\tiHandle.Handle() = %d", iHandle.Handle() ); - - if ( iAttachmentEvent ) + LOG_FUNC + + LOGTEXT2(_L8("\tiId = %d"), iId); + LOGTEXT2(_L8("\tiHandle.Handle() = %d"), iHandle.Handle()); + if ( iAttachmentEvent ) { - OstTrace0( TRACE_DUMP, CDEVICEPROXY_LOG_DUP2, "\tlogging iAttachmentEvent" ); - iAttachmentEvent->Log(); + LOGTEXT(_L8("\tlogging iAttachmentEvent")); + iAttachmentEvent->Log(); } if ( iDriverLoadingEvent ) { - OstTrace0( TRACE_DUMP, CDEVICEPROXY_LOG_DUP3, "\tlogging iDriverLoadingEvent" ); - + LOGTEXT(_L8("\tlogging iDriverLoadingEvent")); iDriverLoadingEvent->Log(); } if ( iDetachmentEvent ) { - OstTrace0( TRACE_DUMP, CDEVICEPROXY_LOG_DUP4, "\tlogging iDetachmentEvent" ); + LOGTEXT(_L8("\tlogging iDetachmentEvent")); iDetachmentEvent->Log(); } const TUint langCount = iLangIds.Count(); @@ -530,26 +421,24 @@ // This has been done to protect in case there have been an incomplete construction etc.. // when logging the data - OstTrace1( TRACE_DUMP, CDEVICEPROXY_LOG_DUP5, "C\tlangCount = %d", langCount ); - + LOGTEXT2(_L8("\tlangCount = %d"), langCount); for ( TUint ii = 0 ; ii < langCount ; ++ii ) { - OstTrace1( TRACE_FLOW, CDEVICEPROXY_LOG_DUP6, "\tlang ID 0x%04x:", iLangIds[ii] ); - + LOGTEXT2(_L("\tlang ID 0x%04x:"), iLangIds[ii]); if(ii -#include "event.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "eventTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "fdf "); #endif - TDeviceEvent::TDeviceEvent() { - OstTraceFunctionEntry0( TDEVICEEVENT_TDEVICEEVENT_CONS_ENTRY ); - } + LOG_FUNC + } TDeviceEvent::~TDeviceEvent() { - OstTraceFunctionEntry0( TDEVICEEVENT_TDEVICEEVENT_DES_ENTRY ); + LOG_FUNC } +#ifdef __FLOG_ACTIVE + void TDeviceEvent::Log() const { - OstTrace1( TRACE_DUMP, TDEVICEEVENT_LOG, "\tLogging event 0x%08x", this ); - OstTrace1( TRACE_DUMP, TDEVICEEVENT_LOG_DUP1, "\t\tdevice ID = %d", iInfo.iDeviceId ); - OstTrace1( TRACE_DUMP, TDEVICEEVENT_LOG_DUP2, "\t\tevent type = %d", iInfo.iEventType ); - + LOGTEXT2(_L8("\tLogging event 0x%08x"), this); + LOGTEXT2(_L8("\t\tdevice ID = %d"), iInfo.iDeviceId); + LOGTEXT2(_L8("\t\tevent type = %d"), iInfo.iEventType); + switch ( iInfo.iEventType ) { case EDeviceAttachment: - OstTrace1( TRACE_DUMP, TDEVICEEVENT_LOG_DUP3, "\t\terror = %d", iInfo.iError ); - - if ( !iInfo.iError ) + LOGTEXT2(_L8("\t\terror = %d"), iInfo.iError); + if ( !iInfo.iError ) { - OstTrace1( TRACE_DUMP, TDEVICEEVENT_LOG_DUP4, "\t\tVID = 0x%04x", iInfo.iVid ); - OstTrace1( TRACE_DUMP, TDEVICEEVENT_LOG_DUP5, "\t\tPID = 0x%04x", iInfo.iPid ); + LOGTEXT2(_L8("\t\tVID = 0x%04x"), iInfo.iVid); + LOGTEXT2(_L8("\t\tPID = 0x%04x"), iInfo.iPid); } break; case EDriverLoad: - OstTrace1( TRACE_DUMP, TDEVICEEVENT_LOG_DUP6, "\t\terror = %d", iInfo.iError ); - OstTrace1( TRACE_DUMP, TDEVICEEVENT_LOG_DUP7, "\t\t\tdriver load status = %d", iInfo.iDriverLoadStatus); - + LOGTEXT2(_L8("\t\terror = %d"), iInfo.iError); + LOGTEXT2(_L8("\t\t\tdriver load status = %d"), iInfo.iDriverLoadStatus); break; case EDeviceDetachment: // No break deliberate. @@ -63,3 +62,4 @@ } } +#endif // __FLOG_ACTIVE diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/src/eventqueue.cpp --- a/usbmgmt/usbmgr/host/fdf/production/server/src/eventqueue.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/src/eventqueue.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -15,33 +15,33 @@ * */ +#include "eventqueue.h" #include -#include "eventqueue.h" #include "fdf.h" #include "fdfsession.h" #include "utils.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "eventqueueTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "fdf "); #endif -#ifdef _DEBUG +#ifdef __FLOG_ACTIVE #define LOG Log() -_LIT(KPanicCategory, "eventqueue"); #else #define LOG #endif - +#ifdef _DEBUG +PANICCATEGORY("eventq"); +#endif class CFdfSession; CEventQueue* CEventQueue::NewL(CFdf& aFdf) { - OstTraceFunctionEntry0( CEVENTQUEUE_NEWL_ENTRY ); - + LOG_STATIC_FUNC_ENTRY + CEventQueue* self = new(ELeave) CEventQueue(aFdf); - OstTraceFunctionExit0( CEVENTQUEUE_NEWL_EXIT ); return self; } @@ -49,12 +49,12 @@ : iFdf(aFdf), iDeviceEvents(_FOFF(TDeviceEvent, iLink)) { - OstTraceFunctionEntry0( CEVENTQUEUE_CEVENTQUEUE_CONS_ENTRY ); + LOG_FUNC } CEventQueue::~CEventQueue() { - OstTraceFunctionEntry0( CEVENTQUEUE_CEVENTQUEUE_DES_ENTRY ); + LOG_FUNC // There will be things left on the queue at this time if USBMAN shuts us // down without having picked up everything that was on the queue. @@ -66,16 +66,14 @@ { delete event; } - OstTraceFunctionExit0( CEVENTQUEUE_CEVENTQUEUE_DES_EXIT ); } // Increments the count of failed attachments. void CEventQueue::AttachmentFailure(TInt aError) { - OstTraceFunctionEntry0( CEVENTQUEUE_ATTACHMENTFAILURE_ENTRY ); - OstTrace1( TRACE_NORMAL, CEVENTQUEUE_ATTACHMENTFAILURE, "\taError = %d", aError ); - - LOG; + LOG_FUNC + LOGTEXT2(_L8("\taError = %d"), aError); + LOG; TUint index = 0; switch ( aError ) @@ -116,8 +114,7 @@ default: // we must deal with every error we are ever given - OstTrace1( TRACE_NORMAL, CEVENTQUEUE_ATTACHMENTFAILURE_DUP1, "\tFDF did not expect this error %d as a fail attachment", aError ); - + LOGTEXT2(_L8("\tFDF did not expect this error %d as a fail attachment"), aError); index = KAttachmentFailureGeneralError; break; } @@ -125,23 +122,20 @@ PokeSession(); LOG; - OstTraceFunctionExit0( CEVENTQUEUE_ATTACHMENTFAILURE_EXIT ); } // Called to add an event to the tail of the queue. // Takes ownership of aEvent. void CEventQueue::AddDeviceEvent(TDeviceEvent& aEvent) { - OstTraceFunctionEntry0( CEVENTQUEUE_ADDDEVICEEVENT_ENTRY ); - - OstTrace1( TRACE_NORMAL, CEVENTQUEUE_ADDDEVICEEVENT, "\t&aEvent = 0x%08x", &aEvent ); + LOG_FUNC + LOGTEXT2(_L8("\t&aEvent = 0x%08x"), &aEvent); LOG; iDeviceEvents.AddLast(aEvent); PokeSession(); LOG; - OstTraceFunctionExit0( CEVENTQUEUE_ADDDEVICEEVENT_EXIT ); } // Poke the session object (if it exists) to complete any outstanding event @@ -149,7 +143,8 @@ // It only makes sense to call this function if there's some event to give up. void CEventQueue::PokeSession() { - OstTraceFunctionEntry0( CEVENTQUEUE_POKESESSION_ENTRY ); + LOG_FUNC + // If the session exists, and has a notification outstanding, give them // the head event. CFdfSession* sess = iFdf.Session(); @@ -172,7 +167,6 @@ } } } - OstTraceFunctionExit0( CEVENTQUEUE_POKESESSION_EXIT ); } // This is called to get a device event. Attachment failures are given up @@ -181,7 +175,7 @@ // in aEvent. TBool CEventQueue::GetDeviceEvent(TDeviceEvent& aEvent) { - OstTraceFunctionEntry0( CEVENTQUEUE_GETDEVICEEVENT_ENTRY ); + LOG_FUNC LOG; TBool ret = EFalse; @@ -236,13 +230,13 @@ case KNumberOfAttachmentFailureTypes: default: // this switch should deal with every error type we store - OstTrace0( TRACE_FATAL, CEVENTQUEUE_GETDEVICEEVENT, "Empty handler" ); - __ASSERT_DEBUG(EFalse, User::Panic(KPanicCategory,__LINE__)); + ASSERT_DEBUG(0); + } ret = ETrue; aEvent.iInfo.iEventType = EDeviceAttachment; - OstTrace1( TRACE_NORMAL, CEVENTQUEUE_GETDEVICEEVENT_DUP1, "\treturning attachment failure event (code %d)", aEvent.iInfo.iError ); + LOGTEXT2(_L8("\treturning attachment failure event (code %d)"), aEvent.iInfo.iError); // Only give the client one error at a time. break; } @@ -251,7 +245,7 @@ if ( !ret && !iDeviceEvents.IsEmpty() ) { TDeviceEvent* const event = iDeviceEvents.First(); - OstTrace1( TRACE_NORMAL, CEVENTQUEUE_GETDEVICEEVENT_DUP2, "\tevent = 0x%08x", event ); + LOGTEXT2(_L8("\tevent = 0x%08x"), event); iDeviceEvents.Remove(*event); (void)Mem::Copy(&aEvent, event, sizeof(TDeviceEvent)); delete event; @@ -259,15 +253,14 @@ } LOG; - OstTrace1( TRACE_NORMAL, CEVENTQUEUE_GETDEVICEEVENT_DUP3, "\treturning %d", ret ); - OstTraceFunctionExit0( CEVENTQUEUE_GETDEVICEEVENT_EXIT ); + LOGTEXT2(_L8("\treturning %d"), ret); return ret; } TBool CEventQueue::GetDevmonEvent(TInt& aEvent) { - OstTraceFunctionEntry0( CEVENTQUEUE_GETDEVMONEVENT_ENTRY ); - LOG; + LOG_FUNC + LOG; TBool ret = EFalse; @@ -301,8 +294,8 @@ case KNumberOfDevmonEventTypes: default: - OstTrace1( TRACE_FATAL, CEVENTQUEUE_GETDEVMONEVENT, "\tUnexpected devmon error, not handled properly %d", ii ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); + LOGTEXT2(_L8("\tUnexpected devmon error, not handled properly %d"), ii); + ASSERT_DEBUG(0); aEvent = KErrUsbDeviceRejected; // this switch should deal with every error type we store } @@ -314,17 +307,16 @@ } LOG; - OstTrace1( TRACE_NORMAL, CEVENTQUEUE_GETDEVMONEVENT_DUP1, "\treturning %d", ret ); - OstTraceFunctionExit0( CEVENTQUEUE_GETDEVMONEVENT_EXIT ); + LOGTEXT2(_L8("\treturning %d"), ret); return ret; } void CEventQueue::AddDevmonEvent(TInt aEvent) { - OstTraceFunctionEntry0( CEVENTQUEUE_ADDDEVMONEVENT_ENTRY ); - OstTrace1( TRACE_NORMAL, CEVENTQUEUE_ADDDEVMONEVENT, "\taEvent = %d", aEvent ); - - // Increment the relevant count. + LOG_FUNC + LOGTEXT2(_L8("\taEvent = %d"), aEvent); + + // Increment the relevant count. TInt index = 0; switch ( aEvent ) { @@ -349,35 +341,30 @@ break; default: - - OstTrace1( TRACE_FATAL, CEVENTQUEUE_ADDDEVMONEVENT_DUP1, "Unexpected devmon error, not handled properly %d", aEvent ); - // this switch should deal with every type of event we ever receive from devmon - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + LOGTEXT2(_L8("\tUnexpected devmon error, not handled properly %d"), aEvent); + ASSERT_DEBUG(0); + // this switch should deal with every type of event we ever receive from devmon + } TUint& eventCount = iDevmonEventCount[index]; - if(!(eventCount < KMaxTUint)) - { - OstTrace1( TRACE_FATAL, CEVENTQUEUE_ADDDEVMONEVENT_DUP2, "eventCount is too big;eventCount=%d", eventCount ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(eventCount < KMaxTUint); ++eventCount; PokeSession(); - OstTraceFunctionExit0( CEVENTQUEUE_ADDDEVMONEVENT_EXIT ); } -#ifdef _DEBUG +#ifdef __FLOG_ACTIVE + void CEventQueue::Log() { - OstTraceFunctionEntry0( CEVENTQUEUE_LOG_ENTRY ); + LOG_FUNC for ( TUint ii = 0 ; ii < KNumberOfAttachmentFailureTypes ; ++ii ) { const TInt& errorCount = iAttachmentFailureCount[ii]; if ( errorCount ) { - OstTraceExt2( TRACE_DUMP, CEVENTQUEUE_LOG, "Number of attachment failures of type %d is %d", ii, errorCount ); - } + LOGTEXT3(_L8("\tNumber of attachment failures of type %d is %d"), ii, errorCount); + } } for ( TUint ii = 0 ; ii < KNumberOfDevmonEventTypes ; ++ii ) @@ -385,7 +372,7 @@ const TInt& eventCount = iDevmonEventCount[ii]; if ( eventCount ) { - OstTraceExt2( TRACE_DUMP, CEVENTQUEUE_LOG_DUP1, "Number of devmon events of type %d is %d", ii, eventCount ); + LOGTEXT3(_L8("\tNumber of devmon events of type %d is %d"), ii, eventCount); } } @@ -395,12 +382,11 @@ TDeviceEvent* event; while ( ( event = iter++ ) != NULL ) { - OstTrace1( TRACE_DUMP, DUP1_CEVENTQUEUE_LOG_DUP2, "Logging event at position %d", pos ); - - event->Log(); + LOGTEXT2(_L8("\tLogging event at position %d"), pos); + event->Log(); ++pos; } - OstTraceFunctionExit0( CEVENTQUEUE_LOG_EXIT ); } -#endif +#endif // __FLOG_ACTIVE + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/src/fdcproxy.cpp --- a/usbmgmt/usbmgr/host/fdf/production/server/src/fdcproxy.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/src/fdcproxy.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -19,63 +19,65 @@ @file @internalComponent */ + +#include "fdcproxy.h" #include +#include "utils.h" #include #include - -#include "fdcproxy.h" -#include "utils.h" #include "fdf.h" #include "utils.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "fdcproxyTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "fdf "); #endif +#ifdef __FLOG_ACTIVE +#define LOG Log() +#else +#define LOG +#endif #ifdef _DEBUG -#define LOG Log() #define INVARIANT Invariant() -#else -#define LOG +#else #define INVARIANT #endif -_LIT(KPanicCategory, "fdcproxy"); +PANICCATEGORY("fdcproxy"); + + CFdcProxy* CFdcProxy::NewL(CFdf& aFdf, CImplementationInformation& aImplInfo) { - OstTraceFunctionEntry0( CFDCPROXY_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY CFdcProxy* self = new(ELeave) CFdcProxy(aFdf); CleanupStack::PushL(self); self->ConstructL(aImplInfo); -#ifdef _DEBUG +#ifdef __FLOG_ACTIVE self->INVARIANT; #endif CleanupStack::Pop(self); - OstTraceFunctionExit0( CFDCPROXY_NEWL_EXIT ); return self; } void CFdcProxy::ConstructL(CImplementationInformation& aImplInfo) { - OstTraceFunctionEntry0( CFDCPROXY_CONSTRUCTL_ENTRY ); - - OstTrace1( TRACE_DUMP, CFDCPROXY_CONSTRUCTL, "FDC implementation UID: 0x%08x", aImplInfo.ImplementationUid().iUid ); - OstTraceExt1( TRACE_DUMP, CFDCPROXY_CONSTRUCTL_DUP1, "FDC display name: \"%S\"", aImplInfo.DisplayName() ); - OstTraceExt1( TRACE_DUMP, CFDCPROXY_CONSTRUCTL_DUP2, "FDC default_data: \"%s\"", aImplInfo.DataType() ); - OstTrace1( TRACE_DUMP, CFDCPROXY_CONSTRUCTL_DUP3, "FDC version: %d", aImplInfo.Version() ); - OstTrace1( TRACE_DUMP, CFDCPROXY_CONSTRUCTL_DUP4, "FDC disabled: %d", aImplInfo.Disabled()); - TDriveName drvName = aImplInfo.Drive().Name(); - - OstTraceExt1( TRACE_DUMP, CFDCPROXY_CONSTRUCTL_DUP5, "FDC drive: %S", drvName ); - OstTrace1( TRACE_DUMP, CFDCPROXY_CONSTRUCTL_DUP6, "FDC rom only: %d", aImplInfo.RomOnly() ); - OstTrace1( TRACE_DUMP, CFDCPROXY_CONSTRUCTL_DUP7, "FDC rom based: %d", aImplInfo.RomBased() ); - OstTrace1( TRACE_DUMP, CFDCPROXY_CONSTRUCTL_DUP8, "FDC vendor ID: %08x", (TUint32)aImplInfo.VendorId() ); - - + LOG_FUNC + + LOGTEXT2(_L8("\t\tFDC implementation UID: 0x%08x"), aImplInfo.ImplementationUid()); + LOGTEXT2(_L("\t\tFDC display name: \"%S\""), &aImplInfo.DisplayName()); + LOGTEXT2(_L8("\t\tFDC default_data: \"%S\""), &aImplInfo.DataType()); + LOGTEXT2(_L8("\t\tFDC version: %d"), aImplInfo.Version()); + LOGTEXT2(_L8("\t\tFDC disabled: %d"), aImplInfo.Disabled()); + TDriveName drvName = aImplInfo.Drive().Name(); + LOGTEXT2(_L8("\t\tFDC drive: %S"), &drvName); + LOGTEXT2(_L8("\t\tFDC rom only: %d"), aImplInfo.RomOnly()); + LOGTEXT2(_L8("\t\tFDC rom based: %d"), aImplInfo.RomBased()); + LOGTEXT2(_L8("\t\tFDC vendor ID: %08x"), (TUint32)aImplInfo.VendorId()); + // Before PREQ2080 a reference to the CImplementationInformation object was held. This is no longer // possible because as soon as REComSession::ListImplementations() is called the reference will be // invalid. @@ -83,21 +85,20 @@ iVersion = aImplInfo.Version(); iDefaultData.CreateL(aImplInfo.DataType()); iRomBased = aImplInfo.RomBased(); - OstTraceFunctionExit0( CFDCPROXY_CONSTRUCTL_EXIT ); } CFdcProxy::CFdcProxy(CFdf& aFdf) : iFdf(aFdf), i0thInterface(-1) // -1 means unassigned { - OstTraceFunctionEntry0( CFDCPROXY_CFDCPROXY_CONS_ENTRY ); + LOG_FUNC } CFdcProxy::~CFdcProxy() { - OstTraceFunctionEntry0( CFDCPROXY_CFDCPROXY_DES_ENTRY ); - INVARIANT; + LOG_FUNC + INVARIANT; // Only executed when the FDF is finally shutting down. // By this time detachment of all devices should have been signalled to @@ -105,22 +106,12 @@ // If is safe to assert this because iPlugin and iDeviceIds are not // allocated on construction so this doesn't have to safe against partial // construction. - - if(iPlugin) - { - OstTrace0( TRACE_FATAL, CFDCPROXY_CFDCPROXY_DUP2, "Plugin should empty" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - if(!(iDeviceIds.Count() == 0)) - { - OstTrace0( TRACE_FATAL, CFDCPROXY_CFDCPROXY_DUP3, "DeviceCount should be 0" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - iDeviceIds.Close(); + ASSERT_DEBUG(!iPlugin); + ASSERT_DEBUG(iDeviceIds.Count() == 0); + iDeviceIds.Close(); iDefaultData.Close(); INVARIANT; - OstTraceFunctionExit0( CFDCPROXY_CFDCPROXY_DES_EXIT ); } @@ -129,17 +120,15 @@ const TUsbDeviceDescriptor& aDeviceDescriptor, const TUsbConfigurationDescriptor& aConfigurationDescriptor) { - OstTraceFunctionEntry0( CFDCPROXY_NEWFUNCTION_ENTRY ); - - OstTrace1( TRACE_NORMAL, CFDCPROXY_NEWFUNCTION, "aDeviceId = %d", aDeviceId ); + LOG_FUNC + LOGTEXT2(_L8("\taDeviceId = %d"), aDeviceId); INVARIANT; // Create a plugin object if required, call Mfi1NewFunction on it, and // update our iDeviceIds. TRAPD(err, NewFunctionL(aDeviceId, aInterfaces, aDeviceDescriptor, aConfigurationDescriptor)); INVARIANT; - OstTrace1( TRACE_NORMAL, CFDCPROXY_NEWFUNCTION_DUP1, "err = %d", err ); - OstTraceFunctionExit0( CFDCPROXY_NEWFUNCTION_EXIT ); + LOGTEXT2(_L8("\terr = %d"), err); return err; } @@ -149,7 +138,7 @@ const TUsbDeviceDescriptor& aDeviceDescriptor, const TUsbConfigurationDescriptor& aConfigurationDescriptor) { - OstTraceFunctionEntry0( CFDCPROXY_NEWFUNCTIONL_ENTRY ); + LOG_FUNC // We may already have aDeviceId in our collection of device IDs, if the // device is offering multiple Functions of the same type. In this case we @@ -170,9 +159,8 @@ break; } } - - OstTrace1( TRACE_NORMAL, CFDCPROXY_NEWFUNCTIONL, "alreadyKnowThisDevice = %d", alreadyKnowThisDevice ); - + LOGTEXT2(_L8("\talreadyKnowThisDevice = %d"), alreadyKnowThisDevice); + TArrayRemove arrayRemove(iDeviceIds, aDeviceId); if ( !alreadyKnowThisDevice ) { @@ -180,9 +168,7 @@ // Logically, it should be done *after* we call Mfi1NewFunction on the // plugin, but we can't have the failable step of adding the device ID // to the array after telling the FDC. - TInt error=iDeviceIds.Append(aDeviceId); - LEAVEIFERRORL(error,OstTrace0( TRACE_NORMAL, CFDCPROXY_NEWFUNCTIONL_DUT1, "iDeviceIds append fails" );); - + LEAVEIFERRORL(iDeviceIds.Append(aDeviceId)); // This cleanup item removes aDeviceId from iDeviceIds on a leave. CleanupRemovePushL(arrayRemove); } @@ -193,75 +179,53 @@ if ( !plugin ) { neededToMakePlugin = ETrue; - OstTrace1( TRACE_NORMAL, CFDCPROXY_NEWFUNCTIONL_DUP2, "FDC implementation UID: 0x%08x", iImplementationUid.iUid ); + LOGTEXT2(_L8("\t\tFDC implementation UID: 0x%08x"), iImplementationUid); plugin = CFdcPlugin::NewL(iImplementationUid, *this); CleanupStack::PushL(plugin); iface = reinterpret_cast(plugin->GetInterface(TUid::Uid(KFdcInterfaceV1))); } - - if(!iface) - { - OstTrace0( TRACE_FATAL, CFDCPROXY_NEWFUNCTIONL_DUP3, "Empty interface" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - - + ASSERT_DEBUG(iface); TInt err = KErrNone; // Log the interfaces they're being offered. +#ifdef __FLOG_ACTIVE const TUint ifCount = aInterfaces.Count(); - OstTrace1( TRACE_NORMAL, CFDCPROXY_NEWFUNCTIONL_DUP4, "offering %d interfaces:", ifCount ); + LOGTEXT2(_L8("\toffering %d interfaces:"), ifCount); for ( TUint ii = 0 ; ii < ifCount ; ++ii ) { - OstTrace1( TRACE_NORMAL, CFDCPROXY_NEWFUNCTIONL_DUP5, "interface %d", aInterfaces[ii] ); + LOGTEXT2(_L8("\t\tinterface %d"), aInterfaces[ii]); } +#endif iInMfi1NewFunction = ETrue; // Check that the FDC always claims the 0th interface. - if(!(i0thInterface == -1)) - { - OstTrace0( TRACE_FATAL, CFDCPROXY_NEWFUNCTIONL_DUP6, "the FDC not claims the 0th interface" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - + ASSERT_DEBUG(i0thInterface == -1); i0thInterface = aInterfaces[0]; err = iface->Mfi1NewFunction( aDeviceId, aInterfaces.Array(), // actually pass them a TArray for const access aDeviceDescriptor, aConfigurationDescriptor); - OstTrace1( TRACE_NORMAL, CFDCPROXY_NEWFUNCTIONL_DUP11, "err = %d", err); + LOGTEXT2(_L8("\terr = %d"), err); iInMfi1NewFunction = EFalse; // The implementation of Mfi1NewFunction may not leave. // ASSERT_ALWAYS(leave_err == KErrNone); // This is set back to -1 when the FDC claims the 0th interface. - if(!(i0thInterface == -1)) - { - OstTrace0( TRACE_FATAL, CFDCPROXY_NEWFUNCTIONL_DUP7, "the FDC not claims the 0th interface" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - + ASSERT_DEBUG(i0thInterface == -1); + // If this leaves, then: // (a) aDeviceId will be removed from iDeviceIds (if we needed to add it). // (b) the FDF will get the leave code. // If this doesn't leave, then iPlugin, iInterface and iDeviceIds are // populated OK and the FDF will get KErrNone. - LEAVEIFERRORL(err,OstTrace0( TRACE_NORMAL, CFDCPROXY_NEWFUNCTIONL_DUP8,"iface->Mfi1NewFunction function fails");); + LEAVEIFERRORL(err); if ( neededToMakePlugin ) { CLEANUPSTACK_POP1(plugin); // Now everything failable has been done we can assign iPlugin and // iInterface. - if(!plugin) - { - OstTrace0( TRACE_FATAL, CFDCPROXY_NEWFUNCTIONL_DUP9,"Empty plugin"); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - if(!iface) - { - OstTrace0( TRACE_FATAL, CFDCPROXY_NEWFUNCTIONL_DUP10,"Empty iface"); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(plugin); + ASSERT_DEBUG(iface); iPlugin = plugin; iInterface = iface; } @@ -269,7 +233,6 @@ { CLEANUPSTACK_POP1(&arrayRemove); } - OstTraceFunctionExit0( CFDCPROXY_NEWFUNCTIONL_EXIT ); } @@ -278,9 +241,8 @@ // detachment to the plugin. void CFdcProxy::DeviceDetached(TUint aDeviceId) { - OstTraceFunctionEntry0( CFDCPROXY_DEVICEDETACHED_ENTRY ); - OstTrace1( TRACE_NORMAL, CFDCPROXY_DEVICEDETACHED, "aDeviceId = %d", aDeviceId ); - + LOG_FUNC + LOGTEXT2(_L8("\taDeviceId = %d"), aDeviceId); INVARIANT; const TUint count = iDeviceIds.Count(); @@ -288,13 +250,8 @@ { if ( iDeviceIds[ii] == aDeviceId ) { - OstTrace0( TRACE_FATAL, CFDCPROXY_DEVICEDETACHED_DUP1, "matching device id- calling Mfi1DeviceDetached!"); - if(!iInterface) - { - OstTrace0( TRACE_NORMAL, CFDCPROXY_DEVICEDETACHED_DUP2, "Empty iInterface" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - + LOGTEXT(_L8("\tmatching device id- calling Mfi1DeviceDetached!")); + ASSERT_DEBUG(iInterface); iInterface->Mfi1DeviceDetached(aDeviceId); // The implementation of Mfi1DeviceDetached may not leave. // ASSERT_ALWAYS(err == KErrNone); @@ -302,8 +259,8 @@ break; } } - OstTrace1( TRACE_NORMAL, CFDCPROXY_DEVICEDETACHED_DUP3, "iDeviceIds.Count() = %d", iDeviceIds.Count() ); - + + LOGTEXT2(_L8("\tiDeviceIds.Count() = %d"), iDeviceIds.Count()); if ( iDeviceIds.Count() == 0 ) { delete iPlugin; @@ -318,10 +275,10 @@ } INVARIANT; - OstTraceFunctionExit0( CFDCPROXY_DEVICEDETACHED_EXIT ); } +#ifdef _DEBUG void CFdcProxy::Invariant() const { // If the class invariant fails hopefully it will be clear why from @@ -331,7 +288,7 @@ // Either these are all 0 or none of them are: // iDeviceIds.Count, iPlugin, iInterface - if(!( + ASSERT_DEBUG( ( iDeviceIds.Count() != 0 && iPlugin && iInterface ) @@ -339,12 +296,7 @@ ( iDeviceIds.Count() == 0 && !iPlugin && !iInterface ) - )) - { - OstTrace0( TRACE_FATAL, CFDCPROXY_INVARIANT, "iDeviceIds count error" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - + ); // Each device ID appears only once in the device ID array. const TUint count = iDeviceIds.Count(); @@ -352,12 +304,7 @@ { for ( TUint jj = ii+1 ; jj < count ; ++jj ) { - if(!(iDeviceIds[ii] != iDeviceIds[jj])) - { - OstTrace0( TRACE_FATAL, CFDCPROXY_INVARIANT_DUP1, "Repeated iDeviceIDs" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - + ASSERT_DEBUG(iDeviceIds[ii] != iDeviceIds[jj]); } } } @@ -365,17 +312,17 @@ void CFdcProxy::Log() const { - OstTrace1( TRACE_DUMP, CFDCPROXY_LOG, "Logging CFdcProxy 0x%08x:", this ); + LOGTEXT2(_L8("\tLogging CFdcProxy 0x%08x:"), this); const TUint count = iDeviceIds.Count(); - OstTrace1( TRACE_DUMP, CFDCPROXY_LOG_DUP1, "iDeviceIds.Count() = %d", count ); - + LOGTEXT2(_L8("\t\tiDeviceIds.Count() = %d"), count); for ( TUint i = 0 ; i < count ; ++i ) { - OstTraceExt2( TRACE_DUMP, CFDCPROXY_LOG_DUP2, "iDeviceIds[%u] = %u", i, iDeviceIds[i] ); + LOGTEXT3(_L8("\t\t\tiDeviceIds[%d] = %d"), i, iDeviceIds[i]); } - OstTrace1( TRACE_DUMP, CFDCPROXY_LOG_DUP3, "iPlugin = 0x%08x", iPlugin ); - OstTrace1( TRACE_DUMP, CFDCPROXY_LOG_DUP4, "iInterface = 0x%08x", iInterface ); + LOGTEXT2(_L8("\t\tiPlugin = 0x%08x"), iPlugin); + LOGTEXT2(_L8("\t\tiInterface = 0x%08x"), iInterface); } +#endif // _DEBUG const TDesC8& CFdcProxy::DefaultDataField() const @@ -437,16 +384,11 @@ TUint32 CFdcProxy::MfpoTokenForInterface(TUint8 aInterface) { - OstTraceFunctionEntry0( CFDCPROXY_MFPOTOKENFORINTERFACE_ENTRY ); + LOG_FUNC // This function must only be called from an implementation of // Mfi1NewInterface. - if(!iInMfi1NewFunction) - { - OstTrace0( TRACE_FATAL, CFDCPROXY_MFPOTOKENFORINTERFACE, "Empty iInMfi1NewFunction" ); - User::Panic(KPanicCategory,__LINE__); - } - + ASSERT_ALWAYS(iInMfi1NewFunction); // Support our check that the FDC claims the 0th interface. if ( aInterface == i0thInterface ) { @@ -459,8 +401,8 @@ const RArray& CFdcProxy::MfpoGetSupportedLanguagesL(TUint aDeviceId) { - OstTraceFunctionEntry0( CFDCPROXY_MFPOGETSUPPORTEDLANGUAGESL_ENTRY ); - + LOG_FUNC + CheckDeviceIdL(aDeviceId); return iFdf.GetSupportedLanguagesL(aDeviceId); @@ -469,61 +411,60 @@ TInt CFdcProxy::MfpoGetManufacturerStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString) { - OstTraceFunctionEntry0( CFDCPROXY_MFPOGETMANUFACTURERSTRINGDESCRIPTOR_ENTRY ); + LOG_FUNC TRAPD(err, CheckDeviceIdL(aDeviceId); iFdf.GetManufacturerStringDescriptorL(aDeviceId, aLangId, aString) ); +#ifdef __FLOG_ACTIVE if ( !err ) { - OstTraceExt1( TRACE_NORMAL, CFDCPROXY_MFPOGETMANUFACTURERSTRINGDESCRIPTOR, "aString = \"%S\"", aString ); - } - - OstTrace1( TRACE_NORMAL, CFDCPROXY_MFPOGETMANUFACTURERSTRINGDESCRIPTOR_DUP1, "err = %d", err ); - - OstTraceFunctionExit0( CFDCPROXY_MFPOGETMANUFACTURERSTRINGDESCRIPTOR_EXIT ); + LOGTEXT2(_L("\taString = \"%S\""), &aString); + } +#endif + LOGTEXT2(_L8("\terr = %d"), err); return err; } TInt CFdcProxy::MfpoGetProductStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString) { - OstTraceFunctionEntry0( CFDCPROXY_MFPOGETPRODUCTSTRINGDESCRIPTOR_ENTRY ); - + LOG_FUNC + TRAPD(err, CheckDeviceIdL(aDeviceId); iFdf.GetProductStringDescriptorL(aDeviceId, aLangId, aString) ); +#ifdef __FLOG_ACTIVE if ( !err ) { - OstTraceExt1( TRACE_NORMAL, CFDCPROXY_MFPOGETPRODUCTSTRINGDESCRIPTOR, "aString = \"%S\"", aString ); + LOGTEXT2(_L("\taString = \"%S\""), &aString); } - - OstTrace1( TRACE_NORMAL, CFDCPROXY_MFPOGETPRODUCTSTRINGDESCRIPTOR_DUP1, "err = %d", err ); - OstTraceFunctionExit0( CFDCPROXY_MFPOGETPRODUCTSTRINGDESCRIPTOR_EXIT ); +#endif + LOGTEXT2(_L8("\terr = %d"), err); return err; } TInt CFdcProxy::MfpoGetSerialNumberStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString) { - OstTraceFunctionEntry0( CFDCPROXY_MFPOGETSERIALNUMBERSTRINGDESCRIPTOR_ENTRY ); + LOG_FUNC TRAPD(err, CheckDeviceIdL(aDeviceId); iFdf.GetSerialNumberStringDescriptorL(aDeviceId, aLangId, aString) ); +#ifdef __FLOG_ACTIVE if ( !err ) { - OstTraceExt1( TRACE_NORMAL, CFDCPROXY_MFPOGETSERIALNUMBERSTRINGDESCRIPTOR, "aString = \"%S\"", aString ); - } - - OstTrace1( TRACE_NORMAL, CFDCPROXY_MFPOGETSERIALNUMBERSTRINGDESCRIPTOR_DUP1, "err = %d", err ); - OstTraceFunctionExit0( CFDCPROXY_MFPOGETSERIALNUMBERSTRINGDESCRIPTOR_EXIT ); + LOGTEXT2(_L("\taString = \"%S\""), &aString); + } +#endif + LOGTEXT2(_L8("\terr = %d"), err); return err; } @@ -534,9 +475,9 @@ */ void CFdcProxy::CheckDeviceIdL(TUint aDeviceId) const { - OstTraceFunctionEntry0( CFDCPROXY_CHECKDEVICEIDL_ENTRY ); - OstTrace1( TRACE_NORMAL, CFDCPROXY_CHECKDEVICEIDL, "aDeviceId = %d", aDeviceId ); - + LOG_FUNC + LOGTEXT2(_L8("\taDeviceId = %d"), aDeviceId); + TBool found = EFalse; const TUint count = iDeviceIds.Count(); for ( TUint i = 0 ; i < count ; ++i ) @@ -549,10 +490,8 @@ } if ( !found ) { - OstTrace1( TRACE_NORMAL, CFDCPROXY_CHECKDEVICEIDL_DUP1, "DeviceId=%d not found", aDeviceId); - User::Leave(KErrNotFound); + LEAVEL(KErrNotFound); } - OstTraceFunctionExit0( CFDCPROXY_CHECKDEVICEIDL_EXIT ); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/src/fdf.cpp --- a/usbmgmt/usbmgr/host/fdf/production/server/src/fdf.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/src/fdf.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -25,16 +25,15 @@ #include "utils.h" #include #include "eventqueue.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "fdfTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "fdf "); #endif - _LIT(KDriverUsbhubLddFileName,"usbhubdriver"); _LIT(KDriverUsbdiLddFileName,"usbdi"); -_LIT(KPanicCategory, "fdf"); +PANICCATEGORY("fdf"); const TUint KVendorSpecificDeviceClassValue = 0xFF; const TUint KVendorSpecificInterfaceClassValue = 0xFF; @@ -43,26 +42,24 @@ // Factory function for TInterfaceInfo objects. CFdf::TInterfaceInfo* CFdf::TInterfaceInfo::NewL(RPointerArray& aInterfaces) { - OstTraceFunctionEntry0( CFDF_TINTERFACEINFO_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY TInterfaceInfo* self = new(ELeave) TInterfaceInfo; CleanupStack::PushL(self); aInterfaces.AppendL(self); CLEANUPSTACK_POP1(self); - OstTraceFunctionExit0( CFDF_TINTERFACEINFO_NEWL_EXIT ); return self; } CFdf* CFdf::NewL() { - OstTraceFunctionEntry0( CFDF_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY CFdf* self = new(ELeave) CFdf; CleanupStack::PushL(self); self->ConstructL(); CLEANUPSTACK_POP1(self); - OstTraceFunctionExit0( CFDF_NEWL_EXIT ); return self; } @@ -70,30 +67,26 @@ : iDevices(_FOFF(CDeviceProxy, iLink)), iFunctionDrivers(_FOFF(CFdcProxy, iLink)) { - OstTraceFunctionEntry0( CFDF_CFDF_CONS_ENTRY ); + LOG_FUNC } void CFdf::ConstructL() { - OstTraceFunctionEntry0( CFDF_CONSTRUCTL_ENTRY ); - + LOG_FUNC + #ifndef __OVER_DUMMYUSBDI__ // If we're using the DummyUSBDI we don't need the real USBDI. TInt err = User::LoadLogicalDevice(KDriverUsbhubLddFileName); if ( err != KErrAlreadyExists ) { - LEAVEIFERRORL(err,OstTrace1( TRACE_NORMAL, CFDF_CONSTRUCTL, "Error when loading KDriverUsbhubLddFileName OVER DUMMYUSBDI; err=%d", err );); + LEAVEIFERRORL(err); } #endif // __OVER_DUMMYUSBDI__ - TInt errDr=iHubDriver.Open(); - LEAVEIFERRORL(errDr,OstTrace1( TRACE_NORMAL, CFDF_CONSTRUCTL_DUP1, "Error when open iHubDriver; errDr=%d", errDr );); + LEAVEIFERRORL(iHubDriver.Open()); #ifdef __OVER_DUMMYUSBDI__ - //LEAVEIFERRORL(iHubDriver.StartHost()); - TInt errHo=iHubDriver.StartHost(); - LEAVEIFERRORL(errHo,OstTrace1( TRACE_NORMAL, CFDF_CONSTRUCTL_DUP2, "Fail in iHubDriver.StartHost in dummy; errHo=%d", errHo );); - + LEAVEIFERRORL(iHubDriver.StartHost()); #endif iActiveWaitForBusEvent = CActiveWaitForBusEvent::NewL(iHubDriver, iBusEvent, *this); @@ -105,27 +98,24 @@ iActiveWaitForEComEvent->Wait(); iEventQueue = CEventQueue::NewL(*this); - OstTraceFunctionExit0( CFDF_CONSTRUCTL_EXIT ); } void CFdf::CreateFunctionDriverProxiesL() { - OstTraceFunctionEntry0( CFDF_CREATEFUNCTIONDRIVERPROXIESL_ENTRY ); + + LOG_FUNC REComSession::ListImplementationsL(TUid::Uid(KFdcEcomInterfaceUid), iImplInfoArray); const TUint count = iImplInfoArray.Count(); - OstTrace1( TRACE_NORMAL, CFDF_CREATEFUNCTIONDRIVERPROXIESL, "\tiImplInfoArray.Count() upon FDF creation = %d", count ); -#ifdef _DEBUG + LOGTEXT2(_L8("\tiImplInfoArray.Count() upon FDF creation = %d"), count); +#ifdef __FLOG_ACTIVE if ( count == 0 ) { - OstTrace0( TRACE_NORMAL, CFDF_CREATEFUNCTIONDRIVERPROXIESL_DUP1, "\tTHERE ARE NO FUNCTION DRIVERS PRESENT IN THE SYSTEM" ); - } + LOGTEXT(_L8("\tTHERE ARE NO FUNCTION DRIVERS PRESENT IN THE SYSTEM")); + } else { - for (TInt32 kk = 0; kk < count; ++kk) - OstTraceExt2( TRACE_NORMAL, CFDF_CREATEFUNCTIONDRIVERPROXIESL_DUP2, - "FDC implementation UID: 0x%08x Index:%d ", - iImplInfoArray[kk]->ImplementationUid().iUid, kk); - + for (TInt kk = 0; kk < count; ++kk) + LOGTEXT3(_L8("\t\tFDC implementation Index:%d UID: 0x%08x"), kk, iImplInfoArray[kk]->ImplementationUid()); } #endif @@ -141,12 +131,11 @@ else iFunctionDrivers.AddLast(*proxy); } - OstTraceFunctionExit0( CFDF_CREATEFUNCTIONDRIVERPROXIESL_EXIT ); } CFdf::~CFdf() { - OstTraceFunctionEntry0( CFDF_CFDF_DES_ENTRY ); + LOG_FUNC // Mimic the detachment of each attached device. TSglQueIter deviceIter(iDevices); @@ -155,7 +144,7 @@ while ( ( device = deviceIter++ ) != NULL ) { const TUint deviceId = device->DeviceId(); - OstTrace1( TRACE_NORMAL, CFDF_CFDF, "mimicking detachment of device with id %d", device ); + LOGTEXT2(_L8("\tmimicking detachment of device with id %d"), device); TellFdcsOfDeviceDetachment(deviceId); iDevices.Remove(*device); delete device; @@ -185,9 +174,10 @@ #ifndef __OVER_DUMMYUSBDI__ //If we're using the DummyUSBDI the real USBDI isn't loaded. TInt err = User::FreeLogicalDevice(KDriverUsbhubLddFileName); - OstTrace1( TRACE_NORMAL, CFDF_CFDF_DUP1, "FreeLogicalDevice( usbhubdriver ) returned %d", err ); + LOGTEXT2(_L8("\tFreeLogicalDevice( usbhubdriver ) returned %d"), err); + err = User::FreeLogicalDevice(KDriverUsbdiLddFileName); - OstTrace1( TRACE_NORMAL, CFDF_CFDF_DUP2, "FreeLogicalDevice( usbdi ) returned %d", err ); + LOGTEXT2(_L8("\tFreeLogicalDevice( usbdi ) returned %d"), err); #endif // __OVER_DUMMYUSBDI__ delete iEventQueue; @@ -195,33 +185,31 @@ // This is a worthwhile check to do at this point. If we ever don't clean // up iInterfaces at the *right* time, then this will be easier to debug // than a memory leak. - if(!(iInterfaces.Count() == 0)) - { - OstTrace1( TRACE_FATAL, CFDF_CFDF_DUP3, "Memory leak from interface;Interface remains %d", iInterfaces.Count() ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(iInterfaces.Count() == 0); iImplInfoArray.ResetAndDestroy(); REComSession::FinalClose(); - OstTraceFunctionExit0( CFDF_CFDF_DES_EXIT ); } void CFdf::EnableDriverLoading() { - OstTraceFunctionEntry0( CFDF_ENABLEDRIVERLOADING_ENTRY ); + LOG_FUNC + iDriverLoadingEnabled = ETrue; } void CFdf::DisableDriverLoading() { - OstTraceFunctionEntry0( CFDF_DISABLEDRIVERLOADING_ENTRY ); + LOG_FUNC + iDriverLoadingEnabled = EFalse; } void CFdf::SetSession(CFdfSession* aSession) { - OstTraceFunctionEntry0( CFDF_SETSESSION_ENTRY ); - OstTrace1( TRACE_NORMAL, CFDF_SETSESSION, "aSession = 0x%08x", aSession ); + LOG_FUNC + LOGTEXT2(_L8("\taSession = 0x%08x"), aSession); + iSession = aSession; } @@ -232,27 +220,17 @@ TBool CFdf::GetDeviceEvent(TDeviceEvent& aEvent) { - OstTraceFunctionEntry0( CFDF_GETDEVICEEVENT_ENTRY ); - if(!iEventQueue) - { - OstTrace0( TRACE_FATAL, CFDF_GETDEVICEEVENT, "iEventQueue is empty" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + LOG_FUNC + ASSERT_DEBUG(iEventQueue); return iEventQueue->GetDeviceEvent(aEvent); } TBool CFdf::GetDevmonEvent(TInt& aEvent) { - OstTraceFunctionEntry0( CFDF_GETDEVMONEVENT_ENTRY ); - - if(!iEventQueue) - { - OstTrace0( TRACE_FATAL, CFDF_GETDEVMONEVENT, "iEventQueue is empty" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + LOG_FUNC - + ASSERT_DEBUG(iEventQueue); return iEventQueue->GetDevmonEvent(aEvent); } @@ -268,39 +246,40 @@ void CFdf::HandleEComEventReceivedL() { - OstTraceFunctionEntry0( CFDF_HANDLEECOMEVENTRECEIVEDL_ENTRY ); - + LOG_FUNC + // There is no way to filter ecom notification to only receive ones we are interested in, also there is no way // to query ecom as to what has changed. Hence there is no option but to call ListImplementations(). iImplInfoArray.ResetAndDestroy(); REComSession::ListImplementationsL(TUid::Uid(KFdcEcomInterfaceUid), iImplInfoArray); TUint implementationsCount = iImplInfoArray.Count(); - OstTrace1( TRACE_NORMAL, CFDF_HANDLEECOMEVENTRECEIVEDL, "iImplInfoArray.Count() after ECom notification= %d", implementationsCount ); + LOGTEXT2(_L8("\tiImplInfoArray.Count() after ECom notification= %d"), implementationsCount); +#ifdef __FLOG_ACTIVE if ( implementationsCount == 0 ) { - OstTrace0( TRACE_NORMAL, CFDF_HANDLEECOMEVENTRECEIVEDL_DUP1, "THERE ARE NO FUNCTION DRIVERS PRESENT IN THE SYSTEM" ); - } + LOGTEXT(_L8("\tTHERE ARE NO FUNCTION DRIVERS PRESENT IN THE SYSTEM")); + } TSglQueIter proxiesIterDebug(iFunctionDrivers); CFdcProxy* fdcDebug = NULL; while ( ( fdcDebug = proxiesIterDebug++ ) != NULL ) { TUid fdcUid = fdcDebug->ImplUid(); - OstTrace1( TRACE_NORMAL, CFDF_HANDLEECOMEVENTRECEIVEDL_DUP2, "Old FDC Proxy implementation UID: 0x%08x", fdcUid.iUid ); + LOGTEXT2(_L8("\t\tOld FDC Proxy implementation UID: 0x%08x"), fdcUid.iUid); TInt fdcVersion = fdcDebug->Version(); - OstTrace1( TRACE_NORMAL, CFDF_HANDLEECOMEVENTRECEIVEDL_DUP3, "FDC Proxy version UID: %d", fdcVersion ); - } - OstTrace0( TRACE_NORMAL, CFDF_HANDLEECOMEVENTRECEIVEDL_DUP4, "------------------------------------------------------------------" ); - + LOGTEXT2(_L8("\t\tFDC Proxy version UID: %d"), fdcVersion); + } + LOGTEXT(_L8("\t\t------------------------------------------------------------------")); for (TInt kk = 0; kk < implementationsCount; ++kk) { TUid fdcUid2 = iImplInfoArray[kk]->ImplementationUid(); - OstTrace1( TRACE_NORMAL, CFDF_HANDLEECOMEVENTRECEIVEDL_DUP5, "New FDC Proxy implementation UID: 0x%08x", fdcUid2.iUid ); + LOGTEXT2(_L8("\t\tNew FDC Proxy implementation UID: 0x%08x"), fdcUid2.iUid); TInt fdcVersion2 = iImplInfoArray[kk]->Version(); - OstTrace1( TRACE_NORMAL, CFDF_HANDLEECOMEVENTRECEIVEDL_DUP6, "FDC Proxy version UID: %d", fdcVersion2 ); + LOGTEXT2(_L8("\t\tFDC Proxy version UID: %d"), fdcVersion2); } +#endif // See if any relevant FDCs (or upgrades) have been installed or uninstalled: @@ -400,16 +379,15 @@ iFunctionDrivers.AddLast(*proxy); } } - OstTraceFunctionExit0( CFDF_HANDLEECOMEVENTRECEIVEDL_EXIT ); } // A bus event has occurred. void CFdf::MbeoBusEvent() { - OstTraceFunctionEntry0( CFDF_MBEOBUSEVENT_ENTRY ); - OstTrace1( TRACE_NORMAL, CFDF_MBEOBUSEVENT, "iBusEvent.iEventType = %d", iBusEvent.iEventType ); - OstTrace1( TRACE_NORMAL, CFDF_MBEOBUSEVENT_DUP1, "iBusEvent.iError = %d", iBusEvent.iError ); - OstTrace1( TRACE_NORMAL, CFDF_MBEOBUSEVENT_DUP2, "iBusEvent.iDeviceHandle = %d", iBusEvent.iDeviceHandle ); + LOG_FUNC + LOGTEXT2(_L8("\tiBusEvent.iEventType = %d"), iBusEvent.iEventType); + LOGTEXT2(_L8("\tiBusEvent.iError = %d"), iBusEvent.iError); + LOGTEXT2(_L8("\tiBusEvent.iDeviceHandle = %d"), iBusEvent.iDeviceHandle); switch ( iBusEvent.iEventType ) { @@ -422,11 +400,7 @@ else { // It was an attachment failure. Simply tell the event queue. - if(!iEventQueue) - { - OstTrace0( TRACE_FATAL, CFDF_MBEOBUSEVENT_DUP3, "Empty iEventQueue" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(iEventQueue); iEventQueue->AttachmentFailure(iBusEvent.iError); } break; @@ -436,12 +410,7 @@ // pseudo-detached due to an overcurrent condition (for instance) then // the overcurrent condition is indicated through the devmon API (i.e. // EDevMonEvent) and the detachment is still 'KErrNone'. - if(!(iBusEvent.iError == KErrNone)) - { - OstTrace0( TRACE_NORMAL, CFDF_MBEOBUSEVENT_DUP4, "iBusEvent error" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - + ASSERT_DEBUG(iBusEvent.iError == KErrNone); HandleDeviceDetachment(iBusEvent.iDeviceHandle); break; @@ -458,7 +427,6 @@ // TBusEvent from the previous completion. (Otherwise it might get // overwritten.) iActiveWaitForBusEvent->Wait(); - OstTraceFunctionExit0( CFDF_MBEOBUSEVENT_EXIT ); } // This is the central handler for device attachment. @@ -467,21 +435,16 @@ // The second phase is driver loading. void CFdf::HandleDeviceAttachment(TUint aDeviceId) { - OstTraceFunctionEntry0( CFDF_HANDLEDEVICEATTACHMENT_ENTRY ); + LOG_FUNC // This is filled in by HandleDeviceAttachmentL on success. CDeviceProxy* device; TRAPD(err, HandleDeviceAttachmentL(aDeviceId, device)); if ( err ) { - OstTrace1( TRACE_NORMAL, CFDF_HANDLEDEVICEATTACHMENT, "err = %d", err ); + LOGTEXT2(_L8("\terr = %d"), err); // There was an attachment failure, so we just increment the count of // attachment failures. - if(!iEventQueue) - { - OstTrace0( TRACE_FATAL, CFDF_HANDLEDEVICEATTACHMENT_DUP1, "Empty iEventQueue" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - + ASSERT_DEBUG(iEventQueue); iEventQueue->AttachmentFailure(err); // If we failed the attachment phase, we can't try to load drivers for // the device. @@ -493,12 +456,7 @@ // device proxy created by HandleDeviceAttachmentL to the event queue. // This event object is always populated with the correct status and // error. - if(!device) - { - OstTrace0( TRACE_FATAL, CFDF_HANDLEDEVICEATTACHMENT_DUP2, "Empty device" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - + ASSERT_DEBUG(device); DoDriverLoading(*device); } @@ -507,90 +465,62 @@ // HandleDeviceAttachmentL. iCurrentDevice = NULL; iInterfaces.ResetAndDestroy(); - OstTraceFunctionExit0( CFDF_HANDLEDEVICEATTACHMENT_EXIT ); } // This does the 'device attachment' phase of the new device attachment only. void CFdf::HandleDeviceAttachmentL(TUint aDeviceId, CDeviceProxy*& aDevice) { - OstTraceFunctionEntry0( CFDF_HANDLEDEVICEATTACHMENTL_ENTRY ); + LOG_FUNC + // Create the device proxy aDevice = CDeviceProxy::NewL(iHubDriver, aDeviceId); CleanupStack::PushL(aDevice); iCurrentDevice = aDevice; // Get necessary descriptors (for this phase) - TInt err=aDevice->GetDeviceDescriptor(iDD); - if (err<0) - { - OstTrace1( TRACE_NORMAL, CFDF_HANDLEDEVICEATTACHMENTL, "GetDeviceDescriptor error=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(aDevice->GetDeviceDescriptor(iDD)); + LOGTEXT2(_L8("\tiDD.USBBcd = 0x%04x"), iDD.USBBcd()); + LOGTEXT2(_L8("\tiDD.DeviceClass = 0x%02x"), iDD.DeviceClass()); + LOGTEXT2(_L8("\tiDD.DeviceSubClass = 0x%02x"), iDD.DeviceSubClass()); + LOGTEXT2(_L8("\tiDD.DeviceProtocol = 0x%02x"), iDD.DeviceProtocol()); + LOGTEXT2(_L8("\tiDD.MaxPacketSize0 = %d"), iDD.MaxPacketSize0()); + LOGTEXT2(_L8("\tiDD.VendorId = 0x%04x"), iDD.VendorId()); + LOGTEXT2(_L8("\tiDD.ProductId = 0x%04x"), iDD.ProductId()); + LOGTEXT2(_L8("\tiDD.DeviceBcd = 0x%04x"), iDD.DeviceBcd()); + LOGTEXT2(_L8("\tiDD.ManufacturerIndex = %d"), iDD.ManufacturerIndex()); + LOGTEXT2(_L8("\tiDD.ProductIndex = %d"), iDD.ProductIndex()); + LOGTEXT2(_L8("\tiDD.SerialNumberIndex = %d"), iDD.SerialNumberIndex()); + LOGTEXT2(_L8("\tiDD.NumConfigurations = %d"), iDD.NumConfigurations()); + LEAVEIFERRORL(aDevice->GetConfigurationDescriptor(iCD)); + LOGTEXT2(_L8("\tiCD.TotalLength = %d"), iCD.TotalLength()); + LOGTEXT2(_L8("\tiCD.NumInterfaces = %d"), iCD.NumInterfaces()); + LOGTEXT2(_L8("\tiCD.ConfigurationValue = %d"), iCD.ConfigurationValue()); + LOGTEXT2(_L8("\tiCD.ConfigurationIndex = %d"), iCD.ConfigurationIndex()); + LOGTEXT2(_L8("\tiCD.Attributes = %d"), iCD.Attributes()); + LOGTEXT2(_L8("\tiCD.MaxPower = %d"), iCD.MaxPower()); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP1, "iDD.USBBcd = 0x%04x", iDD.USBBcd() ); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP2, "iDD.DeviceClass = 0x%02x", iDD.DeviceClass() ); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP3, "iDD.DeviceSubClass = 0x%02x", iDD.DeviceSubClass() ); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP4, "iDD.DeviceProtocol = 0x%02x", iDD.DeviceProtocol() ); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP5, "iDD.MaxPacketSize0 = %d", iDD.MaxPacketSize0() ); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP6, "iDD.VendorId = 0x%04x", iDD.VendorId() ); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP7, "iDD.ProductId = 0x%04x", iDD.ProductId() ); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP8, "iDD.DeviceBcd = 0x%04x", iDD.DeviceBcd() ); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP9, "iDD.ManufacturerIndex = %d", iDD.ManufacturerIndex() ); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP10, "iDD.ProductIndex = %d", iDD.ProductIndex() ); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP11, "iDD.SerialNumberIndex = %d", iDD.SerialNumberIndex() ); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP12, "iDD.NumConfigurations = %d", iDD.NumConfigurations() ); - err=aDevice->GetConfigurationDescriptor(iCD); - if(err<0) - { - OstTrace1( TRACE_NORMAL, CFDF_HANDLEDEVICEATTACHMENTL_DUP13, "GetConfigurationDescriptor error=%d", err); - User::Leave(err); - } - - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP14, "iCD.TotalLength = %d", iCD.TotalLength() ); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP15, "iCD.NumInterfaces = %d", iCD.NumInterfaces() ); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP16, "iCD.ConfigurationValue = %d", iCD.ConfigurationValue() ); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP17, "iCD.ConfigurationIndex = %d", iCD.ConfigurationIndex() ); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP18, "iCD.Attributes = %d", iCD.Attributes() ); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP19, "iCD.MaxPower = %d", iCD.MaxPower() ); - const TUint8 numberOfInterfaces = iCD.NumInterfaces(); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP20, "numberOfInterfaces (field in config descriptor) = %d)", numberOfInterfaces ); + LOGTEXT2(_L8("\tnumberOfInterfaces (field in config descriptor) = %d)"), numberOfInterfaces); if ( numberOfInterfaces == 0 ) { - OstTrace0( TRACE_NORMAL, CFDF_HANDLEDEVICEATTACHMENTL_DUP21, "Error: Usb Configuration Has No Interfaces"); - User::Leave(KErrUsbConfigurationHasNoInterfaces); + LEAVEL(KErrUsbConfigurationHasNoInterfaces); } // Walk the configuration bundle. Collect information on each interface // (its number, class, subclass and protocol). This populates iInterfaces. - if(!(iInterfaces.Count() == 0)) - { - OstTrace0( TRACE_FATAL, CFDF_HANDLEDEVICEATTACHMENTL_DUP22, "Error: Usb Configuration Has No Interfaces"); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - - if(!iCurrentDevice) - { - OstTrace0( TRACE_FATAL, CFDF_HANDLEDEVICEATTACHMENTL_DUP23, "Empty iCurrentDevice"); - User::Panic(KPanicCategory,__LINE__); - } - + ASSERT_DEBUG(iInterfaces.Count() == 0); + ASSERT_ALWAYS(iCurrentDevice); ParseL(iCD); // Log iInterfaces. const TUint interfaceCount = iInterfaces.Count(); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP24, "interfaceCount (parsed from bundle) = %d", interfaceCount ); -#ifdef _DEBUG - OstTrace0( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP25, "Logging iInterfaces:"); + LOGTEXT2(_L8("\tinterfaceCount (parsed from bundle) = %d"), interfaceCount); +#ifdef __FLOG_ACTIVE + LOGTEXT(_L8("\tLogging iInterfaces:")); for ( TUint ii = 0 ; ii < interfaceCount ; ++ii ) { const TInterfaceInfo* ifInfo = iInterfaces[ii]; - if(!ifInfo) - { - OstTrace0( TRACE_FATAL, CFDF_HANDLEDEVICEATTACHMENTL_DUP26, "Empty ifInfo"); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - - OstTraceExt5(TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP27, "\t\tiInterfaces[%d]: number %d, interface class 0x%02x subclass 0x%02x protocol 0x%02x", + ASSERT_DEBUG(ifInfo); + LOGTEXT6(_L8("\t\tiInterfaces[%d]: number %d, interface class 0x%02x subclass 0x%02x protocol 0x%02x"), ii, ifInfo->iNumber, ifInfo->iClass, @@ -599,13 +529,12 @@ ); } #endif - + // Check that the config's NumInterfaces is the same as the actual number // of interface descriptors we found. We rely on this later on. if ( numberOfInterfaces != interfaceCount ) { - OstTrace0( TRACE_NORMAL, CFDF_HANDLEDEVICEATTACHMENTL_DUP28, "KErrUsbInterfaceCountMismatch"); - User::Leave(KErrUsbInterfaceCountMismatch); + LEAVEL(KErrUsbInterfaceCountMismatch); } // Check that each interface number in iInterfaces is unique. @@ -614,25 +543,14 @@ for ( TUint ii = 0 ; ii < interfaceCount ; ++ii ) { const TInterfaceInfo* lhs = iInterfaces[ii]; - if(!lhs) - { - OstTrace0( TRACE_FATAL, CFDF_HANDLEDEVICEATTACHMENTL_DUP29, "Empty lhs"); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - + ASSERT_DEBUG(lhs); for ( TUint jj = ii+1 ; jj < interfaceCount ; ++jj ) { const TInterfaceInfo* rhs = iInterfaces[jj]; - if(!rhs) - { - OstTrace0( TRACE_FATAL, CFDF_HANDLEDEVICEATTACHMENTL_DUP30, "Empty rhs"); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - + ASSERT_DEBUG(rhs); if ( lhs->iNumber == rhs->iNumber ) { - OstTrace1( TRACE_NORMAL, CFDF_HANDLEDEVICEATTACHMENTL_DUP31, "KErrUsbDuplicateInterfaceNumbers; iNumber=%d", lhs->iNumber); - User::Leave(KErrUsbDuplicateInterfaceNumbers); + LEAVEL(KErrUsbDuplicateInterfaceNumbers); } } } @@ -646,7 +564,7 @@ TInt err = User::LoadLogicalDevice(KDriverUsbdiLddFileName); if ( err != KErrAlreadyExists ) { - LEAVEIFERRORL(err,OstTrace1( TRACE_NORMAL, CFDF_HANDLEDEVICEATTACHMENTL_DUP32, "Load Logical Device error; error=%d", err);); + LEAVEIFERRORL(err); } } #endif // __OVER_DUMMYUSBDI__ @@ -657,31 +575,19 @@ iDevices.AddLast(*aDevice); // Also put an event on the event queue. TDeviceEvent* const attachmentEvent = aDevice->GetAttachmentEventObject(); - - if(!attachmentEvent) - { - OstTrace0( TRACE_FATAL, CFDF_HANDLEDEVICEATTACHMENTL_DUP33, "Empty attachmentEvent"); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - + ASSERT_DEBUG(attachmentEvent); attachmentEvent->iInfo.iVid = iDD.VendorId(); attachmentEvent->iInfo.iPid = iDD.ProductId(); attachmentEvent->iInfo.iError = KErrNone; - if(!iEventQueue) - { - OstTrace0( TRACE_FATAL, CFDF_HANDLEDEVICEATTACHMENTL_DUP34, "Empty iEventQueue"); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - + ASSERT_DEBUG(iEventQueue); iEventQueue->AddDeviceEvent(*attachmentEvent); - OstTrace1( TRACE_DUMP, CFDF_HANDLEDEVICEATTACHMENTL_DUP35, "***USB HOST STACK: SUCCESSFUL ATTACHMENT OF DEVICE (id %d)", aDeviceId ); - - OstTraceFunctionExit0( CFDF_HANDLEDEVICEATTACHMENTL_EXIT ); + LOGTEXT2(_L8("***USB HOST STACK: SUCCESSFUL ATTACHMENT OF DEVICE (id %d)"), aDeviceId); } void CFdf::DoDriverLoading(CDeviceProxy& aDevice) { - OstTraceFunctionEntry0( CFDF_DODRIVERLOADING_ENTRY ); + LOG_FUNC + // Leaving or returning from DoDriverLoadingL is the trigger to put the // 'driver loading' event object on the event queue. It must already have // been populated correctly (the actual error code it left with doesn't @@ -689,12 +595,7 @@ TRAP_IGNORE(DoDriverLoadingL(aDevice)); TDeviceEvent* const driverLoadingEvent = aDevice.GetDriverLoadingEventObject(); - if(!driverLoadingEvent) - { - OstTrace0( TRACE_FATAL, CFDF_DODRIVERLOADING, "Empty driverLoadingEvent" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - + ASSERT_DEBUG(driverLoadingEvent); // The driver loading event object says whether driver loading succeeded // (all interfaces were claimed without error), partly succeeded (not all // interfaces were claimed without error), or failed (no interfaces were @@ -707,29 +608,22 @@ // power-saving reasons and is not critical. (void)aDevice.Suspend(); } - if(!iEventQueue) - { - OstTrace0( TRACE_FATAL, CFDF_DODRIVERLOADING_DUP1, "Empty iEventQueue" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - + ASSERT_DEBUG(iEventQueue); iEventQueue->AddDeviceEvent(*driverLoadingEvent); - OstTraceFunctionExit0( CFDF_DODRIVERLOADING_EXIT ); } void CFdf::DoDriverLoadingL(CDeviceProxy& aDevice) { - OstTraceFunctionEntry0( CFDF_DODRIVERLOADINGL_ENTRY ); + LOG_FUNC + // Check whether driver loading is enabled. if ( !iDriverLoadingEnabled ) { // Complete driver load failure scenario. aDevice.SetDriverLoadingEventData(EDriverLoadFailure, KErrUsbDriverLoadingDisabled); - - OstTrace1( TRACE_NORMAL, CFDF_DODRIVERLOADINGL, "Leave with error %d", KErrGeneral ); - User::Leave(KErrGeneral); - } + LEAVEL(KErrGeneral); + } // Set this member up so that when the FDC calls TokenForInterface we call @@ -755,8 +649,7 @@ if (aDevice.HasIADFlag() && !functionDriverFound) { aDevice.SetDriverLoadingEventData(EDriverLoadFailure, KErrUsbUnsupportedDevice); - OstTrace0( TRACE_NORMAL, CFDF_DODRIVERLOADINGL_DUP1, "Leave with function Driver not Found" ); - User::Leave(KErrGeneral); + LEAVEL(KErrGeneral); } // If a device FD is found then it is supposed to claim all the interfaces, if it didn't then report // a partial success but don't offer unclaimed interfaces to any other FD. @@ -774,19 +667,14 @@ // Whether all interfaces were taken, some, or none, collectedErr may have // an error in it or KErrNone. We use specific error codes in some cases. TUint unclaimedInterfaces = UnclaimedInterfaceCount(); - OstTrace1( TRACE_DUMP, CFDF_DODRIVERLOADINGL_DUP2, "unclaimedInterfaces = %d", unclaimedInterfaces ); - OstTrace1( TRACE_DUMP, CFDF_DODRIVERLOADINGL_DUP3, "anySuccess = %d", anySuccess ); - OstTrace1( TRACE_DUMP, CFDF_DODRIVERLOADINGL_DUP4, "collectedErr = %d", collectedErr ); - if(!(unclaimedInterfaces <= interfaceCount)) - { - OstTrace0( TRACE_FATAL, CFDF_DODRIVERLOADINGL_DUP5, "interface Count error" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - + LOGTEXT2(_L8("\tunclaimedInterfaces = %d"), unclaimedInterfaces); + LOGTEXT2(_L8("\tanySuccess = %d"), anySuccess); + LOGTEXT2(_L8("\tcollectedErr = %d"), collectedErr); + ASSERT_DEBUG(unclaimedInterfaces <= interfaceCount); if(iDeviceDetachedTooEarly) { - OstTrace0( TRACE_NORMAL, CFDF_DODRIVERLOADINGL_DUP6, "Device has been detached too early!" ); + LOGTEXT(_L8("\tDevice has been detached too early!")); iDeviceDetachedTooEarly = EFalse; // the choice of having the status to be EDriverLoadPartialSuccess // was not to clash with trying to suspend the device because @@ -802,7 +690,6 @@ SetFailureStatus(unclaimedInterfaces, interfaceCount, anySuccess, collectedErr, aDevice); }// iDeviceDetachedTooEarly - OstTraceFunctionExit0( CFDF_DODRIVERLOADINGL_EXIT ); } // Recursive function, originally called with the configuration descriptor. @@ -810,26 +697,26 @@ // bundle. void CFdf::ParseL(TUsbGenericDescriptor& aDesc) { - OstTraceFunctionEntry0( CFDF_PARSEL_ENTRY ); - OstTrace1( TRACE_DUMP, CFDF_PARSEL, "&aDesc = 0x%08x", &aDesc ); - OstTrace1( TRACE_DUMP, CFDF_PARSEL_DUP1, "aDesc.ibDescriptorType = %d", aDesc.ibDescriptorType ); - OstTrace1( TRACE_DUMP, CFDF_PARSEL_DUP2, "aDesc.iFirstChild = 0x%08x", aDesc.iFirstChild ); - OstTrace1( TRACE_DUMP, CFDF_PARSEL_DUP3, "aDesc.iNextPeer = 0x%08x", aDesc.iNextPeer ); - - if ( aDesc.ibDescriptorType == EInterface ) + LOG_FUNC + LOGTEXT2(_L8("\t&aDesc = 0x%08x"), &aDesc); + LOGTEXT2(_L8("\taDesc.ibDescriptorType = %d"), aDesc.ibDescriptorType); + LOGTEXT2(_L8("\taDesc.iFirstChild = 0x%08x"), aDesc.iFirstChild); + LOGTEXT2(_L8("\taDesc.iNextPeer = 0x%08x"), aDesc.iNextPeer); + + if ( aDesc.ibDescriptorType == EInterface ) { // Add interface information to collection, but only if it's alternate // setting 0. const TUsbInterfaceDescriptor& ifDesc = static_cast(aDesc); if ( ifDesc.AlternateSetting() == 0 ) // hard-coded '0' means the default (initial configuration) setting { - OstTrace1( TRACE_DUMP, CFDF_PARSEL_DUP4, "ifDesc.InterfaceNumber = %d", ifDesc.InterfaceNumber() ); - OstTrace1( TRACE_DUMP, CFDF_PARSEL_DUP5, "ifDesc.NumEndpoints = %d", ifDesc.NumEndpoints() ); - OstTrace1( TRACE_DUMP, CFDF_PARSEL_DUP6, "ifDesc.InterfaceClass = 0x%02x", ifDesc.InterfaceClass() ); - OstTrace1( TRACE_DUMP, CFDF_PARSEL_DUP7, "ifDesc.InterfaceSubClass = 0x%02x", ifDesc.InterfaceSubClass() ); - OstTrace1( TRACE_DUMP, CFDF_PARSEL_DUP8, "ifDesc.InterfaceProtocol = 0x%02x", ifDesc.InterfaceProtocol() ); - OstTrace1( TRACE_DUMP, CFDF_PARSEL_DUP9, "ifDesc.Interface = %d", ifDesc.Interface() ); - + LOGTEXT2(_L8("\tifDesc.InterfaceNumber = %d"), ifDesc.InterfaceNumber()); + LOGTEXT2(_L8("\tifDesc.NumEndpoints = %d"), ifDesc.NumEndpoints()); + LOGTEXT2(_L8("\tifDesc.InterfaceClass = 0x%02x"), ifDesc.InterfaceClass()); + LOGTEXT2(_L8("\tifDesc.InterfaceSubClass = 0x%02x"), ifDesc.InterfaceSubClass()); + LOGTEXT2(_L8("\tifDesc.InterfaceProtocol = 0x%02x"), ifDesc.InterfaceProtocol()); + LOGTEXT2(_L8("\tifDesc.Interface = %d"), ifDesc.Interface()); + TInterfaceInfo* ifInfo = TInterfaceInfo::NewL(iInterfaces); ifInfo->iNumber = ifDesc.InterfaceNumber(); ifInfo->iClass = ifDesc.InterfaceClass(); @@ -848,9 +735,10 @@ { // OTG descriptor found const TUsbOTGDescriptor& otgDesc = static_cast(aDesc); - OstTrace1( TRACE_DUMP, CFDF_PARSEL_DUP10, "otgDesc.Attributes = %d", otgDesc.Attributes() ); - OstTrace1( TRACE_DUMP, CFDF_PARSEL_DUP11, "otgDesc.HNPSupported = %d", otgDesc.HNPSupported() ); - OstTrace1( TRACE_DUMP, CFDF_PARSEL_DUP12, "otgDesc.SRPSupported = %d", otgDesc.SRPSupported() ); + + LOGTEXT2(_L8("\totgDesc.Attributes = %b"), otgDesc.Attributes()); + LOGTEXT2(_L8("\totgDesc.HNPSupported = %d"), otgDesc.HNPSupported()); + LOGTEXT2(_L8("\totgDesc.SRPSupported = %d"), otgDesc.SRPSupported()); iCurrentDevice->SetOtgDescriptorL(otgDesc); } @@ -866,7 +754,6 @@ { ParseL(*nextPeer); } - OstTraceFunctionExit0( CFDF_PARSEL_EXIT ); } // Method that uses only one array to hold the unclaimed interface numbers. @@ -876,17 +763,13 @@ RArray& aInterfacesNumberArray, TInterfaceSearchKeys aKey) { - OstTraceFunctionEntry0( CFDF_FINDDRIVERSFORINTERFACESUSINGSPECIFICKEYL_ENTRY ); - + LOG_FUNC + const TUint interfaceCount = iInterfaces.Count(); for ( TUint ii = 0 ; ii < interfaceCount ; ++ii ) { TInterfaceInfo* ifInfo = iInterfaces[ii]; - if(!ifInfo) - { - OstTrace0( TRACE_FATAL, CFDF_FINDDRIVERSFORINTERFACESUSINGSPECIFICKEYL, "Empty ifInfo" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(ifInfo); if ((ifInfo->iClaimed) || (aKey == EVendorInterfacesubclassInterfaceprotocol && ifInfo->iClass != KVendorSpecificInterfaceClassValue)|| @@ -902,7 +785,8 @@ TBuf8 searchKey; FormatInterfaceSearchKey(searchKey, aKey, *ifInfo); - OstTraceExt1( TRACE_NORMAL, CFDF_FINDDRIVERSFORINTERFACESUSINGSPECIFICKEYL_DUP1, "searchKey = \"%S\"", searchKey ); + + LOGTEXT2(_L8("\tsearchKey = \"%S\""), &searchKey); // RArray* array = &aInterfacesNumberArray; FindDriverForInterfaceUsingSpecificKey(aDevice, aCollectedErr, aAnySuccess, aInterfacesNumberArray, searchKey); @@ -911,7 +795,6 @@ // the searching have been done. RebuildUnClaimedInterfacesArrayL(aDevice, aInterfacesNumberArray, ii+1); } - OstTraceFunctionExit0( CFDF_FINDDRIVERSFORINTERFACESUSINGSPECIFICKEYL_EXIT ); } @@ -925,8 +808,9 @@ RArray& aInterfacesGivenToFdc, const TDesC8& aSearchKey) { - OstTraceFunctionEntry0( CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_ENTRY ); - OstTraceExt1( TRACE_NORMAL, CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY, "aSearchKey = \"%S\"", aSearchKey ); + + LOG_FUNC + LOGTEXT2(_L8("\taSearchKey = \"%S\""), &aSearchKey); // Find an FDC matching this search key. TSglQueIter iter(iFunctionDrivers); @@ -935,8 +819,7 @@ while ( ( fdc = iter++ ) != NULL ) { - OstTraceExt1( TRACE_NORMAL, CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_DUP1, "FDC's default_data field = \"%S\"", fdc->DefaultDataField() ); - + LOGTEXT2(_L8("\tFDC's default_data field = \"%S\""), &fdc->DefaultDataField()); #ifdef _DEBUG // having these two together in the debug window is helpful for interactive debugging TBuf8 fd_key; @@ -963,28 +846,27 @@ { aDevice.SetMultipleDriversFlag(); } - OstTrace1( TRACE_NORMAL, CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_DUP2, "found matching FDC (0x%08x)", fdc ); - + + LOGTEXT2(_L8("\tfound matching FDC (0x%08x)"), fdc); +#ifdef __FLOG_ACTIVE const TUint count = aInterfacesGivenToFdc.Count(); - OstTrace1( TRACE_NORMAL, CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_DUP3, "logging aInterfacesGivenToFdc (interfaces being offered to the FDC): count = %d", count ); + LOGTEXT2(_L8("\tlogging aInterfacesGivenToFdc (interfaces being offered to the FDC): count = %d"), count); for ( TUint ii = 0 ; ii < count ; ++ii ) { - OstTraceExt2( TRACE_NORMAL, CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_DUP4, - "index %u: interface number %u", - ii, aInterfacesGivenToFdc[ii] ); - } + LOGTEXT3(_L8("\t\tindex %d: interface number %d"), ii, aInterfacesGivenToFdc[ii]); + } +#endif TInt err = fdc->NewFunction(aDevice.DeviceId(), aInterfacesGivenToFdc, iDD, iCD); - OstTrace1( TRACE_NORMAL, CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_DUP5, "NewFunction returned %d", err ); - + LOGTEXT2(_L8("\tNewFunction returned %d"), err); // To correctly determine whether the driver load for the whole // configuration was a complete failure, a partial success or a // complete success, we need to collect any non-KErrNone error // from this, and whether any handovers worked at all. if ( err == KErrNone ) { - OstTraceExt2(TRACE_NORMAL, CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_DUP6, - "***USB HOST STACK: THE FOLLOWING INTERFACES OF DEVICE %u WERE SUCCESSFULLY PASSED TO FUNCTION DRIVER WITH IMPL UID 0x%08x", - (TInt32) aDevice.DeviceId(), fdc->ImplUid().iUid); +#ifdef __FLOG_ACTIVE + LOGTEXT3(_L8("***USB HOST STACK: THE FOLLOWING INTERFACES OF DEVICE %d WERE SUCCESSFULLY PASSED TO FUNCTION DRIVER WITH IMPL UID 0x%08x"), + aDevice.DeviceId(), fdc->ImplUid()); // We want to log each interface that's in // aInterfacesGivenToFdc AND is marked claimed in iInterfaces. for ( TUint ii = 0 ; ii < aInterfacesGivenToFdc.Count() ; ++ii ) @@ -993,20 +875,16 @@ for ( TUint jj = 0 ; jj < iInterfaces.Count() ; ++jj ) { const TInterfaceInfo* ifInfo = iInterfaces[jj]; - - if(!ifInfo) - { - OstTrace0( TRACE_FATAL, CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_DUP7, "Empty ifInfo" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(ifInfo); if ( ifNum == ifInfo->iNumber && ifInfo->iClaimed ) { - OstTrace1( TRACE_NORMAL, CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_DUP8, "***USB HOST STACK: bInterfaceNumber %d", ifNum ); + LOGTEXT2(_L8("***USB HOST STACK: bInterfaceNumber %d"), ifNum); } } } +#endif aAnySuccess = ETrue; } else @@ -1017,13 +895,13 @@ break; } } - OstTraceFunctionExit0( CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_EXIT ); } void CFdf::HandleDeviceDetachment(TUint aDeviceId) { - OstTraceFunctionEntry0( CFDF_HANDLEDEVICEDETACHMENT_ENTRY ); - OstTrace1( TRACE_NORMAL, CFDF_HANDLEDEVICEDETACHMENT, "aDeviceId = %d", aDeviceId ); + LOG_FUNC + LOGTEXT2(_L8("\taDeviceId = %d"), aDeviceId); + #ifdef _DEBUG TBool found = EFalse; @@ -1041,24 +919,16 @@ #ifdef _DEBUG found = ETrue; #endif - OstTrace0( TRACE_NORMAL, CFDF_HANDLEDEVICEDETACHMENT_DUP1, "found matching device proxy" ); - + LOGTEXT(_L8("\tfound matching device proxy")); + iDevices.Remove(*device); // Before destroying the device proxy, take the detachment event // stored in it for the event queue. TDeviceEvent* const detachmentEvent = device->GetDetachmentEventObject(); - if(!detachmentEvent) - { - OstTrace0( TRACE_FATAL, CFDF_HANDLEDEVICEDETACHMENT_DUP2, "Empty detachmentEvent" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - if(!iEventQueue) - { - OstTrace0( TRACE_FATAL, CFDF_HANDLEDEVICEDETACHMENT_DUP3, "Empty iEventQueue" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(detachmentEvent); + ASSERT_DEBUG(iEventQueue); iEventQueue->AddDeviceEvent(*detachmentEvent); - OstTrace1( TRACE_NORMAL, CFDF_HANDLEDEVICEDETACHMENT_DUP4, "***USB HOST STACK: DETACHMENT OF DEVICE (id %d)", aDeviceId ); + LOGTEXT2(_L8("***USB HOST STACK: DETACHMENT OF DEVICE (id %d)"), aDeviceId); delete device; TellFdcsOfDeviceDetachment(aDeviceId); @@ -1069,7 +939,7 @@ if (iDevices.IsEmpty()) { TInt err = User::FreeLogicalDevice(KDriverUsbdiLddFileName); - OstTrace1( TRACE_NORMAL, CFDF_HANDLEDEVICEDETACHMENT_DUP5, "FreeLogicalDevice( usbdi ) returned %d", err ); + LOGTEXT2(_L8("\tFreeLogicalDevice( usbdi ) returned %d"), err); } #endif // __OVER_DUMMYUSBDI__ @@ -1080,32 +950,25 @@ #ifdef _DEBUG if ( !found ) { - OstTrace0( TRACE_NORMAL, CFDF_HANDLEDEVICEDETACHMENT_DUP6, "no matching device proxy found" ); + LOGTEXT(_L8("\tno matching device proxy found")); } #endif - - OstTraceFunctionExit0( CFDF_HANDLEDEVICEDETACHMENT_EXIT ); } void CFdf::HandleDevmonEvent(TInt aEvent) { - OstTraceFunctionEntry0( CFDF_HANDLEDEVMONEVENT_ENTRY ); - OstTrace1( TRACE_NORMAL, CFDF_HANDLEDEVMONEVENT, "aEvent = %d", aEvent ); + LOG_FUNC + LOGTEXT2(_L8("\taEvent = %d"), aEvent); - if(!iEventQueue) - { - OstTrace0( TRACE_FATAL, CFDF_HANDLEDEVMONEVENT_DUP1, "Empty iEventQueue" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(iEventQueue); iEventQueue->AddDevmonEvent(aEvent); - OstTraceFunctionExit0( CFDF_HANDLEDEVMONEVENT_EXIT ); } void CFdf::TellFdcsOfDeviceDetachment(TUint aDeviceId) { - OstTraceFunctionEntry0( CFDF_TELLFDCSOFDEVICEDETACHMENT_ENTRY ); - OstTrace1( TRACE_NORMAL, CFDF_TELLFDCSOFDEVICEDETACHMENT, "aDeviceId = %d", aDeviceId ); - + LOG_FUNC + LOGTEXT2(_L8("\taDeviceId = %d"), aDeviceId); + TSglQueIter iter(iFunctionDrivers); iter.SetToFirst(); CFdcProxy* fdc; @@ -1119,14 +982,12 @@ } } - OstTraceFunctionExit0( CFDF_TELLFDCSOFDEVICEDETACHMENT_EXIT ); } TUint32 CFdf::TokenForInterface(TUint8 aInterface) { - OstTraceFunctionEntry0( CFDF_TOKENFORINTERFACE_ENTRY ); - OstTrace1( TRACE_NORMAL, CFDF_TOKENFORINTERFACE, "aInterface = %d", aInterface ); - + LOG_FUNC + LOGTEXT2(_L8("\taInterface = %d"), aInterface); TUint32 token = 0; // Check that the interface was in the array given to the FD and mark it @@ -1136,37 +997,21 @@ for ( TUint ii = 0 ; ii < interfaceCount ; ++ii ) { TInterfaceInfo* ifInfo = iInterfaces[ii]; - if(!ifInfo) - { - OstTrace0( TRACE_FATAL, CFDF_TOKENFORINTERFACE_DUP1, "Empty ifInfo" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(ifInfo); if ( ifInfo->iNumber == aInterface ) { found = ETrue; // The FDC tried to claim an interface that was already claimed. - if(ifInfo->iClaimed) - { - OstTrace0( TRACE_FATAL, CFDF_TOKENFORINTERFACE_DUP2, "iClaimed error" ); - User::Panic(KPanicCategory,__LINE__); - } + ASSERT_ALWAYS(!ifInfo->iClaimed); ifInfo->iClaimed = ETrue; break; } } // Could not find interface in the interface array- the FDC tried to claim // an interface it had not been offered. - if(!found) - { - OstTrace0( TRACE_FATAL, CFDF_TOKENFORINTERFACE_DUP3, "not found" ); - User::Panic(KPanicCategory,__LINE__); - } + ASSERT_ALWAYS(found); - if(!iCurrentDevice) - { - OstTrace0( TRACE_FATAL, CFDF_TOKENFORINTERFACE_DUP4, "Empty iCurrentDevice" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(iCurrentDevice); // GetTokenForInterface will return error in the following cases: // 1/ KErrBadHandle: invalid device handle (the CDeviceProxy asserts that @@ -1194,23 +1039,21 @@ break; default: - OstTraceExt2( TRACE_FATAL, CFDF_TOKENFORINTERFACE_DUP5, "Unexpected error %d when requesting token for aInterface %d",err,aInterface); - User::Panic(KPanicCategory,__LINE__); + LOGTEXT3(_L8("\tUnexpected error %d when requesting token for aInterface %d"),err,aInterface); + ASSERT_ALWAYS(0); break; } - OstTraceExt2( TRACE_NORMAL, CFDF_TOKENFORINTERFACE_DUP6, - "Token for interface %hhu is = %u",aInterface, token); - - OstTraceFunctionExit0( CFDF_TOKENFORINTERFACE_EXIT ); + LOGTEXT3(_L8("\tToken for interface %d is = %d"),aInterface, token); + return token; } CDeviceProxy* CFdf::DeviceProxyL(TUint aDeviceId) const { - OstTraceFunctionEntry0( CFDF_DEVICEPROXYL_ENTRY ); - OstTrace1( TRACE_NORMAL, CFDF_DEVICEPROXYL, "aDeviceId = %d", aDeviceId ); - + LOG_FUNC + LOGTEXT2(_L8("\taDeviceId = %d"), aDeviceId); + TSglQueIter iter(const_cast(this)->iDevices); iter.SetToFirst(); CDeviceProxy* device = NULL; @@ -1218,74 +1061,66 @@ { if ( device->DeviceId() == aDeviceId ) { - OstTrace1( TRACE_NORMAL, CFDF_DEVICEPROXYL_DUP1, "device = 0x%08x", device ); - OstTraceFunctionExit0( CFDF_DEVICEPROXYL_EXIT ); + LOGTEXT2(_L8("\tdevice = 0x%08x"), device); return device; } } - OstTrace0( TRACE_NORMAL, CFDF_DEVICEPROXYL_DUP2, "KErrNotFound"); - User::Leave(KErrNotFound); - OstTraceFunctionExit0( CFDF_DEVICEPROXYL_EXIT_DUP1 ); + LEAVEL(KErrNotFound); return NULL; // avoid warning } const RArray& CFdf::GetSupportedLanguagesL(TUint aDeviceId) const { - OstTraceFunctionEntry0( CFDF_GETSUPPORTEDLANGUAGESL_ENTRY ); - OstTrace1( TRACE_NORMAL, CFDF_GETSUPPORTEDLANGUAGESL, "aDeviceId = %d", aDeviceId ); - + LOG_FUNC + LOGTEXT2(_L8("\taDeviceId = %d"), aDeviceId); + CDeviceProxy* deviceProxy = DeviceProxyL(aDeviceId); return deviceProxy->GetSupportedLanguages(); } void CFdf::GetManufacturerStringDescriptorL(TUint aDeviceId, TUint32 aLangId, TName& aString) const { - OstTraceFunctionEntry0( CFDF_GETMANUFACTURERSTRINGDESCRIPTORL_ENTRY ); - OstTraceExt2( TRACE_NORMAL, CFDF_GETMANUFACTURERSTRINGDESCRIPTORL, - "aDeviceId = %u, aLangId = 0x%08x", (TUint32)aDeviceId, aLangId ); - + LOG_FUNC + LOGTEXT3(_L8("\taDeviceId = %d, aLangId = 0x%04x"), aDeviceId, aLangId); + CDeviceProxy* deviceProxy = DeviceProxyL(aDeviceId); deviceProxy->GetManufacturerStringDescriptorL(aLangId, aString); - OstTraceExt1( TRACE_NORMAL, CFDF_GETMANUFACTURERSTRINGDESCRIPTORL_DUP1, "aString = \"%S\"", aString ); - OstTraceFunctionExit0( CFDF_GETMANUFACTURERSTRINGDESCRIPTORL_EXIT ); + LOGTEXT2(_L("\taString = \"%S\""), &aString); } void CFdf::GetProductStringDescriptorL(TUint aDeviceId, TUint32 aLangId, TName& aString) const { - OstTraceFunctionEntry0( CFDF_GETPRODUCTSTRINGDESCRIPTORL_ENTRY ); - OstTraceExt2( TRACE_NORMAL, CFDF_GETPRODUCTSTRINGDESCRIPTORL, - "aDeviceId = %u, aLangId = 0x%04x", (TUint32)aDeviceId, aLangId ); + LOG_FUNC + LOGTEXT3(_L8("\taDeviceId = %d, aLangId = 0x%04x"), aDeviceId, aLangId); CDeviceProxy* deviceProxy = DeviceProxyL(aDeviceId); deviceProxy->GetProductStringDescriptorL(aLangId, aString); - OstTraceExt1( TRACE_NORMAL, CFDF_GETPRODUCTSTRINGDESCRIPTORL_DUP1, "aString = \"%S\"", aString ); - OstTraceFunctionExit0( CFDF_GETPRODUCTSTRINGDESCRIPTORL_EXIT ); + LOGTEXT2(_L("\taString = \"%S\""), &aString); } void CFdf::GetOtgDeviceDescriptorL(TInt aDeviceId, TOtgDescriptor& aDescriptor) const { - OstTraceFunctionEntry0( CFDF_GETOTGDEVICEDESCRIPTORL_ENTRY ); + LOG_FUNC DeviceProxyL(aDeviceId)->GetOtgDescriptorL(aDescriptor); - OstTraceFunctionExit0( CFDF_GETOTGDEVICEDESCRIPTORL_EXIT ); } void CFdf::GetSerialNumberStringDescriptorL(TUint aDeviceId, TUint32 aLangId, TName& aString) const { - OstTraceFunctionEntry0( CFDF_GETSERIALNUMBERSTRINGDESCRIPTORL_ENTRY ); - OstTraceExt2( TRACE_NORMAL, CFDF_GETSERIALNUMBERSTRINGDESCRIPTORL, - "aDeviceId = %u, aLangId = 0x%08x", (TUint32)aDeviceId, aLangId ); + LOG_FUNC + LOGTEXT3(_L8("\taDeviceId = %d, aLangId = 0x%04x"), aDeviceId, aLangId); CDeviceProxy* deviceProxy = DeviceProxyL(aDeviceId); deviceProxy->GetSerialNumberStringDescriptorL(aLangId, aString); - OstTraceExt1( TRACE_NORMAL, CFDF_GETSERIALNUMBERSTRINGDESCRIPTORL_DUP1, "aString = \"%S\"", aString ); - OstTraceFunctionExit0( CFDF_GETSERIALNUMBERSTRINGDESCRIPTORL_EXIT ); + LOGTEXT2(_L("\taString = \"%S\""), &aString); } void CFdf::SearchForInterfaceFunctionDriversL(CDeviceProxy& aDevice, TBool& aAnySuccess, TInt& aCollectedErr) { RArray interfacesNumberArray; CleanupClosePushL(interfacesNumberArray); + + for ( TUint ii = 0 ; ii < iInterfaces.Count() ; ++ii ) { @@ -1337,9 +1172,8 @@ TInt err = aArray.Append(aInterfaceNo); if ( err ) { - aDevice.SetDriverLoadingEventData(EDriverLoadFailure, err); - OstTrace1( TRACE_NORMAL, CFDF_APPENDINTERFACENUMBERTOARRAYL, "Leave with error: %d", err ); - User::Leave(err); + aDevice.SetDriverLoadingEventData(EDriverLoadFailure, err); + LEAVEL(err); } } @@ -1381,15 +1215,15 @@ { if (fdc->MarkedForDeletion()) continue; - OstTraceExt1( TRACE_NORMAL, CFDF_SEARCHFORADEVICEFUNCTIONDRIVERL, "FDC's default_data field = \"%S\"", fdc->DefaultDataField()); - + LOGTEXT2(_L8("\tFDC's default_data field = \"%S\""), &fdc->DefaultDataField()); +#ifdef _DEBUG // having these two together in the debug window is helpful for interactive debugging TBuf8 fd_key; fd_key.Append(fdc->DefaultDataField().Ptr(), fdc->DefaultDataField().Length() > KMaxSearchKeyLength ? KMaxSearchKeyLength : fdc->DefaultDataField().Length()); TBuf8 search_key; search_key.Append(searchKeyString.Ptr(), searchKeyString.Length() > KMaxSearchKeyLength ? KMaxSearchKeyLength : searchKeyString.Length()); TInt version = fdc->Version(); - +#endif if (searchKeyString.CompareF(fdc->DefaultDataField()) == 0) { @@ -1407,9 +1241,9 @@ } foundFdc = ETrue; - OstTrace1( TRACE_NORMAL, CFDF_SEARCHFORADEVICEFUNCTIONDRIVERL_DUP1, "found matching FDC (0x%08x)", fdc ); + LOGTEXT2(_L8("\tfound matching FDC (0x%08x)"), fdc); TInt err = fdc->NewFunction(aDevice.DeviceId(), interfaces, iDD, iCD); - OstTrace1( TRACE_NORMAL, CFDF_SEARCHFORADEVICEFUNCTIONDRIVERL_DUP2, "NewFunction returned %d", err); + LOGTEXT2(_L8("\tNewFunction returned %d"), err); // To correctly determine whether the driver load for the whole // configuration was a complete failure, a partial success or a // complete success, we need to collect any non-KErrNone error @@ -1457,8 +1291,7 @@ // void CFdf::FormatDeviceSearchKey(TDes8& aSearchKey, TDeviceSearchKeys aDeviceSearchKeys) { - OstTraceFunctionEntry0( CFDF_FORMATDEVICESEARCHKEY_ENTRY ); - + LOG_FUNC switch (aDeviceSearchKeys) { case EVendorProductDevice: @@ -1498,13 +1331,12 @@ break; } default: - { - OstTrace1( TRACE_FATAL, CFDF_FORMATDEVICESEARCHKEY, "Invalid aDeviceSearchKeys=%d", aDeviceSearchKeys ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); + { + ASSERT_DEBUG(EFalse); } } - OstTraceExt1( TRACE_NORMAL, CFDF_FORMATDEVICESEARCHKEY_DUP1, "aSearchKey = \"%s\"", aSearchKey ); - OstTraceFunctionExit0( CFDF_FORMATDEVICESEARCHKEY_EXIT ); + + LOGTEXT2(_L8("\taSearchKey = \"%S\""), &aSearchKey); } @@ -1516,8 +1348,7 @@ // void CFdf::FormatInterfaceSearchKey(TDes8& aSearchKey, TInterfaceSearchKeys aSearchKeys, const TInterfaceInfo& aIfInfo) { - OstTraceFunctionEntry0( CFDF_FORMATINTERFACESEARCHKEY_ENTRY ); - + LOG_FUNC switch (aSearchKeys) { case EVendorProductDeviceConfigurationvalueInterfacenumber: @@ -1558,37 +1389,28 @@ } default: { - OstTrace1( TRACE_FATAL, CFDF_FORMATINTERFACESEARCHKEY, "Invalid aSearchKeys=%d", aSearchKeys ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); + ASSERT_DEBUG(EFalse); } } - OstTraceExt1( TRACE_NORMAL, CFDF_FORMATINTERFACESEARCHKEY_DUP1, "aSearchKey = \"%s\"", aSearchKey ); - OstTraceFunctionExit0( CFDF_FORMATINTERFACESEARCHKEY_EXIT ); + LOGTEXT2(_L8("\taSearchKey = \"%S\""), &aSearchKey); } TUint CFdf::UnclaimedInterfaceCount() const { - OstTraceFunctionEntry0( CFDF_UNCLAIMEDINTERFACECOUNT_ENTRY ); - + LOG_FUNC TUint unclaimedInterfaces = 0; for ( TUint ii = 0 ; ii < iInterfaces.Count() ; ++ii ) { TInterfaceInfo* ifInfo = iInterfaces[ii]; - - if(!ifInfo) - { - OstTrace0( TRACE_FATAL, CFDF_UNCLAIMEDINTERFACECOUNT, "Empty ifInfo" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(ifInfo); if ( !ifInfo->iClaimed ) { - OstTrace1( TRACE_NORMAL, CFDF_UNCLAIMEDINTERFACECOUNT_DUP1, "unclaimed interface: ifInfo->iNumber = %d", ifInfo->iNumber ); + LOGTEXT2(_L8("\tunclaimed interface: ifInfo->iNumber = %d"), ifInfo->iNumber); ++unclaimedInterfaces; } } - OstTrace1( TRACE_NORMAL, CFDF_UNCLAIMEDINTERFACECOUNT_DUP2, "unclaimedInterfaces = \"%d\"", unclaimedInterfaces ); - OstTraceFunctionExit0( CFDF_UNCLAIMEDINTERFACECOUNT_EXIT ); + LOGTEXT2(_L("\tunclaimedInterfaces = \"%d\""), unclaimedInterfaces); return unclaimedInterfaces; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/src/fdfserver.cpp --- a/usbmgmt/usbmgr/host/fdf/production/server/src/fdfserver.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/src/fdfserver.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -26,36 +26,32 @@ #include "utils.h" #include "fdfapi.h" #include "fdf.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "fdfserverTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "fdf "); #endif #ifdef _DEBUG -_LIT(KPanicCategory, "fdfsrv"); +PANICCATEGORY("fdfsrv"); #endif - void CFdfServer::NewLC() { - OstTraceFunctionEntry0( CFDFSERVER_NEWLC_ENTRY ); - + LOG_STATIC_FUNC_ENTRY + CFdfServer* self = new(ELeave) CFdfServer; CleanupStack::PushL(self); // StartL is where the kernel checks that there isn't already an instance // of the same server running, so do it before ConstructL. self->StartL(KUsbFdfServerName); self->ConstructL(); - OstTraceFunctionExit0( CFDFSERVER_NEWLC_EXIT ); } CFdfServer::~CFdfServer() { - OstTraceFunctionEntry0( CFDFSERVER_CFDFSERVER_DES_ENTRY ); - + LOG_FUNC delete iFdf; - OstTraceFunctionExit0( CFDFSERVER_CFDFSERVER_DES_EXIT ); } CFdfServer::CFdfServer() @@ -65,25 +61,23 @@ void CFdfServer::ConstructL() { - OstTraceFunctionEntry0( CFDFSERVER_CONSTRUCTL_ENTRY ); - + LOG_FUNC + iFdf = CFdf::NewL(); - OstTraceFunctionExit0( CFDFSERVER_CONSTRUCTL_EXIT ); } CSession2* CFdfServer::NewSessionL(const TVersion& aVersion, const RMessage2& aMessage) const { - OstTraceFunctionEntry0( CFDFSERVER_NEWSESSIONL_ENTRY ); - OstTraceExt3( TRACE_NORMAL, CFDFSERVER_NEWSESSIONL, "aVersion = (%d,%d,%d)", aVersion.iMajor, aVersion.iMinor, aVersion.iBuild ); + LOG_LINE + LOG_FUNC; + LOGTEXT4(_L8("\taVersion = (%d,%d,%d)"), aVersion.iMajor, aVersion.iMinor, aVersion.iBuild); (void)aMessage; // Check if we already have a session open. if ( iSession ) { - OstTrace0( TRACE_NORMAL, CFDFSERVER_NEWSESSIONL_DUP1, - "Session in use"); - User::Leave(KErrInUse); + LEAVEL(KErrInUse); } // In the production system, check the secure ID of the prospective @@ -102,8 +96,7 @@ // check OFF to allow any client to pass and thereby break our // architecture. TInt error = ( aMessage.SecureId() == KUsbsvrSecureId ) ? KErrNone : KErrPermissionDenied; - LEAVEIFERRORL(error,OstTrace0( TRACE_NORMAL, CFDFSERVER_NEWSESSIONL_DUP2, - "SecureId error");); + LEAVEIFERRORL(error); #endif // __TEST_FDF__ #endif // __OVER_DUMMYUSBDI__ @@ -115,41 +108,27 @@ if ( !User::QueryVersionSupported(v, aVersion) ) { - OstTrace0( TRACE_NORMAL, CFDFSERVER_NEWSESSIONL_DUP3, - "Version not supported"); - User::Leave(KErrNotSupported); + LEAVEL(KErrNotSupported); } CFdfServer* ncThis = const_cast(this); ncThis->iSession = new(ELeave) CFdfSession(*iFdf, *ncThis); - if(!ncThis->iFdf) - { - OstTrace0( TRACE_FATAL, CFDFSERVER_NEWSESSIONL_DUP4,"ncThis->iFdf is empty"); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - + ASSERT_DEBUG(ncThis->iFdf); ncThis->iFdf->SetSession(iSession); - OstTrace1( TRACE_NORMAL, CFDFSERVER_NEWSESSIONL_DUP5, "iSession = 0x%08x", iSession ); - OstTraceFunctionExit0( CFDFSERVER_NEWSESSIONL_EXIT ); + LOGTEXT2(_L8("\tiSession = 0x%08x"), iSession); return iSession; } void CFdfServer::SessionClosed() { - OstTraceFunctionEntry0( CFDFSERVER_SESSIONCLOSED_ENTRY ); + LOG_FUNC - if(!iSession) - { - OstTrace0( TRACE_FATAL, CFDFSERVER_SESSIONCLOSED,"Empty iSession" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } - + ASSERT_DEBUG(iSession); iSession = NULL; iFdf->SetSession(NULL); - OstTrace0( TRACE_NORMAL, CFDFSERVER_SESSIONCLOSED_DUP1, "no remaining sessions- shutting down" ); - + LOGTEXT(_L8("\tno remaining sessions- shutting down")); // This returns control to the server boilerplate in main.cpp. This // destroys all the objects, which includes signalling device detachment // to any extant FDCs. @@ -158,5 +137,4 @@ // that's created immediately before calling CActiveScheduler::Start in // main.cpp. CActiveScheduler::Stop(); - OstTraceFunctionExit0( CFDFSERVER_SESSIONCLOSED_EXIT ); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/src/fdfsession.cpp --- a/usbmgmt/usbmgr/host/fdf/production/server/src/fdfsession.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/src/fdfsession.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -28,37 +28,36 @@ #include "fdfapi.h" #include "fdf.h" #include "event.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "fdfsessionTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "fdf "); #endif #ifdef _DEBUG -_LIT(KPanicCategory, "fdfsession"); +PANICCATEGORY("fdfsession"); #endif CFdfSession::CFdfSession(CFdf& aFdf, CFdfServer& aServer) : iFdf(aFdf), iServer(aServer) { - OstTraceFunctionEntry0( CFDFSESSION_CFDFSESSION_CONS_ENTRY ); - - OstTraceFunctionExit0( CFDFSESSION_CFDFSESSION_CONS_EXIT ); + LOG_FUNC } CFdfSession::~CFdfSession() { - OstTraceFunctionEntry0( CFDFSESSION_CFDFSESSION_DES_ENTRY ); - + LOG_LINE + LOG_FUNC; + iServer.SessionClosed(); - OstTraceFunctionExit0( CFDFSESSION_CFDFSESSION_DES_EXIT ); } void CFdfSession::ServiceL(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CFDFSESSION_SERVICEL_ENTRY ); - OstTrace1( TRACE_NORMAL, CFDFSESSION_SERVICEL, "aMessage.Function() = %d", aMessage.Function() ); - + LOG_LINE + LOG_FUNC; + LOGTEXT2(_L8("\taMessage.Function() = %d"), aMessage.Function()); + // Switch on the IPC number and call a 'message handler'. Message handlers // complete aMessage (either with Complete or Panic), or make a note of // the message for later asynchronous completion. @@ -72,22 +71,12 @@ // This is a sync API- check that the message has been completed. // (NB We don't check the converse for async APIs because the message // may have been panicked synchronously.) - if(!(aMessage.Handle() == 0)) - { - OstTrace0( TRACE_FATAL, CFDFSESSION_SERVICEL_DUP1, - "Empty aMessage.Handle" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(aMessage.Handle() == 0); break; case EUsbFdfSrvDisableDriverLoading: DisableDriverLoading(aMessage); - if(!(aMessage.Handle() == 0)) - { - OstTrace0( TRACE_FATAL, CFDFSESSION_SERVICEL_DUP2, - "Empty aMessage.Handle" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(aMessage.Handle() == 0); break; case EUsbFdfSrvNotifyDeviceEvent: @@ -96,12 +85,7 @@ case EUsbFdfSrvNotifyDeviceEventCancel: NotifyDeviceEventCancel(aMessage); - if(!(aMessage.Handle() == 0)) - { - OstTrace0( TRACE_FATAL, CFDFSESSION_SERVICEL_DUP3, - "Empty aMessage.Handle" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(aMessage.Handle() == 0); break; case EUsbFdfSrvNotifyDevmonEvent: @@ -110,71 +94,39 @@ case EUsbFdfSrvNotifyDevmonEventCancel: NotifyDevmonEventCancel(aMessage); - if(!(aMessage.Handle() == 0)) - { - OstTrace0( TRACE_FATAL, CFDFSESSION_SERVICEL_DUP4, - "Empty aMessage.Handle" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(aMessage.Handle() == 0); break; case EUsbFdfSrvGetSingleSupportedLanguageOrNumberOfSupportedLanguages: GetSingleSupportedLanguageOrNumberOfSupportedLanguages(aMessage); - if(!(aMessage.Handle() == 0)) - { - OstTrace0( TRACE_FATAL, CFDFSESSION_SERVICEL_DUP5, - "Empty aMessage.Handle" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(aMessage.Handle() == 0); break; case EUsbFdfSrvGetSupportedLanguages: GetSupportedLanguages(aMessage); - if(!(aMessage.Handle() == 0)) - { - OstTrace0( TRACE_FATAL, CFDFSESSION_SERVICEL_DUP6, - "Empty aMessage.Handle" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(aMessage.Handle() == 0); break; case EUsbFdfSrvGetManufacturerStringDescriptor: GetManufacturerStringDescriptor(aMessage); - if(!(aMessage.Handle() == 0)) - { - OstTrace0( TRACE_FATAL, CFDFSESSION_SERVICEL_DUP7, - "Empty aMessage.Handle" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(aMessage.Handle() == 0); break; case EUsbFdfSrvGetProductStringDescriptor: GetProductStringDescriptor(aMessage); - if(!(aMessage.Handle() == 0)) - { - OstTrace0( TRACE_FATAL, CFDFSESSION_SERVICEL_DUP8, - "Empty aMessage.Handle" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(aMessage.Handle() == 0); break; case EUsbFdfSrvGetOtgDescriptor: GetOtgDeviceDescriptor(aMessage); - if(!(aMessage.Handle() == 0)) - { - OstTrace0( TRACE_FATAL, CFDFSESSION_SERVICEL_DUP9, - "Empty aMessage.Handle" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(aMessage.Handle() == 0); break; // Heap failure testing APIs. case EUsbFdfSrvDbgFailNext: #ifdef _DEBUG { - OstTrace1( TRACE_NORMAL, CFDFSESSION_SERVICEL_DUP10, - "fail next (simulating failure after %d allocation(s))", - aMessage.Int0() ); + LOGTEXT2(_L8("\tfail next (simulating failure after %d allocation(s))"), aMessage.Int0()); if ( aMessage.Int0() == 0 ) { __UHEAP_RESET; @@ -184,7 +136,7 @@ __UHEAP_FAILNEXT(aMessage.Int0()); } } -#endif +#endif // _DEBUG CompleteClient(aMessage, KErrNone); break; @@ -192,70 +144,60 @@ { TInt err = KErrNone; #ifdef _DEBUG - OstTrace0( TRACE_NORMAL, CFDFSESSION_SERVICEL_DUP11, "allocate on the heap" ); + LOGTEXT(_L8("\tallocate on the heap")); TInt* x = NULL; TRAP(err, x = new(ELeave) TInt); delete x; -#endif + +#endif // _DEBUG CompleteClient(aMessage, err); } break; default: - OstTrace0( TRACE_FATAL, CFDFSESSION_SERVICEL_DUP12, - "Invalid message function" ); - aMessage.Panic(KUsbFdfServerName,EBadIpc); - + PANIC_MSG(aMessage, KUsbFdfServerName, EBadIpc); break; } - OstTraceFunctionExit0( CFDFSESSION_SERVICEL_EXIT ); } void CFdfSession::CompleteClient(const RMessage2& aMessage, TInt aError) { - OstTrace1( TRACE_NORMAL, CFDFSESSION_COMPLETECLIENT, "completing client message with %d", aError ); - aMessage.Complete(aError); + LOGTEXT2(_L8("\tcompleting client message with %d"), aError); + aMessage.Complete(aError); } void CFdfSession::EnableDriverLoading(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CFDFSESSION_ENABLEDRIVERLOADING_ENTRY ); + LOG_FUNC iFdf.EnableDriverLoading(); CompleteClient(aMessage, KErrNone); - OstTraceFunctionExit0( CFDFSESSION_ENABLEDRIVERLOADING_EXIT ); } void CFdfSession::DisableDriverLoading(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CFDFSESSION_DISABLEDRIVERLOADING_ENTRY ); - + LOG_FUNC + iFdf.DisableDriverLoading(); CompleteClient(aMessage, KErrNone); - OstTraceFunctionExit0( CFDFSESSION_DISABLEDRIVERLOADING_EXIT ); } TBool CFdfSession::NotifyDeviceEventOutstanding() const { const TBool ret = ( iNotifyDeviceEventMsg.Handle() != 0 ); - OstTrace1( TRACE_NORMAL, CFDFSESSION_NOTIFYDEVICEEVENTOUTSTANDING, - "CFdfSession::NotifyDeviceEventOutstanding returning %d", ret ); - + LOGTEXT2(_L("CFdfSession::NotifyDeviceEventOutstanding returning %d"), ret); return ret; } void CFdfSession::NotifyDeviceEvent(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CFDFSESSION_NOTIFYDEVICEEVENT_ENTRY ); - + LOG_FUNC + if ( iNotifyDeviceEventMsg.Handle() ) { - OstTrace0( TRACE_FATAL, CFDFSESSION_NOTIFYDEVICEEVENT, - "Empty iNotifyDeviceEventMsg" ); - iNotifyDeviceEventMsg.Panic( KUsbFdfServerName, - ENotifyDeviceEventAlreadyOutstanding); + PANIC_MSG(iNotifyDeviceEventMsg, KUsbFdfServerName, ENotifyDeviceEventAlreadyOutstanding); } else { @@ -266,90 +208,68 @@ CompleteDeviceEventNotification(event); } } - OstTraceFunctionExit0( CFDFSESSION_NOTIFYDEVICEEVENT_EXIT ); } void CFdfSession::NotifyDeviceEventCancel(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CFDFSESSION_NOTIFYDEVICEEVENTCANCEL_ENTRY ); + LOG_FUNC if ( iNotifyDeviceEventMsg.Handle() ) { CompleteClient(iNotifyDeviceEventMsg, KErrCancel); } CompleteClient(aMessage, KErrNone); - OstTraceFunctionExit0( CFDFSESSION_NOTIFYDEVICEEVENTCANCEL_EXIT ); } void CFdfSession::DeviceEvent(const TDeviceEvent& aEvent) { - OstTraceFunctionEntry0( CFDFSESSION_DEVICEEVENT_ENTRY ); + LOG_FUNC // This function should only be called if there is a request outstanding. - if(!iNotifyDeviceEventMsg.Handle()) - { - OstTrace0( TRACE_FATAL, CFDFSESSION_DEVICEEVENT, - "iNotifyDeviceEventMsg.Handle" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(iNotifyDeviceEventMsg.Handle()); + CompleteDeviceEventNotification(aEvent); - OstTraceFunctionExit0( CFDFSESSION_DEVICEEVENT_EXIT ); } void CFdfSession::CompleteDeviceEventNotification(const TDeviceEvent& aEvent) { - OstTraceFunctionEntry0( CFDFSESSION_COMPLETEDEVICEEVENTNOTIFICATION_ENTRY ); - + LOG_FUNC TRAPD(err, CompleteDeviceEventNotificationL(aEvent)); if ( err ) { - OstTrace0( TRACE_FATAL, CFDFSESSION_COMPLETEDEVICEEVENTNOTIFICATION, - "CompleteDeviceEventNotificationL error" ); - iNotifyDeviceEventMsg.Panic( KUsbFdfServerName, - EBadNotifyDeviceEventData); + PANIC_MSG(iNotifyDeviceEventMsg, KUsbFdfServerName, EBadNotifyDeviceEventData); } - OstTraceFunctionExit0( CFDFSESSION_COMPLETEDEVICEEVENTNOTIFICATION_EXIT ); } void CFdfSession::CompleteDeviceEventNotificationL(const TDeviceEvent& aEvent) { - OstTraceFunctionEntry0( CFDFSESSION_COMPLETEDEVICEEVENTNOTIFICATIONL_ENTRY ); - + LOG_FUNC + // iNotifyDeviceEventMsg has one IPC arg: a TDeviceEventInformation - if(!iNotifyDeviceEventMsg.Handle()) - { - OstTrace0( TRACE_FATAL, CFDFSESSION_COMPLETEDEVICEEVENTNOTIFICATIONL, - "Empty iNotifyDeviceEventMsg.Handle" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + + ASSERT_DEBUG(iNotifyDeviceEventMsg.Handle()); TPckg info(aEvent.iInfo); iNotifyDeviceEventMsg.WriteL(0, info); CompleteClient(iNotifyDeviceEventMsg, KErrNone); - OstTraceFunctionExit0( CFDFSESSION_COMPLETEDEVICEEVENTNOTIFICATIONL_EXIT ); } TBool CFdfSession::NotifyDevmonEventOutstanding() const { const TBool ret = ( iNotifyDevmonEventMsg.Handle() != 0 ); - OstTrace1( TRACE_NORMAL, CFDFSESSION_NOTIFYDEVMONEVENTOUTSTANDING, - "CFdfSession::NotifyDevmonEventOutstanding returning %d", ret ); + LOGTEXT2(_L("CFdfSession::NotifyDevmonEventOutstanding returning %d"), ret); return ret; } void CFdfSession::NotifyDevmonEvent(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CFDFSESSION_NOTIFYDEVMONEVENT_ENTRY ); - + LOG_FUNC + if ( iNotifyDevmonEventMsg.Handle() ) { - OstTrace0( TRACE_FATAL, CFDFSESSION_NOTIFYDEVMONEVENT, - "iNotifyDevmonEventMsg.Handle should empty" ); - iNotifyDevmonEventMsg.Panic( KUsbFdfServerName, - ENotifyDevmonEventAlreadyOutstanding); - + PANIC_MSG(iNotifyDevmonEventMsg, KUsbFdfServerName, ENotifyDevmonEventAlreadyOutstanding); } else { @@ -360,80 +280,59 @@ CompleteDevmonEventNotification(event); } } - OstTraceFunctionExit0( CFDFSESSION_NOTIFYDEVMONEVENT_EXIT ); } void CFdfSession::NotifyDevmonEventCancel(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CFDFSESSION_NOTIFYDEVMONEVENTCANCEL_ENTRY ); - + LOG_FUNC if ( iNotifyDevmonEventMsg.Handle() ) { CompleteClient(iNotifyDevmonEventMsg, KErrCancel); } CompleteClient(aMessage, KErrNone); - OstTraceFunctionExit0( CFDFSESSION_NOTIFYDEVMONEVENTCANCEL_EXIT ); } void CFdfSession::DevmonEvent(TInt aError) { - OstTraceFunctionEntry0( CFDFSESSION_DEVMONEVENT_ENTRY ); - + LOG_FUNC + // This function should only be called if there is a request outstanding. - - - if(!iNotifyDevmonEventMsg.Handle()) - { - OstTrace0( TRACE_FATAL, CFDFSESSION_DEVMONEVENT, - "Empty iNotifyDevmonEventMsg.Handle()" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + ASSERT_DEBUG(iNotifyDevmonEventMsg.Handle()); CompleteDevmonEventNotification(aError); - OstTraceFunctionExit0( CFDFSESSION_DEVMONEVENT_EXIT ); } void CFdfSession::CompleteDevmonEventNotification(TInt aError) { - OstTraceFunctionEntry0( CFDFSESSION_COMPLETEDEVMONEVENTNOTIFICATION_ENTRY ); - + LOG_FUNC TRAPD(err, CompleteDevmonEventNotificationL(aError)); if ( err ) { - OstTrace0( TRACE_FATAL, CFDFSESSION_COMPLETEDEVMONEVENTNOTIFICATION, - "Bad Notify Devmon Event Data" ); - iNotifyDevmonEventMsg.Panic(KUsbFdfServerName, - EBadNotifyDevmonEventData); + PANIC_MSG(iNotifyDevmonEventMsg, KUsbFdfServerName, EBadNotifyDevmonEventData); } - OstTraceFunctionExit0( CFDFSESSION_COMPLETEDEVMONEVENTNOTIFICATION_EXIT ); } void CFdfSession::CompleteDevmonEventNotificationL(TInt aEvent) { - OstTraceFunctionEntry0( CFDFSESSION_COMPLETEDEVMONEVENTNOTIFICATIONL_ENTRY ); - + LOG_FUNC + // iNotifyDevmonEventMsg has the following IPC args: // 0- TInt& aError - if(!iNotifyDevmonEventMsg.Handle()) - { - OstTrace0( TRACE_FATAL, CFDFSESSION_COMPLETEDEVMONEVENTNOTIFICATIONL, - "Empty iNotifyDevmonEventMsg.Handle" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + + ASSERT_DEBUG(iNotifyDevmonEventMsg.Handle()); TPckg event(aEvent); iNotifyDevmonEventMsg.WriteL(0, event); CompleteClient(iNotifyDevmonEventMsg, KErrNone); - OstTraceFunctionExit0( CFDFSESSION_COMPLETEDEVMONEVENTNOTIFICATIONL_EXIT ); } void CFdfSession::GetSingleSupportedLanguageOrNumberOfSupportedLanguages(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGES_ENTRY ); - + LOG_FUNC + // To save IPC operations between client and server, we make use of the // fact that the majority of devices only support a single language. // The client is expected to have a buffer big enough to hold a single @@ -449,37 +348,30 @@ // them all. TRAPD(err, GetSingleSupportedLanguageOrNumberOfSupportedLanguagesL(aMessage)); CompleteClient(aMessage, err); - OstTraceFunctionExit0( CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGES_EXIT ); } void CFdfSession::GetSingleSupportedLanguageOrNumberOfSupportedLanguagesL(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL_ENTRY ); - + LOG_FUNC + const TUint deviceId = aMessage.Int0(); - OstTrace1( TRACE_NORMAL, CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL, - "deviceId = %d", deviceId ); + LOGTEXT2(_L8("\tdeviceId = %d"), deviceId); const RArray& langIds = iFdf.GetSupportedLanguagesL(deviceId); const TUint count = langIds.Count(); - OstTrace1( TRACE_NORMAL, CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL_DUP1, - "count = %d", count ); + LOGTEXT2(_L8("\tcount = %d"), count); switch ( count ) { case 0: // Nothing to write to the client's address space, complete with - OstTrace0( TRACE_NORMAL, CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL_DUP2, - "Nothing to write to the client's address space" ); - User::Leave(KErrNotFound); - break; + LEAVEL(KErrNotFound); + break; case 1: { // Write the single supported language to the client, complete with // KErrNone (or error of course, if their buffer isn't big enough). TPckg buf(langIds[0]); - TInt err=aMessage.Write(1, buf); - LEAVEIFERRORL(err,OstTrace1( TRACE_ERROR, CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL_DUP3, - "aMessage.Write with err: %d", err );); + LEAVEIFERRORL(aMessage.Write(1, buf)); } break; @@ -490,40 +382,31 @@ // This is the point at which this mechanism depends on // RMessagePtr2::WriteL itself not leaving with KErrTooBig! TPckg buf(count); - TInt error=aMessage.Write(1, buf); - - LEAVEIFERRORL(error, OstTrace1( TRACE_ERROR, CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL_DUP4, - "aMessage.Write with err: %d", error );); - OstTrace0( TRACE_ERROR, CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL_DUP5, - "message error too big" ); - User::Leave(KErrTooBig); + LEAVEIFERRORL(aMessage.Write(1, buf)); + LEAVEL(KErrTooBig); } break; } - OstTraceFunctionExit0( CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL_EXIT ); } void CFdfSession::GetSupportedLanguages(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CFDFSESSION_GETSUPPORTEDLANGUAGES_ENTRY ); - + LOG_FUNC + TRAPD(err, GetSupportedLanguagesL(aMessage)); CompleteClient(aMessage, err); - OstTraceFunctionExit0( CFDFSESSION_GETSUPPORTEDLANGUAGES_EXIT ); } void CFdfSession::GetSupportedLanguagesL(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CFDFSESSION_GETSUPPORTEDLANGUAGESL_ENTRY ); - + LOG_FUNC + const TUint deviceId = aMessage.Int0(); - OstTrace1( TRACE_NORMAL, CFDFSESSION_GETSUPPORTEDLANGUAGESL, - "deviceId = %d", deviceId ); + LOGTEXT2(_L8("\tdeviceId = %d"), deviceId); const RArray& langIds = iFdf.GetSupportedLanguagesL(deviceId); const TUint count = langIds.Count(); - OstTrace1( TRACE_NORMAL, CFDFSESSION_GETSUPPORTEDLANGUAGESL_DUP1, - "count = %d", count ); + LOGTEXT2(_L8("\tcount = %d"), count); RBuf8 buf; buf.CreateL(count * sizeof(TUint)); CleanupClosePushL(buf); @@ -533,50 +416,38 @@ } // Write back to the client. - TInt err=aMessage.Write(1, buf); - LEAVEIFERRORL(err,OstTrace1( TRACE_ERROR, CFDFSESSION_GETSUPPORTEDLANGUAGESL_DUP2, - "aMessage.Write with error: %d", err );); + LEAVEIFERRORL(aMessage.Write(1, buf)); CleanupStack::PopAndDestroy(&buf); - OstTraceFunctionExit0( CFDFSESSION_GETSUPPORTEDLANGUAGESL_EXIT ); } void CFdfSession::GetManufacturerStringDescriptor(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CFDFSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_ENTRY ); - + LOG_FUNC GetStringDescriptor(aMessage, EManufacturer); - OstTraceFunctionExit0( CFDFSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_EXIT ); } void CFdfSession::GetProductStringDescriptor(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CFDFSESSION_GETPRODUCTSTRINGDESCRIPTOR_ENTRY ); - + LOG_FUNC GetStringDescriptor(aMessage, EProduct); - OstTraceFunctionExit0( CFDFSESSION_GETPRODUCTSTRINGDESCRIPTOR_EXIT ); } void CFdfSession::GetStringDescriptor(const RMessage2& aMessage, TStringType aStringType) { - OstTraceFunctionEntry0( CFDFSESSION_GETSTRINGDESCRIPTOR_ENTRY ); - + LOG_FUNC + TRAPD(err, GetStringDescriptorL(aMessage, aStringType)); CompleteClient(aMessage, err); - OstTraceFunctionExit0( CFDFSESSION_GETSTRINGDESCRIPTOR_EXIT ); } void CFdfSession::GetStringDescriptorL(const RMessage2& aMessage, TStringType aStringType) { - OstTraceFunctionEntry0( CFDFSESSION_GETSTRINGDESCRIPTORL_ENTRY ); - - if(!(aStringType == EManufacturer || aStringType == EProduct)) - { - OstTrace0( TRACE_FATAL, CFDFSESSION_GETSTRINGDESCRIPTORL, - "String Type error" ); - __ASSERT_DEBUG(EFalse,User::Panic(KPanicCategory,__LINE__)); - } + LOG_FUNC + + ASSERT_DEBUG(aStringType == EManufacturer || aStringType == EProduct); + TName string; const TUint deviceId = aMessage.Int0(); const TUint langId = aMessage.Int1(); @@ -588,18 +459,13 @@ { iFdf.GetProductStringDescriptorL(deviceId, langId, string); } - OstTraceExt1( TRACE_NORMAL, CFDFSESSION_GETSTRINGDESCRIPTORL_DUP1, - "string = \"%S\"", string ); - - TInt err=aMessage.Write(2, string); - LEAVEIFERRORL(err,OstTrace1( TRACE_ERROR, CFDFSESSION_GETSTRINGDESCRIPTORL_DUP2, - "Message write with err: %d", err );); - OstTraceFunctionExit0( CFDFSESSION_GETSTRINGDESCRIPTORL_EXIT ); + LOGTEXT2(_L("\tstring = \"%S\""), &string); + LEAVEIFERRORL(aMessage.Write(2, string)); } void CFdfSession::GetOtgDeviceDescriptor(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CFDFSESSION_GETOTGDEVICEDESCRIPTOR_ENTRY ); + LOG_FUNC TOtgDescriptor otgDesc; const TUint deviceId = aMessage.Int0(); @@ -610,5 +476,4 @@ err = aMessage.Write(1, buf); } CompleteClient(aMessage, err); - OstTraceFunctionExit0( CFDFSESSION_GETOTGDEVICEDESCRIPTOR_EXIT ); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/src/main.cpp --- a/usbmgmt/usbmgr/host/fdf/production/server/src/main.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/production/server/src/main.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -23,18 +23,16 @@ #include #include "fdfserver.h" #include -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "mainTraces.h" -#endif - static void RunFdfL(); +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "fdf "); +#endif GLDEF_C TInt E32Main() { - OstTrace0( TRACE_NORMAL, FDF_SERVER_SRC_E32MAIN, ">>E32Main" ); + LOGTEXT(_L8(">>E32Main")); TInt ret = KErrNoMemory; @@ -45,17 +43,22 @@ if ( cleanup ) { // Create the logger object +#ifdef __FLOG_ACTIVE + (void)CUsbLog::Connect(); +#endif TRAP(ret, RunFdfL()); +#ifdef __FLOG_ACTIVE + CUsbLog::Close(); +#endif delete cleanup; } __UHEAP_MARKEND; - OstTrace1( TRACE_NORMAL, FDF_SERVER_SRC_E32MAIN_DUP1, - "< -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "utilsTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "fdf "); #endif - +#ifdef __FLOG_ACTIVE #define LOG Log() +#else +#define LOG +#endif //***************************************************************************** // Code relating to the cleanup stack item which 'Remove's a given TUint from @@ -46,8 +49,8 @@ void Remove(TAny* aArrayRemove) { - OstTraceFunctionEntry0( FDF_UTILS_REMOVE_ENTRY ); - + LOG_STATIC_FUNC_ENTRY + TArrayRemove* arrayRemove = reinterpret_cast(aArrayRemove); const TUint count = arrayRemove->iDeviceIds.Count(); @@ -55,12 +58,11 @@ { if ( arrayRemove->iDeviceIds[ii] == arrayRemove->iDeviceId ) { - OstTrace0( TRACE_NORMAL, FDF_UTILS_REMOVE, "::matching device id" ); + LOGTEXT(_L8("\tmatching device id")); arrayRemove->iDeviceIds.Remove(ii); break; } } - OstTraceFunctionExit0( FDF_UTILS_REMOVE_EXIT ); } void CleanupRemovePushL(TArrayRemove& aArrayRemove) diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/host/fdf/production/server/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/production/server/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/host/fdf/production/server/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,620 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_DUMP=0x89 -[GROUP]TRACE_ERROR=0x82 -[GROUP]TRACE_FATAL=0x81 -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_DUMP[0x89]_CDEVICEPROXY_LOG=0x1 -[TRACE]TRACE_DUMP[0x89]_CDEVICEPROXY_LOG_DUP1=0x2 -[TRACE]TRACE_DUMP[0x89]_CDEVICEPROXY_LOG_DUP2=0x3 -[TRACE]TRACE_DUMP[0x89]_CDEVICEPROXY_LOG_DUP3=0x4 -[TRACE]TRACE_DUMP[0x89]_CDEVICEPROXY_LOG_DUP4=0x5 -[TRACE]TRACE_DUMP[0x89]_CDEVICEPROXY_LOG_DUP5=0x6 -[TRACE]TRACE_DUMP[0x89]_CEVENTQUEUE_LOG=0xf -[TRACE]TRACE_DUMP[0x89]_CEVENTQUEUE_LOG_DUP1=0x10 -[TRACE]TRACE_DUMP[0x89]_CFDCPROXY_CONSTRUCTL=0x12 -[TRACE]TRACE_DUMP[0x89]_CFDCPROXY_CONSTRUCTL_DUP1=0x13 -[TRACE]TRACE_DUMP[0x89]_CFDCPROXY_CONSTRUCTL_DUP2=0x14 -[TRACE]TRACE_DUMP[0x89]_CFDCPROXY_CONSTRUCTL_DUP3=0x15 -[TRACE]TRACE_DUMP[0x89]_CFDCPROXY_CONSTRUCTL_DUP4=0x16 -[TRACE]TRACE_DUMP[0x89]_CFDCPROXY_CONSTRUCTL_DUP5=0x17 -[TRACE]TRACE_DUMP[0x89]_CFDCPROXY_CONSTRUCTL_DUP6=0x18 -[TRACE]TRACE_DUMP[0x89]_CFDCPROXY_CONSTRUCTL_DUP7=0x19 -[TRACE]TRACE_DUMP[0x89]_CFDCPROXY_CONSTRUCTL_DUP8=0x1a -[TRACE]TRACE_DUMP[0x89]_CFDCPROXY_LOG=0x1b -[TRACE]TRACE_DUMP[0x89]_CFDCPROXY_LOG_DUP1=0x1c -[TRACE]TRACE_DUMP[0x89]_CFDCPROXY_LOG_DUP2=0x1d -[TRACE]TRACE_DUMP[0x89]_CFDCPROXY_LOG_DUP3=0x1e -[TRACE]TRACE_DUMP[0x89]_CFDCPROXY_LOG_DUP4=0x1f -[TRACE]TRACE_DUMP[0x89]_CFDF_DODRIVERLOADINGL_DUP2=0x38 -[TRACE]TRACE_DUMP[0x89]_CFDF_DODRIVERLOADINGL_DUP3=0x39 -[TRACE]TRACE_DUMP[0x89]_CFDF_DODRIVERLOADINGL_DUP4=0x3a -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP1=0x20 -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP10=0x29 -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP11=0x2a -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP12=0x2b -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP14=0x2d -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP15=0x32 -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP16=0x2e -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP17=0x2f -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP18=0x30 -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP19=0x31 -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP2=0x21 -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP20=0x33 -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP24=0x34 -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP25=0x35 -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP27=0x36 -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP3=0x22 -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP35=0x37 -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP4=0x23 -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP5=0x24 -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP6=0x25 -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP7=0x26 -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP8=0x27 -[TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP9=0x28 -[TRACE]TRACE_DUMP[0x89]_CFDF_PARSEL=0x3b -[TRACE]TRACE_DUMP[0x89]_CFDF_PARSEL_DUP1=0x3c -[TRACE]TRACE_DUMP[0x89]_CFDF_PARSEL_DUP10=0x45 -[TRACE]TRACE_DUMP[0x89]_CFDF_PARSEL_DUP11=0x46 -[TRACE]TRACE_DUMP[0x89]_CFDF_PARSEL_DUP12=0x47 -[TRACE]TRACE_DUMP[0x89]_CFDF_PARSEL_DUP2=0x3d -[TRACE]TRACE_DUMP[0x89]_CFDF_PARSEL_DUP3=0x3e -[TRACE]TRACE_DUMP[0x89]_CFDF_PARSEL_DUP4=0x3f -[TRACE]TRACE_DUMP[0x89]_CFDF_PARSEL_DUP5=0x40 -[TRACE]TRACE_DUMP[0x89]_CFDF_PARSEL_DUP6=0x41 -[TRACE]TRACE_DUMP[0x89]_CFDF_PARSEL_DUP7=0x42 -[TRACE]TRACE_DUMP[0x89]_CFDF_PARSEL_DUP8=0x43 -[TRACE]TRACE_DUMP[0x89]_CFDF_PARSEL_DUP9=0x44 -[TRACE]TRACE_DUMP[0x89]_DUP1_CEVENTQUEUE_LOG_DUP2=0x11 -[TRACE]TRACE_DUMP[0x89]_TDEVICEEVENT_LOG=0x7 -[TRACE]TRACE_DUMP[0x89]_TDEVICEEVENT_LOG_DUP1=0x8 -[TRACE]TRACE_DUMP[0x89]_TDEVICEEVENT_LOG_DUP2=0x9 -[TRACE]TRACE_DUMP[0x89]_TDEVICEEVENT_LOG_DUP3=0xa -[TRACE]TRACE_DUMP[0x89]_TDEVICEEVENT_LOG_DUP4=0xb -[TRACE]TRACE_DUMP[0x89]_TDEVICEEVENT_LOG_DUP5=0xc -[TRACE]TRACE_DUMP[0x89]_TDEVICEEVENT_LOG_DUP6=0xd -[TRACE]TRACE_DUMP[0x89]_TDEVICEEVENT_LOG_DUP7=0xe -[TRACE]TRACE_ERROR[0x82]_CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP6=0x6 -[TRACE]TRACE_ERROR[0x82]_CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP7=0x7 -[TRACE]TRACE_ERROR[0x82]_CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL_DUP3=0x1 -[TRACE]TRACE_ERROR[0x82]_CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL_DUP4=0x2 -[TRACE]TRACE_ERROR[0x82]_CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL_DUP5=0x3 -[TRACE]TRACE_ERROR[0x82]_CFDFSESSION_GETSTRINGDESCRIPTORL_DUP2=0x5 -[TRACE]TRACE_ERROR[0x82]_CFDFSESSION_GETSUPPORTEDLANGUAGESL_DUP2=0x4 -[TRACE]TRACE_FATAL[0x81]_CACTIVEWAITFORECOMEVENT_RUNERROR=0x4b -[TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_GETATTACHMENTEVENTOBJECT_DUP1=0xd -[TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_GETCONFIGURATIONDESCRIPTOR=0x17 -[TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_GETDETACHMENTEVENTOBJECT=0xf -[TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_GETDEVICEDESCRIPTOR_DUP1=0x7 -[TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_GETDRIVERLOADINGEVENTOBJECT=0xe -[TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_GETSTRINGDESCRIPTORFROMUSBDL_DUP2=0xa -[TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_GETTOKENFORINTERFACE_DUP1=0x9 -[TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP1=0x1 -[TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP2=0x3 -[TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP3=0x4 -[TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP4=0x5 -[TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_READSTRINGDESCRIPTORSL_DUP5=0x6 -[TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_SETDRIVERLOADINGEVENTDATA_DUP1=0xc -[TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_SUSPEND_DUP1=0xb -[TRACE]TRACE_FATAL[0x81]_CEVENTQUEUE_ADDDEVMONEVENT_DUP1=0x4d -[TRACE]TRACE_FATAL[0x81]_CEVENTQUEUE_ADDDEVMONEVENT_DUP2=0x4e -[TRACE]TRACE_FATAL[0x81]_CEVENTQUEUE_GETDEVICEEVENT=0x10 -[TRACE]TRACE_FATAL[0x81]_CEVENTQUEUE_GETDEVMONEVENT=0x4c -[TRACE]TRACE_FATAL[0x81]_CFDCPROXY_CFDCPROXY_DUP2=0x11 -[TRACE]TRACE_FATAL[0x81]_CFDCPROXY_CFDCPROXY_DUP3=0x12 -[TRACE]TRACE_FATAL[0x81]_CFDCPROXY_DEVICEDETACHED_DUP1=0x26 -[TRACE]TRACE_FATAL[0x81]_CFDCPROXY_INVARIANT=0x27 -[TRACE]TRACE_FATAL[0x81]_CFDCPROXY_INVARIANT_DUP1=0x28 -[TRACE]TRACE_FATAL[0x81]_CFDCPROXY_MFPOTOKENFORINTERFACE=0x4f -[TRACE]TRACE_FATAL[0x81]_CFDCPROXY_NEWFUNCTIONL_DUP10=0x1c -[TRACE]TRACE_FATAL[0x81]_CFDCPROXY_NEWFUNCTIONL_DUP3=0x18 -[TRACE]TRACE_FATAL[0x81]_CFDCPROXY_NEWFUNCTIONL_DUP6=0x19 -[TRACE]TRACE_FATAL[0x81]_CFDCPROXY_NEWFUNCTIONL_DUP7=0x1a -[TRACE]TRACE_FATAL[0x81]_CFDCPROXY_NEWFUNCTIONL_DUP9=0x1b -[TRACE]TRACE_FATAL[0x81]_CFDFSERVER_NEWSESSIONL_DUP4=0x3e -[TRACE]TRACE_FATAL[0x81]_CFDFSERVER_SESSIONCLOSED=0x3f -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_COMPLETEDEVICEEVENTNOTIFICATION=0x43 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_COMPLETEDEVICEEVENTNOTIFICATIONL=0x44 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_COMPLETEDEVMONEVENTNOTIFICATION=0x47 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_COMPLETEDEVMONEVENTNOTIFICATIONL=0x48 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_DEVICEEVENT=0x42 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_DEVMONEVENT=0x46 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_GETSTRINGDESCRIPTORL=0x49 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_NOTIFYDEVICEEVENT=0x41 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_NOTIFYDEVMONEVENT=0x45 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP1=0x50 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP12=0x40 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP2=0x51 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP3=0x52 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP4=0x53 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP5=0x54 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP6=0x55 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP7=0x56 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP8=0x57 -[TRACE]TRACE_FATAL[0x81]_CFDFSESSION_SERVICEL_DUP9=0x58 -[TRACE]TRACE_FATAL[0x81]_CFDF_CFDF_DUP3=0x29 -[TRACE]TRACE_FATAL[0x81]_CFDF_DODRIVERLOADING=0x24 -[TRACE]TRACE_FATAL[0x81]_CFDF_DODRIVERLOADINGL_DUP5=0x2f -[TRACE]TRACE_FATAL[0x81]_CFDF_DODRIVERLOADING_DUP1=0x25 -[TRACE]TRACE_FATAL[0x81]_CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_DUP7=0x31 -[TRACE]TRACE_FATAL[0x81]_CFDF_FINDDRIVERSFORINTERFACESUSINGSPECIFICKEYL=0x30 -[TRACE]TRACE_FATAL[0x81]_CFDF_FORMATDEVICESEARCHKEY=0x3d -[TRACE]TRACE_FATAL[0x81]_CFDF_FORMATINTERFACESEARCHKEY=0x3b -[TRACE]TRACE_FATAL[0x81]_CFDF_GETDEVICEEVENT=0x2a -[TRACE]TRACE_FATAL[0x81]_CFDF_GETDEVMONEVENT=0x2b -[TRACE]TRACE_FATAL[0x81]_CFDF_HANDLEDEVICEATTACHMENTL_DUP22=0x1d -[TRACE]TRACE_FATAL[0x81]_CFDF_HANDLEDEVICEATTACHMENTL_DUP23=0x1e -[TRACE]TRACE_FATAL[0x81]_CFDF_HANDLEDEVICEATTACHMENTL_DUP26=0x1f -[TRACE]TRACE_FATAL[0x81]_CFDF_HANDLEDEVICEATTACHMENTL_DUP29=0x20 -[TRACE]TRACE_FATAL[0x81]_CFDF_HANDLEDEVICEATTACHMENTL_DUP30=0x21 -[TRACE]TRACE_FATAL[0x81]_CFDF_HANDLEDEVICEATTACHMENTL_DUP33=0x22 -[TRACE]TRACE_FATAL[0x81]_CFDF_HANDLEDEVICEATTACHMENTL_DUP34=0x23 -[TRACE]TRACE_FATAL[0x81]_CFDF_HANDLEDEVICEATTACHMENT_DUP1=0x2d -[TRACE]TRACE_FATAL[0x81]_CFDF_HANDLEDEVICEATTACHMENT_DUP2=0x2e -[TRACE]TRACE_FATAL[0x81]_CFDF_HANDLEDEVICEDETACHMENT_DUP2=0x32 -[TRACE]TRACE_FATAL[0x81]_CFDF_HANDLEDEVICEDETACHMENT_DUP3=0x33 -[TRACE]TRACE_FATAL[0x81]_CFDF_HANDLEDEVMONEVENT_DUP1=0x4a -[TRACE]TRACE_FATAL[0x81]_CFDF_MBEOBUSEVENT_DUP3=0x2c -[TRACE]TRACE_FATAL[0x81]_CFDF_TOKENFORINTERFACE_DUP1=0x34 -[TRACE]TRACE_FATAL[0x81]_CFDF_TOKENFORINTERFACE_DUP2=0x35 -[TRACE]TRACE_FATAL[0x81]_CFDF_TOKENFORINTERFACE_DUP3=0x36 -[TRACE]TRACE_FATAL[0x81]_CFDF_TOKENFORINTERFACE_DUP4=0x37 -[TRACE]TRACE_FATAL[0x81]_CFDF_TOKENFORINTERFACE_DUP5=0x38 -[TRACE]TRACE_FATAL[0x81]_CFDF_UNCLAIMEDINTERFACECOUNT=0x3c -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORBUSEVENT_CACTIVEWAITFORBUSEVENT_CONS_ENTRY=0x90 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORBUSEVENT_CACTIVEWAITFORBUSEVENT_CONS_EXIT=0x91 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORBUSEVENT_CACTIVEWAITFORBUSEVENT_DES_ENTRY=0x92 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORBUSEVENT_CACTIVEWAITFORBUSEVENT_DES_EXIT=0x93 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORBUSEVENT_DOCANCEL_ENTRY=0x9 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORBUSEVENT_DOCANCEL_EXIT=0xa -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORBUSEVENT_RUNL_ENTRY=0x7 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORBUSEVENT_RUNL_EXIT=0x8 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORBUSEVENT_WAIT_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORBUSEVENT_WAIT_EXIT=0x6 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORECOMEVENT_CACTIVEWAITFORECOMEVENT_CONS_ENTRY=0x94 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORECOMEVENT_CACTIVEWAITFORECOMEVENT_CONS_EXIT=0x95 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORECOMEVENT_CACTIVEWAITFORECOMEVENT_DES_ENTRY=0x96 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORECOMEVENT_CACTIVEWAITFORECOMEVENT_DES_EXIT=0x97 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORECOMEVENT_DOCANCEL_ENTRY=0x15 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORECOMEVENT_DOCANCEL_EXIT=0x16 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORECOMEVENT_RUNERROR_ENTRY=0x17 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORECOMEVENT_RUNERROR_EXIT=0x18 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORECOMEVENT_RUNL_ENTRY=0x13 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORECOMEVENT_RUNL_EXIT=0x14 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORECOMEVENT_WAIT_ENTRY=0x11 -[TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORECOMEVENT_WAIT_EXIT=0x12 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_CDEVICEPROXY_CONS_ENTRY=0x111 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_CDEVICEPROXY_DES_ENTRY=0x98 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_CDEVICEPROXY_DES_EXIT=0x99 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_CONSTRUCTL_ENTRY=0x1c -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_CONSTRUCTL_EXIT=0x1d -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETATTACHMENTEVENTOBJECT_ENTRY=0x41 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETATTACHMENTEVENTOBJECT_EXIT=0x42 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETCONFIGURATIONDESCRIPTOR_ENTRY=0x26 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETCONFIGURATIONDESCRIPTOR_EXIT=0x27 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETDETACHMENTEVENTOBJECT_ENTRY=0x45 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETDETACHMENTEVENTOBJECT_EXIT=0x46 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETDEVICEDESCRIPTOR_ENTRY=0x24 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETDEVICEDESCRIPTOR_EXIT=0x25 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETDRIVERLOADINGEVENTOBJECT_ENTRY=0x43 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETDRIVERLOADINGEVENTOBJECT_EXIT=0x44 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETMANUFACTURERSTRINGDESCRIPTORL_ENTRY=0x2b -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETMANUFACTURERSTRINGDESCRIPTORL_EXIT=0x2c -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETOTGDESCRIPTORL_ENTRY=0x31 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETOTGDESCRIPTORL_EXIT=0x32 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETPRODUCTSTRINGDESCRIPTORL_ENTRY=0x2d -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETPRODUCTSTRINGDESCRIPTORL_EXIT=0x2e -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETSERIALNUMBERSTRINGDESCRIPTORL_ENTRY=0x2f -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETSERIALNUMBERSTRINGDESCRIPTORL_EXIT=0x30 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETSTRINGDESCRIPTORFROMCACHEL_ENTRY=0x3b -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETSTRINGDESCRIPTORFROMCACHEL_EXIT=0x3c -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETSTRINGDESCRIPTORFROMUSBDL_ENTRY=0x33 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETSTRINGDESCRIPTORFROMUSBDL_EXIT=0x34 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETSUPPORTEDLANGUAGES_ENTRY=0x2a -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETTOKENFORINTERFACE_ENTRY=0x28 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_GETTOKENFORINTERFACE_EXIT=0x29 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_LOG_DUP6=0x36 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_LOG_DUP7=0x37 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_LOG_DUP8=0x38 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_LOG_DUP9=0x39 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_LOG_ENTRY=0x35 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_LOG_EXIT=0x3a -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_NEWL_ENTRY=0x19 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_NEWL_EXIT=0x1a -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_POPULATESTRINGDESCRIPTORSL_ENTRY=0x20 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_POPULATESTRINGDESCRIPTORSL_EXIT=0x21 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_READSTRINGDESCRIPTORSL_ENTRY=0x1e -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_READSTRINGDESCRIPTORSL_EXIT=0x1f -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_SETDRIVERLOADINGEVENTDATA_ENTRY=0x3f -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_SETDRIVERLOADINGEVENTDATA_EXIT=0x40 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_SUSPEND_ENTRY=0x3d -[TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_SUSPEND_EXIT=0x3e -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_ADDDEVICEEVENT_ENTRY=0x51 -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_ADDDEVICEEVENT_EXIT=0x52 -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_ADDDEVMONEVENT_ENTRY=0x59 -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_ADDDEVMONEVENT_EXIT=0x5a -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_ATTACHMENTFAILURE_ENTRY=0x4e -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_ATTACHMENTFAILURE_EXIT=0x50 -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_CEVENTQUEUE_CONS_ENTRY=0x9c -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_CEVENTQUEUE_DES_ENTRY=0x9d -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_CEVENTQUEUE_DES_EXIT=0x9e -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_GETDEVICEEVENT_ENTRY=0x55 -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_GETDEVICEEVENT_EXIT=0x56 -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_GETDEVMONEVENT_ENTRY=0x57 -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_GETDEVMONEVENT_EXIT=0x58 -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_LOG_ENTRY=0x5b -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_LOG_EXIT=0x5c -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_NEWL_ENTRY=0x49 -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_NEWL_EXIT=0x4a -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_POKESESSION_ENTRY=0x53 -[TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_POKESESSION_EXIT=0x54 -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_CFDCPROXY_CONS_ENTRY=0x9f -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_CFDCPROXY_DES_ENTRY=0xa0 -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_CFDCPROXY_DES_EXIT=0xa1 -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_CHECKDEVICEIDL_ENTRY=0x72 -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_CHECKDEVICEIDL_EXIT=0x73 -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_CONSTRUCTL_ENTRY=0x5f -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_CONSTRUCTL_EXIT=0x60 -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_DEVICEDETACHED_ENTRY=0x68 -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_DEVICEDETACHED_EXIT=0x69 -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_MFPOGETMANUFACTURERSTRINGDESCRIPTOR_ENTRY=0x6c -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_MFPOGETMANUFACTURERSTRINGDESCRIPTOR_EXIT=0x6d -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_MFPOGETPRODUCTSTRINGDESCRIPTOR_ENTRY=0x6e -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_MFPOGETPRODUCTSTRINGDESCRIPTOR_EXIT=0x6f -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_MFPOGETSERIALNUMBERSTRINGDESCRIPTOR_ENTRY=0x70 -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_MFPOGETSERIALNUMBERSTRINGDESCRIPTOR_EXIT=0x71 -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_MFPOGETSUPPORTEDLANGUAGESL_ENTRY=0x6b -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_MFPOTOKENFORINTERFACE_ENTRY=0x6a -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_NEWFUNCTIONL_ENTRY=0x66 -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_NEWFUNCTIONL_EXIT=0x67 -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_NEWFUNCTION_ENTRY=0x64 -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_NEWFUNCTION_EXIT=0x65 -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_NEWL_ENTRY=0x5d -[TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_NEWL_EXIT=0x5e -[TRACE]TRACE_FLOW[0x8A]_CFDFSERVER_CFDFSERVER_DES_ENTRY=0xc7 -[TRACE]TRACE_FLOW[0x8A]_CFDFSERVER_CFDFSERVER_DES_EXIT=0xc8 -[TRACE]TRACE_FLOW[0x8A]_CFDFSERVER_CONSTRUCTL_ENTRY=0xc9 -[TRACE]TRACE_FLOW[0x8A]_CFDFSERVER_CONSTRUCTL_EXIT=0xca -[TRACE]TRACE_FLOW[0x8A]_CFDFSERVER_NEWLC_ENTRY=0xc5 -[TRACE]TRACE_FLOW[0x8A]_CFDFSERVER_NEWLC_EXIT=0xc6 -[TRACE]TRACE_FLOW[0x8A]_CFDFSERVER_NEWSESSIONL_ENTRY=0xcb -[TRACE]TRACE_FLOW[0x8A]_CFDFSERVER_NEWSESSIONL_EXIT=0xcc -[TRACE]TRACE_FLOW[0x8A]_CFDFSERVER_SESSIONCLOSED_ENTRY=0xcd -[TRACE]TRACE_FLOW[0x8A]_CFDFSERVER_SESSIONCLOSED_EXIT=0xce -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_CFDFSESSION_CONS_ENTRY=0xcf -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_CFDFSESSION_CONS_EXIT=0xd0 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_CFDFSESSION_DES_ENTRY=0xd1 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_CFDFSESSION_DES_EXIT=0xd2 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_COMPLETEDEVICEEVENTNOTIFICATIONL_ENTRY=0xf1 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_COMPLETEDEVICEEVENTNOTIFICATIONL_EXIT=0xf2 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_COMPLETEDEVICEEVENTNOTIFICATION_ENTRY=0xef -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_COMPLETEDEVICEEVENTNOTIFICATION_EXIT=0xf0 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_COMPLETEDEVMONEVENTNOTIFICATIONL_ENTRY=0xfb -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_COMPLETEDEVMONEVENTNOTIFICATIONL_EXIT=0xfc -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_COMPLETEDEVMONEVENTNOTIFICATION_ENTRY=0xf9 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_COMPLETEDEVMONEVENTNOTIFICATION_EXIT=0xfa -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_DEVICEEVENT_ENTRY=0xdd -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_DEVICEEVENT_EXIT=0xde -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_DEVMONEVENT_ENTRY=0xf7 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_DEVMONEVENT_EXIT=0xf8 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_DISABLEDRIVERLOADING_ENTRY=0xd7 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_DISABLEDRIVERLOADING_EXIT=0xd8 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_ENABLEDRIVERLOADING_ENTRY=0xd5 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_ENABLEDRIVERLOADING_EXIT=0xd6 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_ENTRY=0x105 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_EXIT=0x106 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETOTGDEVICEDESCRIPTOR_ENTRY=0x10d -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETOTGDEVICEDESCRIPTOR_EXIT=0x10e -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETPRODUCTSTRINGDESCRIPTOR_ENTRY=0x107 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETPRODUCTSTRINGDESCRIPTOR_EXIT=0x108 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL_ENTRY=0xff -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL_EXIT=0x100 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGES_ENTRY=0xfd -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGES_EXIT=0xfe -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSTRINGDESCRIPTORL_ENTRY=0x10b -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSTRINGDESCRIPTORL_EXIT=0x10c -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSTRINGDESCRIPTOR_ENTRY=0x109 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSTRINGDESCRIPTOR_EXIT=0x10a -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSUPPORTEDLANGUAGESL_ENTRY=0x103 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSUPPORTEDLANGUAGESL_EXIT=0x104 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSUPPORTEDLANGUAGES_ENTRY=0x101 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSUPPORTEDLANGUAGES_EXIT=0x102 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_NOTIFYDEVICEEVENTCANCEL_ENTRY=0xdb -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_NOTIFYDEVICEEVENTCANCEL_EXIT=0xdc -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_NOTIFYDEVICEEVENT_ENTRY=0xd9 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_NOTIFYDEVICEEVENT_EXIT=0xda -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_NOTIFYDEVMONEVENTCANCEL_ENTRY=0xf5 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_NOTIFYDEVMONEVENTCANCEL_EXIT=0xf6 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_NOTIFYDEVMONEVENT_ENTRY=0xf3 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_NOTIFYDEVMONEVENT_EXIT=0xf4 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_SERVICEL_ENTRY=0xd3 -[TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_SERVICEL_EXIT=0xd4 -[TRACE]TRACE_FLOW[0x8A]_CFDF_CFDF_CONS_ENTRY=0xa2 -[TRACE]TRACE_FLOW[0x8A]_CFDF_CFDF_DES_ENTRY=0xa3 -[TRACE]TRACE_FLOW[0x8A]_CFDF_CFDF_DES_EXIT=0xa4 -[TRACE]TRACE_FLOW[0x8A]_CFDF_CONSTRUCTL_ENTRY=0x79 -[TRACE]TRACE_FLOW[0x8A]_CFDF_CONSTRUCTL_EXIT=0x7a -[TRACE]TRACE_FLOW[0x8A]_CFDF_CREATEFUNCTIONDRIVERPROXIESL_ENTRY=0x7b -[TRACE]TRACE_FLOW[0x8A]_CFDF_CREATEFUNCTIONDRIVERPROXIESL_EXIT=0x7c -[TRACE]TRACE_FLOW[0x8A]_CFDF_DEVICEPROXYL_ENTRY=0xb3 -[TRACE]TRACE_FLOW[0x8A]_CFDF_DEVICEPROXYL_EXIT=0xb4 -[TRACE]TRACE_FLOW[0x8A]_CFDF_DEVICEPROXYL_EXIT_DUP1=0xb5 -[TRACE]TRACE_FLOW[0x8A]_CFDF_DISABLEDRIVERLOADING_ENTRY=0x80 -[TRACE]TRACE_FLOW[0x8A]_CFDF_DODRIVERLOADINGL_ENTRY=0x8e -[TRACE]TRACE_FLOW[0x8A]_CFDF_DODRIVERLOADINGL_EXIT=0x8f -[TRACE]TRACE_FLOW[0x8A]_CFDF_DODRIVERLOADING_ENTRY=0x8c -[TRACE]TRACE_FLOW[0x8A]_CFDF_DODRIVERLOADING_EXIT=0x8d -[TRACE]TRACE_FLOW[0x8A]_CFDF_ENABLEDRIVERLOADING_ENTRY=0x7f -[TRACE]TRACE_FLOW[0x8A]_CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_ENTRY=0xa9 -[TRACE]TRACE_FLOW[0x8A]_CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_EXIT=0xaa -[TRACE]TRACE_FLOW[0x8A]_CFDF_FINDDRIVERSFORINTERFACESUSINGSPECIFICKEYL_ENTRY=0xa7 -[TRACE]TRACE_FLOW[0x8A]_CFDF_FINDDRIVERSFORINTERFACESUSINGSPECIFICKEYL_EXIT=0xa8 -[TRACE]TRACE_FLOW[0x8A]_CFDF_FORMATDEVICESEARCHKEY_ENTRY=0xbf -[TRACE]TRACE_FLOW[0x8A]_CFDF_FORMATDEVICESEARCHKEY_EXIT=0xc0 -[TRACE]TRACE_FLOW[0x8A]_CFDF_FORMATINTERFACESEARCHKEY_ENTRY=0xc1 -[TRACE]TRACE_FLOW[0x8A]_CFDF_FORMATINTERFACESEARCHKEY_EXIT=0xc2 -[TRACE]TRACE_FLOW[0x8A]_CFDF_GETDEVICEEVENT_ENTRY=0x82 -[TRACE]TRACE_FLOW[0x8A]_CFDF_GETDEVMONEVENT_ENTRY=0x83 -[TRACE]TRACE_FLOW[0x8A]_CFDF_GETMANUFACTURERSTRINGDESCRIPTORL_ENTRY=0xb7 -[TRACE]TRACE_FLOW[0x8A]_CFDF_GETMANUFACTURERSTRINGDESCRIPTORL_EXIT=0xb8 -[TRACE]TRACE_FLOW[0x8A]_CFDF_GETOTGDEVICEDESCRIPTORL_ENTRY=0xbb -[TRACE]TRACE_FLOW[0x8A]_CFDF_GETOTGDEVICEDESCRIPTORL_EXIT=0xbc -[TRACE]TRACE_FLOW[0x8A]_CFDF_GETPRODUCTSTRINGDESCRIPTORL_ENTRY=0xb9 -[TRACE]TRACE_FLOW[0x8A]_CFDF_GETPRODUCTSTRINGDESCRIPTORL_EXIT=0xba -[TRACE]TRACE_FLOW[0x8A]_CFDF_GETSERIALNUMBERSTRINGDESCRIPTORL_ENTRY=0xbd -[TRACE]TRACE_FLOW[0x8A]_CFDF_GETSERIALNUMBERSTRINGDESCRIPTORL_EXIT=0xbe -[TRACE]TRACE_FLOW[0x8A]_CFDF_GETSUPPORTEDLANGUAGESL_ENTRY=0xb6 -[TRACE]TRACE_FLOW[0x8A]_CFDF_HANDLEDEVICEATTACHMENTL_ENTRY=0x8a -[TRACE]TRACE_FLOW[0x8A]_CFDF_HANDLEDEVICEATTACHMENTL_EXIT=0x8b -[TRACE]TRACE_FLOW[0x8A]_CFDF_HANDLEDEVICEATTACHMENT_ENTRY=0x88 -[TRACE]TRACE_FLOW[0x8A]_CFDF_HANDLEDEVICEATTACHMENT_EXIT=0x89 -[TRACE]TRACE_FLOW[0x8A]_CFDF_HANDLEDEVICEDETACHMENT_ENTRY=0xab -[TRACE]TRACE_FLOW[0x8A]_CFDF_HANDLEDEVICEDETACHMENT_EXIT=0xac -[TRACE]TRACE_FLOW[0x8A]_CFDF_HANDLEDEVMONEVENT_ENTRY=0xad -[TRACE]TRACE_FLOW[0x8A]_CFDF_HANDLEDEVMONEVENT_EXIT=0xae -[TRACE]TRACE_FLOW[0x8A]_CFDF_HANDLEECOMEVENTRECEIVEDL_ENTRY=0x84 -[TRACE]TRACE_FLOW[0x8A]_CFDF_HANDLEECOMEVENTRECEIVEDL_EXIT=0x85 -[TRACE]TRACE_FLOW[0x8A]_CFDF_MBEOBUSEVENT_ENTRY=0x86 -[TRACE]TRACE_FLOW[0x8A]_CFDF_MBEOBUSEVENT_EXIT=0x87 -[TRACE]TRACE_FLOW[0x8A]_CFDF_NEWL_ENTRY=0x76 -[TRACE]TRACE_FLOW[0x8A]_CFDF_NEWL_EXIT=0x77 -[TRACE]TRACE_FLOW[0x8A]_CFDF_PARSEL_ENTRY=0xa5 -[TRACE]TRACE_FLOW[0x8A]_CFDF_PARSEL_EXIT=0xa6 -[TRACE]TRACE_FLOW[0x8A]_CFDF_SETSESSION_ENTRY=0x81 -[TRACE]TRACE_FLOW[0x8A]_CFDF_TELLFDCSOFDEVICEDETACHMENT_ENTRY=0xaf -[TRACE]TRACE_FLOW[0x8A]_CFDF_TELLFDCSOFDEVICEDETACHMENT_EXIT=0xb0 -[TRACE]TRACE_FLOW[0x8A]_CFDF_TINTERFACEINFO_NEWL_ENTRY=0x74 -[TRACE]TRACE_FLOW[0x8A]_CFDF_TINTERFACEINFO_NEWL_EXIT=0x75 -[TRACE]TRACE_FLOW[0x8A]_CFDF_TOKENFORINTERFACE_ENTRY=0xb1 -[TRACE]TRACE_FLOW[0x8A]_CFDF_TOKENFORINTERFACE_EXIT=0xb2 -[TRACE]TRACE_FLOW[0x8A]_CFDF_UNCLAIMEDINTERFACECOUNT_ENTRY=0xc3 -[TRACE]TRACE_FLOW[0x8A]_CFDF_UNCLAIMEDINTERFACECOUNT_EXIT=0xc4 -[TRACE]TRACE_FLOW[0x8A]_FDF_UTILS_REMOVE_ENTRY=0x10f -[TRACE]TRACE_FLOW[0x8A]_FDF_UTILS_REMOVE_EXIT=0x110 -[TRACE]TRACE_FLOW[0x8A]_TDEVICEEVENT_TDEVICEEVENT_CONS_ENTRY=0x9a -[TRACE]TRACE_FLOW[0x8A]_TDEVICEEVENT_TDEVICEEVENT_DES_ENTRY=0x9b -[TRACE]TRACE_NORMAL[0x86]_CACTIVEWAITFORBUSEVENT_RUNL=0x1 -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_CONSTRUCTL=0x6d -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_GETATTACHMENTEVENTOBJECT=0x11 -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_GETCONFIGURATIONDESCRIPTOR_DUP1=0x2a -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_GETDETACHMENTEVENTOBJECT_DUP1=0x14 -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_GETDEVICEDESCRIPTOR=0x4 -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_GETDRIVERLOADINGEVENTOBJECT_DUP1=0x13 -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_GETOTGDESCRIPTORL=0x7 -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_GETSTRINGDESCRIPTORFROMCACHEL=0x9 -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_GETSTRINGDESCRIPTORFROMCACHEL_DUP1=0xd -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_GETSTRINGDESCRIPTORFROMCACHEL_DUP2=0xe -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_GETSTRINGDESCRIPTORFROMUSBDL=0x8 -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_GETSTRINGDESCRIPTORFROMUSBDL_DUP1=0xc -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_GETSTRINGDESCRIPTORFROMUSBDL_DUP3=0x12 -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_GETSTRINGDESCRIPTORFROMUSBDL_DUP4=0x60 -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_GETTOKENFORINTERFACE=0x6 -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_POPULATESTRINGDESCRIPTORSL=0xb -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_POPULATESTRINGDESCRIPTORSL_DUP1=0x6c -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_READSTRINGDESCRIPTORSL=0x3 -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_SETDRIVERLOADINGEVENTDATA=0x10 -[TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_SUSPEND=0xf -[TRACE]TRACE_NORMAL[0x86]_CEVENTQUEUE_ADDDEVICEEVENT=0x16 -[TRACE]TRACE_NORMAL[0x86]_CEVENTQUEUE_ADDDEVMONEVENT=0x1c -[TRACE]TRACE_NORMAL[0x86]_CEVENTQUEUE_ATTACHMENTFAILURE=0x15 -[TRACE]TRACE_NORMAL[0x86]_CEVENTQUEUE_ATTACHMENTFAILURE_DUP1=0xab -[TRACE]TRACE_NORMAL[0x86]_CEVENTQUEUE_GETDEVICEEVENT_DUP1=0x17 -[TRACE]TRACE_NORMAL[0x86]_CEVENTQUEUE_GETDEVICEEVENT_DUP2=0x18 -[TRACE]TRACE_NORMAL[0x86]_CEVENTQUEUE_GETDEVICEEVENT_DUP3=0x19 -[TRACE]TRACE_NORMAL[0x86]_CEVENTQUEUE_GETDEVMONEVENT_DUP1=0x1b -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_CHECKDEVICEIDL=0x3b -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_CHECKDEVICEIDL_DUP1=0x3c -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_DEVICEDETACHED=0x2f -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_DEVICEDETACHED_DUP2=0x31 -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_DEVICEDETACHED_DUP3=0x32 -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_MFPOGETMANUFACTURERSTRINGDESCRIPTOR=0x36 -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_MFPOGETMANUFACTURERSTRINGDESCRIPTOR_DUP1=0x37 -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_MFPOGETPRODUCTSTRINGDESCRIPTOR=0x38 -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_MFPOGETPRODUCTSTRINGDESCRIPTOR_DUP1=0x39 -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_MFPOGETSERIALNUMBERSTRINGDESCRIPTOR=0x3a -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_MFPOGETSERIALNUMBERSTRINGDESCRIPTOR_DUP1=0x3d -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_NEWFUNCTION=0x20 -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_NEWFUNCTIONL=0x2e -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_NEWFUNCTIONL_DUP11=0x61 -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_NEWFUNCTIONL_DUP2=0x2c -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_NEWFUNCTIONL_DUP4=0x2d -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_NEWFUNCTIONL_DUP5=0x25 -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_NEWFUNCTIONL_DUP8=0x26 -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_NEWFUNCTIONL_DUT1=0x2b -[TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_NEWFUNCTION_DUP1=0x21 -[TRACE]TRACE_NORMAL[0x86]_CFDFSERVER_NEWSESSIONL=0x8c -[TRACE]TRACE_NORMAL[0x86]_CFDFSERVER_NEWSESSIONL_DUP1=0x8d -[TRACE]TRACE_NORMAL[0x86]_CFDFSERVER_NEWSESSIONL_DUP2=0x8e -[TRACE]TRACE_NORMAL[0x86]_CFDFSERVER_NEWSESSIONL_DUP3=0x8f -[TRACE]TRACE_NORMAL[0x86]_CFDFSERVER_NEWSESSIONL_DUP5=0x90 -[TRACE]TRACE_NORMAL[0x86]_CFDFSERVER_SESSIONCLOSED_DUP1=0x91 -[TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_COMPLETECLIENT=0x9e -[TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL=0xa3 -[TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL_DUP1=0xa4 -[TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL_DUP2=0xa5 -[TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_GETSTRINGDESCRIPTORL_DUP1=0xa8 -[TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_GETSUPPORTEDLANGUAGESL=0xa6 -[TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_GETSUPPORTEDLANGUAGESL_DUP1=0xa7 -[TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_NOTIFYDEVICEEVENTOUTSTANDING=0x9f -[TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_NOTIFYDEVMONEVENTOUTSTANDING=0xa2 -[TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL=0x92 -[TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP10=0x9c -[TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP11=0x9d -[TRACE]TRACE_NORMAL[0x86]_CFDF_APPENDINTERFACENUMBERTOARRAYL=0x84 -[TRACE]TRACE_NORMAL[0x86]_CFDF_CFDF=0x44 -[TRACE]TRACE_NORMAL[0x86]_CFDF_CFDF_DUP1=0x45 -[TRACE]TRACE_NORMAL[0x86]_CFDF_CFDF_DUP2=0x46 -[TRACE]TRACE_NORMAL[0x86]_CFDF_CONSTRUCTL=0x3e -[TRACE]TRACE_NORMAL[0x86]_CFDF_CONSTRUCTL_DUP1=0x3f -[TRACE]TRACE_NORMAL[0x86]_CFDF_CONSTRUCTL_DUP2=0x40 -[TRACE]TRACE_NORMAL[0x86]_CFDF_CREATEFUNCTIONDRIVERPROXIESL=0x41 -[TRACE]TRACE_NORMAL[0x86]_CFDF_CREATEFUNCTIONDRIVERPROXIESL_DUP1=0x42 -[TRACE]TRACE_NORMAL[0x86]_CFDF_CREATEFUNCTIONDRIVERPROXIESL_DUP2=0x79 -[TRACE]TRACE_NORMAL[0x86]_CFDF_DEVICEPROXYL=0x7a -[TRACE]TRACE_NORMAL[0x86]_CFDF_DEVICEPROXYL_DUP1=0x7b -[TRACE]TRACE_NORMAL[0x86]_CFDF_DEVICEPROXYL_DUP2=0x7c -[TRACE]TRACE_NORMAL[0x86]_CFDF_DODRIVERLOADINGL=0x62 -[TRACE]TRACE_NORMAL[0x86]_CFDF_DODRIVERLOADINGL_DUP1=0x63 -[TRACE]TRACE_NORMAL[0x86]_CFDF_DODRIVERLOADINGL_DUP6=0x64 -[TRACE]TRACE_NORMAL[0x86]_CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY=0x66 -[TRACE]TRACE_NORMAL[0x86]_CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_DUP1=0x67 -[TRACE]TRACE_NORMAL[0x86]_CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_DUP2=0x68 -[TRACE]TRACE_NORMAL[0x86]_CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_DUP3=0x69 -[TRACE]TRACE_NORMAL[0x86]_CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_DUP4=0x6a -[TRACE]TRACE_NORMAL[0x86]_CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_DUP5=0x6b -[TRACE]TRACE_NORMAL[0x86]_CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_DUP6=0x6e -[TRACE]TRACE_NORMAL[0x86]_CFDF_FINDDRIVERFORINTERFACEUSINGSPECIFICKEY_DUP8=0x6f -[TRACE]TRACE_NORMAL[0x86]_CFDF_FINDDRIVERSFORINTERFACESUSINGSPECIFICKEYL_DUP1=0x65 -[TRACE]TRACE_NORMAL[0x86]_CFDF_FORMATDEVICESEARCHKEY_DUP1=0x88 -[TRACE]TRACE_NORMAL[0x86]_CFDF_FORMATINTERFACESEARCHKEY_DUP1=0x8b -[TRACE]TRACE_NORMAL[0x86]_CFDF_GETMANUFACTURERSTRINGDESCRIPTORL=0x7e -[TRACE]TRACE_NORMAL[0x86]_CFDF_GETMANUFACTURERSTRINGDESCRIPTORL_DUP1=0x7f -[TRACE]TRACE_NORMAL[0x86]_CFDF_GETPRODUCTSTRINGDESCRIPTORL=0x80 -[TRACE]TRACE_NORMAL[0x86]_CFDF_GETPRODUCTSTRINGDESCRIPTORL_DUP1=0x81 -[TRACE]TRACE_NORMAL[0x86]_CFDF_GETSERIALNUMBERSTRINGDESCRIPTORL=0x82 -[TRACE]TRACE_NORMAL[0x86]_CFDF_GETSERIALNUMBERSTRINGDESCRIPTORL_DUP1=0x83 -[TRACE]TRACE_NORMAL[0x86]_CFDF_GETSUPPORTEDLANGUAGESL=0x7d -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEDEVICEATTACHMENT=0x57 -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEDEVICEATTACHMENTL=0x5a -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEDEVICEATTACHMENTL_DUP13=0x5b -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEDEVICEATTACHMENTL_DUP21=0x5c -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEDEVICEATTACHMENTL_DUP28=0x5d -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEDEVICEATTACHMENTL_DUP31=0x5e -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEDEVICEATTACHMENTL_DUP32=0x5f -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEDEVICEDETACHMENT=0x70 -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEDEVICEDETACHMENT_DUP1=0x71 -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEDEVICEDETACHMENT_DUP4=0x72 -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEDEVICEDETACHMENT_DUP5=0x73 -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEDEVICEDETACHMENT_DUP6=0x74 -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEDEVMONEVENT=0x75 -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEECOMEVENTRECEIVEDL=0x4b -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEECOMEVENTRECEIVEDL_DUP1=0x4c -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEECOMEVENTRECEIVEDL_DUP2=0x4d -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEECOMEVENTRECEIVEDL_DUP3=0x4e -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEECOMEVENTRECEIVEDL_DUP4=0x4f -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEECOMEVENTRECEIVEDL_DUP5=0x50 -[TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEECOMEVENTRECEIVEDL_DUP6=0x51 -[TRACE]TRACE_NORMAL[0x86]_CFDF_MBEOBUSEVENT=0x52 -[TRACE]TRACE_NORMAL[0x86]_CFDF_MBEOBUSEVENT_DUP1=0x53 -[TRACE]TRACE_NORMAL[0x86]_CFDF_MBEOBUSEVENT_DUP2=0x54 -[TRACE]TRACE_NORMAL[0x86]_CFDF_MBEOBUSEVENT_DUP4=0x56 -[TRACE]TRACE_NORMAL[0x86]_CFDF_SEARCHFORADEVICEFUNCTIONDRIVERL=0x85 -[TRACE]TRACE_NORMAL[0x86]_CFDF_SEARCHFORADEVICEFUNCTIONDRIVERL_DUP1=0xac -[TRACE]TRACE_NORMAL[0x86]_CFDF_SEARCHFORADEVICEFUNCTIONDRIVERL_DUP2=0xad -[TRACE]TRACE_NORMAL[0x86]_CFDF_SETSESSION=0x48 -[TRACE]TRACE_NORMAL[0x86]_CFDF_TELLFDCSOFDEVICEDETACHMENT=0x77 -[TRACE]TRACE_NORMAL[0x86]_CFDF_TOKENFORINTERFACE=0x78 -[TRACE]TRACE_NORMAL[0x86]_CFDF_TOKENFORINTERFACE_DUP6=0xaa -[TRACE]TRACE_NORMAL[0x86]_CFDF_UNCLAIMEDINTERFACECOUNT_DUP1=0x89 -[TRACE]TRACE_NORMAL[0x86]_CFDF_UNCLAIMEDINTERFACECOUNT_DUP2=0x8a -[TRACE]TRACE_NORMAL[0x86]_FDF_SERVER_SRC_E32MAIN=0xa0 -[TRACE]TRACE_NORMAL[0x86]_FDF_SERVER_SRC_E32MAIN_DUP1=0xa1 -[TRACE]TRACE_NORMAL[0x86]_FDF_UTILS_REMOVE=0xa9 -[[OBSOLETE]][GROUP]a=0xdf -[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CFDF_HANDLEDEVICEATTACHMENTL_DUP13=0x2c -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_GETCONFIGURATIONDESCRIPTOR_DUP1=0x8 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CDEVICEPROXY_NEWL=0x2 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CFDCPROXY_NEWFUNCTIONL_DUP3=0x13 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CFDCPROXY_NEWFUNCTIONL_DUP4=0x16 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CFDCPROXY_NEWFUNCTIONL_DUP6=0x14 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CFDCPROXY_NEWFUNCTIONL_DUP7=0x15 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CFDF_FORMATDEVICESEARCHKEY=0x3a -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CFDF_TOKENFORINTERFACE_DUP6=0x39 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORBUSEVENT_CACTIVEWAITFORBUSEVENT_ENTRY=0x1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORBUSEVENT_CACTIVEWAITFORBUSEVENT_ENTRY_DUP1=0xb -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORBUSEVENT_CACTIVEWAITFORBUSEVENT_EXIT=0x2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORBUSEVENT_CACTIVEWAITFORBUSEVENT_EXIT_DUP1=0xc -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORECOMEVENT_CACTIVEWAITFORECOMEVENT_ENTRY=0xd -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORECOMEVENT_CACTIVEWAITFORECOMEVENT_ENTRY_DUP1=0xf -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORECOMEVENT_CACTIVEWAITFORECOMEVENT_EXIT=0xe -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEWAITFORECOMEVENT_CACTIVEWAITFORECOMEVENT_EXIT_DUP1=0x10 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_CDEVICEPROXY_ENTRY=0x1b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_CDEVICEPROXY_ENTRY_DUP1=0x22 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CDEVICEPROXY_CDEVICEPROXY_ENTRY_DUP1_EXIT=0x23 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_ATTACHMENTFAILURE_DUP1=0x4f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_CEVENTQUEUE_ENTRY=0x4b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CEVENTQUEUE_CEVENTQUEUE_EXIT=0x4d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_CFDCPROXY_DUP1_EXIT=0x63 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_CFDCPROXY_ENTRY=0x61 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDCPROXY_CFDCPROXY_ENTRY_DUP1=0x62 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_COMPLETEDEVICEEVENTNOTIFICATION=0xdf -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_COMPLETEDEVICEEVENTNOTIFICATIONL=0xe0 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_COMPLETEDEVMONEVENTNOTIFICATION=0xe4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_COMPLETEDEVMONEVENTNOTIFICATIONL=0xe5 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_DEVMONEVENT=0xe3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETMANUFACTURERSTRINGDESCRIPTOR=0xea -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETOTGDEVICEDESCRIPTOR=0xee -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETPRODUCTSTRINGDESCRIPTOR=0xeb -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGES=0xe6 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSINGLESUPPORTEDLANGUAGEORNUMBEROFSUPPORTEDLANGUAGESL=0xe7 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSTRINGDESCRIPTOR=0xec -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSTRINGDESCRIPTORL=0xed -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSUPPORTEDLANGUAGES=0xe8 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_GETSUPPORTEDLANGUAGESL=0xe9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_NOTIFYDEVMONEVENT=0xe1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDFSESSION_NOTIFYDEVMONEVENTCANCEL=0xe2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDF_CFDF_ENTRY=0x78 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDF_CFDF_ENTRY_DUP1=0x7d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CFDF_CFDF_ENTRY_DUP1_EXIT=0x7e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CACTIVEWAITFORBUSEVENT_CACTIVEWAITFORBUSEVENT_ENTRY=0x3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CACTIVEWAITFORBUSEVENT_CACTIVEWAITFORBUSEVENT_EXIT=0x4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CEVENTQUEUE_CEVENTQUEUE_ENTRY=0x4c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_TDEVICEEVENT_TDEVICEEVENT_ENTRY=0x47 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_TDEVICEEVENT_TDEVICEEVENT_ENTRY_DUP1=0x48 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CACTIVEWAITFORECOMEVENT_RUNERROR=0x2 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_GETCONFIGURATIONDESCRIPTOR=0x5 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CDEVICEPROXY_GETSTRINGDESCRIPTORFROMUSBDL_DUP2=0xa -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CEVENTQUEUE_ADDDEVMONEVENT_DUP1=0x1f -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CEVENTQUEUE_ADDDEVMONEVENT_DUP2=0x1e -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CEVENTQUEUE_GETDEVMONEVENT=0x1a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_DEVICEDETACHED_DUP1=0x30 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_INVARIANT=0x33 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_INVARIANT_DUP1=0x34 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_MFPOTOKENFORINTERFACE=0x35 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_NEWFUNCTIONL_DUP2=0x23 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_NEWFUNCTIONL_DUP3=0x28 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_NEWFUNCTIONL_DUP4=0x24 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_NEWFUNCTIONL_DUP6=0x29 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_NEWFUNCTIONL_DUT1=0x22 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDCPROXY_NEWFUNCTIONL_DUT2=0x27 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP1=0x93 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP2=0x94 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP3=0x95 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP4=0x96 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP5=0x97 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP6=0x98 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP7=0x99 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP8=0x9a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDFSESSION_SERVICEL_DUP9=0x9b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDF_CFDF_DUP3=0x47 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDF_CREATEFUNCTIONDRIVERPROXIESL_DUP2=0x43 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDF_GETDEVICEEVENT=0x49 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDF_GETDEVMONEVENT=0x4a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEDEVICEATTACHMENT_DUP1=0x58 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEDEVICEATTACHMENT_DUP2=0x59 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDF_HANDLEDEVMONEVENT_DUP1=0x76 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CFDF_MBEOBUSEVENT_DUP3=0x55 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CFDF_SEARCHFORADEVICEFUNCTIONDRIVERL_DUP1=0x86 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CFDF_SEARCHFORADEVICEFUNCTIONDRIVERL_DUP2=0x87 -[[OBSOLETE]][TRACE]a[0xDE]_b=0x1 -[[OBSOLETE]][TRACE]a[0xDF]_b=0x1 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/reference/reffdc/group/reffdc.mmp --- a/usbmgmt/usbmgr/host/fdf/reference/reffdc/group/reffdc.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/reference/reffdc/group/reffdc.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -35,10 +35,9 @@ RESOURCE reffdc.rss -OS_LAYER_SYSTEMINCLUDE_SYMBIAN +SYSTEMINCLUDE \epoc32\include USERINCLUDE ..\inc -USERINCLUDE ..\traces LIBRARY euser.lib LIBRARY fdcbase.lib @@ -46,4 +45,4 @@ NOEXPORTLIBRARY #include - +#include diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/reference/reffdc/src/reffdc.cpp --- a/usbmgmt/usbmgr/host/fdf/reference/reffdc/src/reffdc.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/reference/reffdc/src/reffdc.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -23,29 +23,27 @@ #include "reffdc.h" #include #include -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "reffdcTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "reffdc "); #endif - - CRefFdc* CRefFdc::NewL(MFdcPluginObserver& aObserver) { - OstTraceFunctionEntry0( CREFFDC_NEWL_ENTRY ); - + LOG_LINE + LOG_STATIC_FUNC_ENTRY + CRefFdc* self = new(ELeave) CRefFdc(aObserver); CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(self); - OstTraceFunctionExit0( CREFFDC_NEWL_EXIT ); return self; } CRefFdc::~CRefFdc() { - OstTraceFunctionEntry0( CREFFDC_CREFFDC_DES_ENTRY ); - OstTraceFunctionExit0( CREFFDC_CREFFDC_DES_EXIT ); + LOG_LINE + LOG_FUNC } CRefFdc::CRefFdc(MFdcPluginObserver& aObserver) @@ -55,10 +53,7 @@ void CRefFdc::ConstructL() { - OstTraceFunctionEntry0( CREFFDC_CONSTRUCTL_ENTRY ); - - - OstTraceFunctionExit0( CREFFDC_CONSTRUCTL_EXIT ); + LOG_FUNC } TInt CRefFdc::Mfi1NewFunction(TUint aDeviceId, @@ -66,20 +61,16 @@ const TUsbDeviceDescriptor& aDeviceDescriptor, const TUsbConfigurationDescriptor& aConfigurationDescriptor) { - OstTraceFunctionEntry0( CREFFDC_MFI1NEWFUNCTION_ENTRY ); - OstTrace1( TRACE_NORMAL, CREFFDC_MFI1NEWFUNCTION, - "***** Ref FD offered chance to claim one function from device with ID %d", - aDeviceId ); - + LOG_LINE + LOG_FUNC + LOGTEXT2(_L8("\t***** Ref FD offered chance to claim one function from device with ID %d"), aDeviceId); (void)aDeviceId; TRAPD(err, NewFunctionL(aDeviceId, aInterfaces, aDeviceDescriptor, aConfigurationDescriptor)); // If any error is returned, RUsbInterface (etc) handles opened from this // call must be closed. - OstTrace1( TRACE_NORMAL, CREFFDC_MFI1NEWFUNCTION_DUP1, - "err = %d", err ); - OstTraceFunctionExit0( CREFFDC_MFI1NEWFUNCTION_EXIT ); + LOGTEXT2(_L8("\terr = %d"), err); return err; } @@ -88,8 +79,9 @@ const TUsbDeviceDescriptor& /*aDeviceDescriptor*/, const TUsbConfigurationDescriptor& /*aConfigurationDescriptor*/) { - OstTraceFunctionEntry0( CREFFDC_NEWFUNCTIONL_ENTRY ); - + LOG_LINE + LOG_FUNC + // We are obliged to claim the first interface because it has // interface class/subclass(/protocol) settings matching our default_data // field. @@ -109,70 +101,58 @@ // subsystem-specific purposes. const RArray& langIds = Observer().GetSupportedLanguagesL(aDeviceId); const TUint langCount = langIds.Count(); - OstTrace1( TRACE_NORMAL, CREFFDC_NEWFUNCTIONL, - "device supports %d language(s):", langCount ); - + LOGTEXT2(_L8("\tdevice supports %d language(s):"), langCount); for ( TUint ii = 0 ; ii < langCount ; ++ii ) { - OstTrace1( TRACE_NORMAL, CREFFDC_NEWFUNCTIONL_DUP1, - "lang code: 0x%04x", langIds[ii] ); - - TName string; + LOGTEXT2(_L8("\t\tlang code: 0x%04x"), langIds[ii]); + TName string; TInt err = Observer().GetManufacturerStringDescriptor(aDeviceId, langIds[ii], string); if ( !err ) { - OstTraceExt1( TRACE_NORMAL, CREFFDC_NEWFUNCTIONL_DUP2, - "manufacturer string descriptor = \"%S\"", string ); - err = Observer().GetProductStringDescriptor(aDeviceId, langIds[ii], string); + LOGTEXT2(_L("\t\t\tmanufacturer string descriptor = \"%S\""), &string); + err = Observer().GetProductStringDescriptor(aDeviceId, langIds[ii], string); if ( !err ) { - OstTraceExt1( TRACE_NORMAL, CREFFDC_NEWFUNCTIONL_DUP3, - "product string descriptor = \"%S\"", string ); + LOGTEXT2(_L("\t\t\tproduct string descriptor = \"%S\""), &string); err = Observer().GetSerialNumberStringDescriptor(aDeviceId, langIds[ii], string); if ( !err ) { - OstTraceExt1( TRACE_NORMAL, CREFFDC_NEWFUNCTIONL_DUP4, - "serial number string descriptor = \"%S\"", string ); + LOGTEXT2(_L("\t\t\tserial number string descriptor = \"%S\""), &string); } else { - OstTrace1( TRACE_NORMAL, CREFFDC_NEWFUNCTIONL_DUP5, - "GetSerialNumberStringDescriptor returned %d", err ); + LOGTEXT2(_L("\t\t\tGetSerialNumberStringDescriptor returned %d"), err); } } else { - OstTrace1( TRACE_NORMAL, CREFFDC_NEWFUNCTIONL_DUP6, - "GetProductStringDescriptor returned %d", err ); - } + LOGTEXT2(_L("\t\t\tGetProductStringDescriptor returned %d"), err); + } } else { - OstTrace1( TRACE_NORMAL, CREFFDC_NEWFUNCTIONL_DUP7, - "GetManufacturerStringDescriptor returned %d", err ); + LOGTEXT2(_L("\t\t\tGetManufacturerStringDescriptor returned %d"), err); } } - OstTraceFunctionExit0( CREFFDC_NEWFUNCTIONL_EXIT ); } void CRefFdc::Mfi1DeviceDetached(TUint aDeviceId) { - OstTraceFunctionEntry0( CREFFDC_MFI1DEVICEDETACHED_ENTRY ); - OstTrace1( TRACE_NORMAL, CREFFDC_MFI1DEVICEDETACHED, - "***** Ref FD notified of detachment of device with ID %d", aDeviceId ); + LOG_LINE + LOG_FUNC + LOGTEXT2(_L8("\t***** Ref FD notified of detachment of device with ID %d"), aDeviceId); (void)aDeviceId; // Any RUsbInterface (etc) handles opened as a result of any calls to // MfiNewFunction with this device ID should be closed. - OstTraceFunctionExit0( CREFFDC_MFI1DEVICEDETACHED_EXIT ); } TAny* CRefFdc::GetInterface(TUid aUid) { - OstTraceFunctionEntry0( CREFFDC_GETINTERFACE_ENTRY ); - OstTrace1( TRACE_NORMAL, CREFFDC_GETINTERFACE, - "aUid = 0x%08x", aUid.iUid ); - + LOG_LINE + LOG_FUNC; + LOGTEXT2(_L8("\taUid = 0x%08x"), aUid); + TAny* ret = NULL; if ( aUid == TUid::Uid(KFdcInterfaceV1) ) { @@ -181,9 +161,6 @@ ); } - OstTrace1( TRACE_NORMAL, CREFFDC_GETINTERFACE_DUP1, - "ret = [0x%08x]", ret ); - - OstTraceFunctionExit0( CREFFDC_GETINTERFACE_EXIT ); + LOGTEXT2(_L8("\tret = [0x%08x]"), ret); return ret; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/reference/reffdc/src/reffdcmain.cpp --- a/usbmgmt/usbmgr/host/fdf/reference/reffdc/src/reffdcmain.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/fdf/reference/reffdc/src/reffdcmain.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/reference/reffdc/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/host/fdf/reference/reffdc/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/fdf/reference/reffdc/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/host/fdf/reference/reffdc/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_FLOW[0x8A]_CREFFDC_CONSTRUCTL_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x8A]_CREFFDC_CONSTRUCTL_EXIT=0x6 -[TRACE]TRACE_FLOW[0x8A]_CREFFDC_CREFFDC_DES_ENTRY=0xf -[TRACE]TRACE_FLOW[0x8A]_CREFFDC_CREFFDC_DES_EXIT=0x10 -[TRACE]TRACE_FLOW[0x8A]_CREFFDC_GETINTERFACE_ENTRY=0xd -[TRACE]TRACE_FLOW[0x8A]_CREFFDC_GETINTERFACE_EXIT=0xe -[TRACE]TRACE_FLOW[0x8A]_CREFFDC_MFI1DEVICEDETACHED_ENTRY=0xb -[TRACE]TRACE_FLOW[0x8A]_CREFFDC_MFI1DEVICEDETACHED_EXIT=0xc -[TRACE]TRACE_FLOW[0x8A]_CREFFDC_MFI1NEWFUNCTION_ENTRY=0x7 -[TRACE]TRACE_FLOW[0x8A]_CREFFDC_MFI1NEWFUNCTION_EXIT=0x8 -[TRACE]TRACE_FLOW[0x8A]_CREFFDC_NEWFUNCTIONL_ENTRY=0x9 -[TRACE]TRACE_FLOW[0x8A]_CREFFDC_NEWFUNCTIONL_EXIT=0xa -[TRACE]TRACE_FLOW[0x8A]_CREFFDC_NEWL_ENTRY=0x1 -[TRACE]TRACE_FLOW[0x8A]_CREFFDC_NEWL_EXIT=0x2 -[TRACE]TRACE_NORMAL[0x86]_CREFFDC_GETINTERFACE=0xc -[TRACE]TRACE_NORMAL[0x86]_CREFFDC_GETINTERFACE_DUP1=0xd -[TRACE]TRACE_NORMAL[0x86]_CREFFDC_MFI1DEVICEDETACHED=0xb -[TRACE]TRACE_NORMAL[0x86]_CREFFDC_MFI1NEWFUNCTION=0x1 -[TRACE]TRACE_NORMAL[0x86]_CREFFDC_MFI1NEWFUNCTION_DUP1=0x2 -[TRACE]TRACE_NORMAL[0x86]_CREFFDC_NEWFUNCTIONL=0x3 -[TRACE]TRACE_NORMAL[0x86]_CREFFDC_NEWFUNCTIONL_DUP1=0x4 -[TRACE]TRACE_NORMAL[0x86]_CREFFDC_NEWFUNCTIONL_DUP2=0x5 -[TRACE]TRACE_NORMAL[0x86]_CREFFDC_NEWFUNCTIONL_DUP3=0x6 -[TRACE]TRACE_NORMAL[0x86]_CREFFDC_NEWFUNCTIONL_DUP4=0x7 -[TRACE]TRACE_NORMAL[0x86]_CREFFDC_NEWFUNCTIONL_DUP5=0x8 -[TRACE]TRACE_NORMAL[0x86]_CREFFDC_NEWFUNCTIONL_DUP6=0x9 -[TRACE]TRACE_NORMAL[0x86]_CREFFDC_NEWFUNCTIONL_DUP7=0xa -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREFFDC_CREFFDC_CONS_ENTRY=0x3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREFFDC_CREFFDC_EXIT=0x4 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/group/msfdc.mmp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/group/msfdc.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/group/msfdc.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -39,8 +39,6 @@ USERINCLUDE ../inc USERINCLUDE ../../msmm/client/public USERINCLUDE ../../msmm/server/public -USERINCLUDE ../traces - LIBRARY euser.lib @@ -49,3 +47,4 @@ NOEXPORTLIBRARY #include +#include diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/src/msfdc.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/src/msfdc.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/src/msfdc.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -26,12 +26,10 @@ #include #include #include -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "msfdcTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "MsFdc"); #endif - - /** NewL function of CMsFdc, allocate the memory that needed for instantiating this object. @@ -41,13 +39,12 @@ */ CMsFdc* CMsFdc::NewL(MFdcPluginObserver& aObserver) { - OstTraceFunctionEntry0( CMSFDC_NEWL_ENTRY ); - + LOG_STATIC_FUNC_ENTRY + CMsFdc* self = new(ELeave) CMsFdc(aObserver); CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(self); - OstTraceFunctionExit0( CMSFDC_NEWL_EXIT ); return self; } @@ -56,11 +53,13 @@ */ CMsFdc::~CMsFdc() { - OstTraceFunctionEntry0( CMSFDC_CMSFDC_DES_ENTRY ); + LOG_FUNC + iMsmmSession.Disconnect(); - OstTrace0( TRACE_NORMAL, CMSFDC_CMSFDC, "Disconnected to MSMM OK" ); - - OstTraceFunctionExit0( CMSFDC_CMSFDC_DES_EXIT ); + LOGTEXT(_L("Disconnected to MSMM OK")); +#ifdef __FLOG_ACTIVE + CUsbLog::Close(); +#endif } /** Constructor of CMsFdc. @@ -74,22 +73,23 @@ */ void CMsFdc::ConstructL() { - OstTraceFunctionEntry0( CMSFDC_CONSTRUCTL_ENTRY ); + +#ifdef __FLOG_ACTIVE + CUsbLog::Connect(); +#endif + LOG_FUNC //Set up the connection with mount manager TInt error = iMsmmSession.Connect(); if ( error ) { - OstTrace1( TRACE_NORMAL, CMSFDC_CONSTRUCTL, - "Failed to connect to MSMM %d",error ); - User::Leave(error); + LOGTEXT2(_L("Failed to connect to MSMM %d"),error); + User::Leave(error); } else { - OstTrace0( TRACE_NORMAL, CMSFDC_CONSTRUCTL_DUP1, - "Connected to MSMM OK" ); - } - OstTraceFunctionExit0( CMSFDC_CONSTRUCTL_EXIT ); + LOGTEXT(_L("Connected to MSMM OK")); + } } /** Get called when FDF is trying to load the driver for Mass Storage Device. @@ -106,23 +106,17 @@ const TUsbDeviceDescriptor& aDeviceDescriptor, const TUsbConfigurationDescriptor& aConfigurationDescriptor) { - OstTraceFunctionEntry0( CMSFDC_MFI1NEWFUNCTION_ENTRY ); - - // this is the evidence that the message got through. - OstTrace1( TRACE_NORMAL, CMSFDC_MFI1NEWFUNCTION, - "***** Mass Storage FD notified of device (ID %d) attachment!", aDeviceId ); + LOG_FUNC // this is the evidence that the message got through. + LOGTEXT2(_L8("\t***** Mass Storage FD notified of device (ID %d) attachment!"), aDeviceId); + // Mass Storage FDC only claims one interface. - OstTrace1( TRACE_NORMAL, CMSFDC_MFI1NEWFUNCTION_DUP1, - "***** Mass Storage FD interface to request token is %d", aInterfaces[0] ); + LOGTEXT2(_L8("\t***** Mass Storage FD interface to request token is %d"), aInterfaces[0]); TUint32 token = Observer().TokenForInterface(aInterfaces[0]); - OstTrace1( TRACE_NORMAL, CMSFDC_MFI1NEWFUNCTION_DUP2, - "***** Mass Storage FD tokenInterface %d", token ); + LOGTEXT2(_L8("\t***** Mass Storage FD tokenInterface %d"), token); if (token == 0) { - OstTrace0( TRACE_ERROR, CMSFDC_MFI1NEWFUNCTION_DUP3, - "***** Mass Storage FDC device containing this function is removed." ); - OstTraceFunctionExit0( CMSFDC_MFI1NEWFUNCTION_EXIT ); + LOGTEXT(_L8("\t***** Mass Storage FDC device containing this function is removed.")); return KErrGeneral; } @@ -132,9 +126,7 @@ if (error) { - OstTrace0( TRACE_ERROR, CMSFDC_MFI1NEWFUNCTION_DUP4, - "***** Mass Storage FDC getting language array failed" ); - OstTraceFunctionExit0( CMSFDC_MFI1NEWFUNCTION_EXIT_DUP1 ); + LOGTEXT(_L8("\t***** Mass Storage FDC getting language array failed")); return error; } @@ -142,9 +134,7 @@ TRAP(error, data = new (ELeave) TUSBMSDeviceDescription); if (error) { - OstTrace0( TRACE_ERROR, CMSFDC_MFI1NEWFUNCTION_DUP5, - "***** Mass Storage FDC Memory allocation Failed" ); - OstTraceFunctionExit0( CMSFDC_MFI1NEWFUNCTION_EXIT_DUP2 ); + LOGTEXT(_L8("\t***** Mass Storage FDC Memory allocation Failed")); return error; } @@ -154,33 +144,27 @@ if (error) { - OstTrace0( TRACE_ERROR, CMSFDC_MFI1NEWFUNCTION_DUP6, - "***** Mass Storage FDC getting Serial Number Failed" ); + LOGTEXT(_L8("\t***** Mass Storage FDC getting Serial Number failed")); delete data; - OstTraceFunctionExit0( CMSFDC_MFI1NEWFUNCTION_EXIT_DUP3 ); return error; } else { - OstTraceExt1( TRACE_ERROR, CMSFDC_MFI1NEWFUNCTION_DUP7, - "***** Mass Storage FDC Serial String is %S", data->iSerialNumber ); - } + LOGTEXT2(_L("\t***** Mass Storage FDC Serial String is %S"), &data->iSerialNumber); + } //Get Product string descriptor error = Observer().GetProductStringDescriptor(aDeviceId, defaultlangid, data->iProductString); if (error) { - OstTrace0( TRACE_ERROR, CMSFDC_MFI1NEWFUNCTION_DUP8, - "***** Mass Storage FDC getting Product string Failed" ); - delete data; - OstTraceFunctionExit0( CMSFDC_MFI1NEWFUNCTION_EXIT_DUP4 ); + LOGTEXT(_L8("\t***** Mass Storage FDC getting Product string failed")); + delete data; return error; } else { - OstTraceExt1( TRACE_NORMAL, CMSFDC_MFI1NEWFUNCTION_DUP9, - "***** Mass Storage FDC Product String is %S", data->iProductString ); + LOGTEXT2(_L("\t***** Mass Storage FDC Product String is %S"), &data->iProductString); } //Get Manufacturer string descriptor @@ -189,16 +173,14 @@ if (error) { - OstTrace0( TRACE_ERROR, CMSFDC_MFI1NEWFUNCTION_DUP10, - "***** Mass Storage FDC getting Manufacturer string Failed" ); + LOGTEXT(_L8("\t***** Mass Storage FDC getting Manufacturer string failed")); delete data; - OstTraceFunctionExit0( CMSFDC_MFI1NEWFUNCTION_EXIT_DUP5 ); return error; } else { - OstTraceExt1( TRACE_NORMAL, CMSFDC_MFI1NEWFUNCTION_DUP11, - "***** Mass Storage FDC Manufacturer String is %S", data->iManufacturerString ); + LOGTEXT2(_L("\t***** Mass Storage FDC Manufacturer String is %S"), + &data->iManufacturerString); } /************************Remote Wakeup Attribute acquiring***********************/ @@ -210,32 +192,26 @@ error = interface_ep0.Open(token); if (error) { - OstTrace0( TRACE_ERROR, CMSFDC_MFI1NEWFUNCTION_DUP12, - "***** Mass Storage FDC Open interface handle Failed" ); - delete data; - OstTraceFunctionExit0( CMSFDC_MFI1NEWFUNCTION_EXIT_DUP6 ); + LOGTEXT(_L8("\t***** Mass Storage FDC Open interface handle failed")); + delete data; return error; } else { - OstTrace0( TRACE_NORMAL, CMSFDC_MFI1NEWFUNCTION_DUP13, - "***** Mass Storage FDC Open interface handle OK" ); + LOGTEXT(_L8("\t***** Mass Storage FDC Open interface handle OK")); } error = interface_ep0.GetInterfaceDescriptor(ifDescriptor); - interface_ep0.Close(); if (error) { - OstTrace0( TRACE_ERROR, CMSFDC_MFI1NEWFUNCTION_DUP14, - "***** Mass Storage FDC get interface descriptor Failed" ); + LOGTEXT(_L8("\t***** Mass Storage FDC get interface descriptor failed")); + interface_ep0.Close(); delete data; - OstTraceFunctionExit0( CMSFDC_MFI1NEWFUNCTION_EXIT_DUP7 ); return error; } else { - OstTrace0( TRACE_NORMAL, CMSFDC_MFI1NEWFUNCTION_DUP15, - "***** Mass Storage FDC get interface descriptor OK" ); + LOGTEXT(_L8("\t***** Mass Storage FDC get interface descriptor OK")); } /*********************************************************************************/ @@ -261,8 +237,8 @@ error = iMsmmSession.AddFunction(*data, aInterfaces[0], token); + interface_ep0.Close(); delete data; - OstTraceFunctionExit0( CMSFDC_MFI1NEWFUNCTION_EXIT_DUP8 ); return error; } /** @@ -272,13 +248,10 @@ */ void CMsFdc::Mfi1DeviceDetached(TUint aDeviceId) { - OstTraceFunctionEntry0( CMSFDC_MFI1DEVICEDETACHED_ENTRY ); - // this is the evidence that the message got through. - OstTrace1( TRACE_NORMAL, CMSFDC_MFI1DEVICEDETACHED, - "***** Mass Storage FD notified of device (ID %d) detachment!", aDeviceId ); + LOG_FUNC // this is the evidence that the message got through. + LOGTEXT2(_L8("\t***** Mass Storage FD notified of device (ID %d) detachment!"), aDeviceId); iMsmmSession.RemoveDevice(aDeviceId); - OstTraceFunctionExit0( CMSFDC_MFI1DEVICEDETACHED_EXIT ); } /** @@ -289,9 +262,10 @@ */ TAny* CMsFdc::GetInterface(TUid aUid) { - OstTraceFunctionEntry0( CMSFDC_GETINTERFACE_ENTRY ); - OstTrace1( TRACE_NORMAL, CMSFDC_GETINTERFACE, "aUid = 0x%08x", aUid.iUid ); - + LOG_LINE + LOG_FUNC; + LOGTEXT2(_L8("\taUid = 0x%08x"), aUid); + TAny* ret = NULL; if ( aUid == TUid::Uid(KFdcInterfaceV1) ) { @@ -299,9 +273,8 @@ static_cast(this) ); } - OstTrace1( TRACE_NORMAL, CMSFDC_GETINTERFACE_DUP1, - "ret = [0x%08x]", ret ); - OstTraceFunctionExit0( CMSFDC_GETINTERFACE_EXIT ); + + LOGTEXT2(_L8("\tret = [0x%08x]"), ret); return ret; } /** diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/src/msfdcmain.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/src/msfdcmain.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/src/msfdcmain.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msfdc/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_ERROR=0x82 -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_ERROR[0x82]_CMSFDC_MFI1NEWFUNCTION_DUP10=0x7 -[TRACE]TRACE_ERROR[0x82]_CMSFDC_MFI1NEWFUNCTION_DUP12=0x8 -[TRACE]TRACE_ERROR[0x82]_CMSFDC_MFI1NEWFUNCTION_DUP14=0x9 -[TRACE]TRACE_ERROR[0x82]_CMSFDC_MFI1NEWFUNCTION_DUP3=0x1 -[TRACE]TRACE_ERROR[0x82]_CMSFDC_MFI1NEWFUNCTION_DUP4=0x2 -[TRACE]TRACE_ERROR[0x82]_CMSFDC_MFI1NEWFUNCTION_DUP5=0x3 -[TRACE]TRACE_ERROR[0x82]_CMSFDC_MFI1NEWFUNCTION_DUP6=0x4 -[TRACE]TRACE_ERROR[0x82]_CMSFDC_MFI1NEWFUNCTION_DUP7=0x5 -[TRACE]TRACE_ERROR[0x82]_CMSFDC_MFI1NEWFUNCTION_DUP8=0x6 -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_CMSFDC_DES_ENTRY=0x3 -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_CMSFDC_DES_EXIT=0x4 -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_CONSTRUCTL_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_CONSTRUCTL_EXIT=0x6 -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_GETINTERFACE_ENTRY=0x1b -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_GETINTERFACE_EXIT=0x1c -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_MFI1DEVICEDETACHED_ENTRY=0x19 -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_MFI1DEVICEDETACHED_EXIT=0x1a -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_MFI1NEWFUNCTION_ENTRY=0x7 -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_MFI1NEWFUNCTION_EXIT=0x8 -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_MFI1NEWFUNCTION_EXIT_DUP1=0x11 -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_MFI1NEWFUNCTION_EXIT_DUP2=0x12 -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_MFI1NEWFUNCTION_EXIT_DUP3=0x13 -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_MFI1NEWFUNCTION_EXIT_DUP4=0x14 -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_MFI1NEWFUNCTION_EXIT_DUP5=0x15 -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_MFI1NEWFUNCTION_EXIT_DUP6=0x16 -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_MFI1NEWFUNCTION_EXIT_DUP7=0x17 -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_MFI1NEWFUNCTION_EXIT_DUP8=0x18 -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_NEWL_ENTRY=0x1 -[TRACE]TRACE_FLOW[0x8A]_CMSFDC_NEWL_EXIT=0x2 -[TRACE]TRACE_NORMAL[0x86]_CMSFDC_CMSFDC=0x1 -[TRACE]TRACE_NORMAL[0x86]_CMSFDC_CONSTRUCTL=0x2 -[TRACE]TRACE_NORMAL[0x86]_CMSFDC_CONSTRUCTL_DUP1=0x3 -[TRACE]TRACE_NORMAL[0x86]_CMSFDC_GETINTERFACE=0xc -[TRACE]TRACE_NORMAL[0x86]_CMSFDC_GETINTERFACE_DUP1=0xd -[TRACE]TRACE_NORMAL[0x86]_CMSFDC_MFI1DEVICEDETACHED=0xb -[TRACE]TRACE_NORMAL[0x86]_CMSFDC_MFI1NEWFUNCTION=0x4 -[TRACE]TRACE_NORMAL[0x86]_CMSFDC_MFI1NEWFUNCTION_DUP1=0x5 -[TRACE]TRACE_NORMAL[0x86]_CMSFDC_MFI1NEWFUNCTION_DUP11=0x8 -[TRACE]TRACE_NORMAL[0x86]_CMSFDC_MFI1NEWFUNCTION_DUP13=0x9 -[TRACE]TRACE_NORMAL[0x86]_CMSFDC_MFI1NEWFUNCTION_DUP15=0xa -[TRACE]TRACE_NORMAL[0x86]_CMSFDC_MFI1NEWFUNCTION_DUP2=0x6 -[TRACE]TRACE_NORMAL[0x86]_CMSFDC_MFI1NEWFUNCTION_DUP9=0x7 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CMSFDC_MFI1NEWFUNCTION_EXIT=0x9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP2_CMSFDC_MFI1NEWFUNCTION_EXIT=0xa -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP3_CMSFDC_MFI1NEWFUNCTION_EXIT=0xb -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP4_CMSFDC_MFI1NEWFUNCTION_EXIT=0xc -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP5_CMSFDC_MFI1NEWFUNCTION_EXIT=0xd -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP6_CMSFDC_MFI1NEWFUNCTION_EXIT=0xe -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP7_CMSFDC_MFI1NEWFUNCTION_EXIT=0xf -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP8_CMSFDC_MFI1NEWFUNCTION_EXIT=0x10 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/bwins/msmmicsession_over_dummycomponentu.def --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/bwins/msmmicsession_over_dummycomponentu.def Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -EXPORTS - ?EjectUsbDrives@RHostMassStorage@@QAEHXZ @ 1 NONAME ; int RHostMassStorage::EjectUsbDrives(void) - ?Disconnect@RHostMassStorage@@QAEHXZ @ 2 NONAME ; int RHostMassStorage::Disconnect(void) - ?Connect@RHostMassStorage@@QAEHXZ @ 3 NONAME ; int RHostMassStorage::Connect(void) - ?Version@RHostMassStorage@@QBE?AVTVersion@@XZ @ 4 NONAME ; class TVersion RHostMassStorage::Version(void) const - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/eabi/msmmicsession_over_dummycomponentu.def --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/eabi/msmmicsession_over_dummycomponentu.def Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -EXPORTS - _ZN16RHostMassStorage10DisconnectEv @ 1 NONAME - _ZN16RHostMassStorage14EjectUsbDrivesEv @ 2 NONAME - _ZN16RHostMassStorage7ConnectEv @ 3 NONAME - _ZNK16RHostMassStorage7VersionEv @ 4 NONAME - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/eabi/msmmindicatorsessionu.def --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/eabi/msmmindicatorsessionu.def Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -EXPORTS - _ZN16RHostMassStorage10DisconnectEv @ 1 NONAME - _ZN16RHostMassStorage14EjectUsbDrivesEv @ 2 NONAME - _ZN16RHostMassStorage7ConnectEv @ 3 NONAME - _ZNK16RHostMassStorage7VersionEv @ 4 NONAME - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/group/bld.inf --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/group/bld.inf Wed Sep 01 12:35:00 2010 +0100 @@ -27,11 +27,9 @@ #if defined(SYMBIAN_ENABLE_USB_OTG_HOST) && !defined(WINS) && !defined(X86GCC) msmmclient.mmp -msmmindicatorclient.mmp #endif + PRJ_TESTEXPORTS ../public/msmmclient.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/hostms/msmmclient.h) -PRJ_EXPORTS -../public/msmmindicatorclient.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/hostms/msmmindicatorclient.h) diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/group/msmmclient_base.mmp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/group/msmmclient_base.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/group/msmmclient_base.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -20,6 +20,8 @@ @internalComponent */ +#include + OS_LAYER_SYSTEMINCLUDE_SYMBIAN LIBRARY euser.lib @@ -31,6 +33,5 @@ USERINCLUDE ../../inc USERINCLUDE ../public USERINCLUDE ../../server/public -USERINCLUDE ../traces VENDORID 0x70000001 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/group/msmmclient_over_dummycomponent.mmp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/group/msmmclient_over_dummycomponent.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/group/msmmclient_over_dummycomponent.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -28,6 +28,6 @@ #include "msmmclient_base.mmp" -CAPABILITY ProtServ WriteDeviceData CommDD DiskAdmin NetworkControl TrustedUI +CAPABILITY ProtServ WriteDeviceData CommDD DiskAdmin NetworkControl MACRO __OVER_DUMMYCOMPONENT__ \ No newline at end of file diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/group/msmmindicatorclient.mmp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/group/msmmindicatorclient.mmp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** - @file - @internalComponent -*/ - - -TARGET msmmindicatorsession.dll -TARGETTYPE dll -UID 0x1000008d 0x20031571 - -CAPABILITY All -TCB - -#include "msmmindicatorclient_base.mmp" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/group/msmmindicatorclient_base.mmp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/group/msmmindicatorclient_base.mmp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -/* -* 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" -* 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 -*/ - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -LIBRARY euser.lib - -SOURCEPATH ../src - -SOURCE msmmindicatorclient.cpp - -USERINCLUDE ../../inc -USERINCLUDE ../public -USERINCLUDE ../../server/public -USERINCLUDE ../traces - -VENDORID 0x70000001 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/group/msmmindicatorclient_over_dummycomponent.mmp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/group/msmmindicatorclient_over_dummycomponent.mmp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** - @file - @internalComponent - @test -*/ - - -TARGET msmmicsession_over_dummycomponent.dll -TARGETTYPE dll -UID 0x1000008d 0x0F15655A - -#include "msmmindicatorclient_base.mmp" - -CAPABILITY ProtServ WriteDeviceData CommDD DiskAdmin NetworkControl TrustedUI - -MACRO __OVER_DUMMYCOMPONENT__ \ No newline at end of file diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/public/msmmindicatorclient.h --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/public/msmmindicatorclient.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** - @file - @internalComponent -*/ - -#ifndef MSMMINDICATORCLIENT_H -#define MSMMINDICATORCLIENT_H - -#include - -/** -RHostMassStorage is the interface for Mass Storage Indicator UI to use the MSMM. -*/ -NONSHARABLE_CLASS(RHostMassStorage) : public RSessionBase -{ -public: - // RHostMassStorage Implementation API to add a session to the running MSMM server - IMPORT_C TInt Connect(); - IMPORT_C TInt Disconnect(); - IMPORT_C TVersion Version() const; - - /** Dismount USB drives from File System asynchronously. The function will return immediately to the UI with complete status - The result of dismounting USB drives will be notified to the MSMM Plugin via CMsmmPolicyPluginBase - @return Error code of IPC. - */ - IMPORT_C TInt EjectUsbDrives(); - -}; - -#endif // MSMMINDICATORCLIENT_H - -// End of file diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/src/msmmclient.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/src/msmmclient.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/src/msmmclient.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -26,12 +26,11 @@ #include #include "srvdef.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "msmmclientTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "UsbHostMsmmClient"); #endif - // Costants const TInt KConnectRetry = 0x2; @@ -41,7 +40,7 @@ static TInt StartServer() { - OstTraceFunctionEntry0( MSMMCLIENT_SRC_STARTSERVER_ENTRY ); + LOG_STATIC_FUNC_ENTRY TInt ret = KErrNone; @@ -54,7 +53,6 @@ // Was server process created OK? if (KErrNone != ret) { - OstTraceFunctionExit0( MSMMCLIENT_SRC_STARTSERVER_EXIT ); return ret; } @@ -79,7 +77,6 @@ TInt exitReason = (EExitPanic == server.ExitType()) ? KErrGeneral : serverDiedRequestStatus.Int(); server.Close(); - OstTraceFunctionExit0( MSMMCLIENT_SRC_STARTSERVER_EXIT_DUP1 ); return exitReason; } @@ -90,7 +87,7 @@ EXPORT_C TInt RMsmmSession::Connect() { - OstTraceFunctionEntry0( RMSMMSESSION_CONNECT_ENTRY ); + LOG_FUNC TInt retry = KConnectRetry; // Attempt connect twice then give up TInt ret(KErrNone); @@ -116,28 +113,25 @@ if (KErrNone != ret) { - OstTrace1( TRACE_ERROR, RMSMMSESSION_CONNECT, - "Underlying error value = %d", ret ); - + LOGTEXT2(_L("Underlying error value = %d"), ret) ret = KErrCouldNotConnect; } - OstTraceFunctionExit0( RMSMMSESSION_CONNECT_EXIT ); return ret; } EXPORT_C TInt RMsmmSession::Disconnect() { - OstTraceFunctionEntry0( RMSMMSESSION_DISCONNECT_ENTRY ); + LOG_FUNC + Close(); - OstTraceFunctionExit0( RMSMMSESSION_DISCONNECT_EXIT ); return KErrNone; } // Called to provide the version number of the server we require for this API EXPORT_C TVersion RMsmmSession::Version() const { - OstTraceFunctionEntry0( RMSMMSESSION_VERSION_ENTRY ); + LOG_FUNC return TVersion(KMsmmServMajorVersionNumber, KMsmmServMinorVersionNumber, @@ -148,7 +142,7 @@ const TUSBMSDeviceDescription& aDevice, TUint8 aInterfaceNumber, TUint32 aInterfaceToken) { - OstTraceFunctionEntry0( RMSMMSESSION_ADDFUNCTION_ENTRY ); + LOG_FUNC TInt ret(KErrNone); @@ -160,13 +154,12 @@ ret = SendReceive(EHostMsmmServerAddFunction, usbmsIpcArgs); - OstTraceFunctionExit0( RMSMMSESSION_ADDFUNCTION_EXIT ); return ret; } EXPORT_C TInt RMsmmSession::RemoveDevice(TUint aDevice) { - OstTraceFunctionEntry0( RMSMMSESSION_REMOVEDEVICE_ENTRY ); + LOG_FUNC TInt ret(KErrNone); @@ -174,31 +167,28 @@ ret = SendReceive(EHostMsmmServerRemoveDevice, usbmsIpcArgs); - OstTraceFunctionExit0( RMSMMSESSION_REMOVEDEVICE_EXIT ); return ret; } EXPORT_C TInt RMsmmSession::__DbgFailNext(TInt aCount) { - OstTraceFunctionEntry0( RMSMMSESSION_DBGFAILNEXT_ENTRY ); + LOG_FUNC #ifdef _DEBUG return SendReceive(EHostMsmmServerDbgFailNext, TIpcArgs(aCount)); #else (void)aCount; - OstTraceFunctionExit0( RMSMMSESSION_DBGFAILNEXT_EXIT ); return KErrNone; #endif } EXPORT_C TInt RMsmmSession::__DbgAlloc() { - OstTraceFunctionEntry0( RMSMMSESSION_DBGALLOC_ENTRY ); + LOG_FUNC #ifdef _DEBUG return SendReceive(EHostMsmmServerDbgAlloc); #else - OstTraceFunctionExit0( RMSMMSESSION_DBGALLOC_EXIT ); return KErrNone; #endif } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/src/msmmindicatorclient.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/src/msmmindicatorclient.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,116 +0,0 @@ -/* -* 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" -* 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 - -#include "srvdef.h" -#include "msmmindicatorclient.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "msmmindicatorclientTraces.h" -#endif - - - -// Costants -const TInt KConnectRetry = 0x2; - - -//--------------------------------------------------------------------------- -// RHostMassStorage -// -// Public member functions - -EXPORT_C TInt RHostMassStorage::Connect() - { - OstTraceFunctionEntry0( RHOSTMASSSTORAGE_CONNECT_ENTRY ); - - TInt retry = KConnectRetry; // Attempt to add a session to MSMM Server twice - TInt ret(KErrNone); - FOREVER - { - ret = CreateSession(KMsmmServerName, Version(), KDefaultMessageSlots); - // We are not allowed to start the server - if ((KErrNotFound == ret) || (KErrServerTerminated == ret)) - { - OstTrace1( TRACE_NORMAL, RHOSTMASSSTORAGE_CONNECT, - "Underlying error value = %d", ret ); - return KErrNotReady; - } - if ( KErrNone == ret ) - { - break; - } - if ((--retry) == 0) - { - break; - } - } - OstTraceFunctionExit0( RHOSTMASSSTORAGE_CONNECT_EXIT ); - return ret; - } - -EXPORT_C TInt RHostMassStorage::Disconnect() - { - OstTraceFunctionEntry0( RHOSTMASSSTORAGE_DISCONNECT_ENTRY ); - - Close(); - OstTraceFunctionExit0( RHOSTMASSSTORAGE_DISCONNECT_EXIT ); - return KErrNone; - } - -/** - * Called to validate the version of the server we require for this API - * @return TVersion The version of MSMM Server that supports this API - */ -EXPORT_C TVersion RHostMassStorage::Version() const - { - OstTraceFunctionEntry0( RHOSTMASSSTORAGE_VERSION_ENTRY ); - - return TVersion(KMsmmServMajorVersionNumber, - KMsmmServMinorVersionNumber, - KMsmmServBuildVersionNumber); - } - -/** - * Dismount USB drives from File System asynchronously. The function will return immediately to the UI with complete status - * The result of dismounting USB drives will be notified to the MSMM Plugin via CMsmmPolicyPluginBase - * @return Error code of IPC. -*/ - -EXPORT_C TInt RHostMassStorage::EjectUsbDrives() - { - OstTraceFunctionEntry0( RHOSTMASSSTORAGE_EJECTUSBDRIVES_ENTRY ); - - TInt ret(KErrNone); - - TIpcArgs usbmsIpcArgs; - - ret = Send(EHostMsmmServerEjectUsbDrives, usbmsIpcArgs); - - OstTraceFunctionExit0( RHOSTMASSSTORAGE_EJECTUSBDRIVES_EXIT ); - return ret; - } - - -// End of file diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/client/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_CONNECT_ENTRY=0x11 -[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_CONNECT_EXIT=0x12 -[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_DISCONNECT_ENTRY=0x13 -[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_DISCONNECT_EXIT=0x14 -[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_EJECTUSBDRIVES_ENTRY=0x16 -[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_EJECTUSBDRIVES_EXIT=0x17 -[TRACE]TRACE_FLOW[0x8A]_RHOSTMASSSTORAGE_VERSION_ENTRY=0x15 -[TRACE]TRACE_NORMAL[0x86]_RHOSTMASSSTORAGE_CONNECT=0x1 -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_RMSMMSESSION_CONNECT=0x1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_MSMMCLIENT_SRC_STARTSERVER_ENTRY=0x1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_MSMMCLIENT_SRC_STARTSERVER_EXIT=0x2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_MSMMCLIENT_SRC_STARTSERVER_EXIT_DUP1=0x3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_ADDFUNCTION_ENTRY=0x9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_ADDFUNCTION_EXIT=0xa -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_CONNECT_ENTRY=0x4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_CONNECT_EXIT=0x5 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DBGALLOC_ENTRY=0xf -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DBGALLOC_EXIT=0x10 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DBGFAILNEXT_ENTRY=0xd -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DBGFAILNEXT_EXIT=0xe -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DISCONNECT_ENTRY=0x6 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_DISCONNECT_EXIT=0x7 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_REMOVEDEVICE_ENTRY=0xb -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_REMOVEDEVICE_EXIT=0xc -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RMSMMSESSION_VERSION_ENTRY=0x8 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/group/bld.inf --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/group/bld.inf Wed Sep 01 12:35:00 2010 +0100 @@ -23,10 +23,10 @@ PRJ_PLATFORMS ARMV5 GCCXML +#include "../server/group/bld.inf" #include "../client/group/bld.inf" -#include "../server/group/bld.inf" #include "../referencepolicyplugin/group/bld.inf" +#include "../refppnotifier/group/bld.inf" PRJ_EXPORTS usbhostmsmm.iby /epoc32/rom/include/usbhostmsmm.iby - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/group/msmm_over_dummycomponent_bld.inf --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/group/msmm_over_dummycomponent_bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/group/msmm_over_dummycomponent_bld.inf Wed Sep 01 12:35:00 2010 +0100 @@ -28,5 +28,4 @@ PRJ_TESTMMPFILES ../server/group/msmmserver_over_dummycomponent.mmp ../client/group/msmmclient_over_dummycomponent.mmp -../client/group/msmmindicatorclient_over_dummycomponent.mmp ../referencepolicyplugin/group/refpp_over_dummycomponent.mmp diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/group/usbhostmsmm.iby --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/group/usbhostmsmm.iby Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/group/usbhostmsmm.iby Wed Sep 01 12:35:00 2010 +0100 @@ -30,7 +30,6 @@ file=ABI_DIR\USB_DIR\msmmsession.dll Sys\bin\msmmsession.dll file=ABI_DIR\USB_DIR\msmmserver.exe Sys\bin\msmmserver.exe -file=ABI_DIR\USB_DIR\msmmindicatorsession.dll Sys\bin\msmmindicatorsession.dll #endif diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/inc/srvdef.h --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/inc/srvdef.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/inc/srvdef.h Wed Sep 01 12:35:00 2010 +0100 @@ -48,12 +48,6 @@ const TUint32 KFDFWSecureId = 0x10282B48; #endif -#ifdef __OVER_DUMMYCOMPONENT__ -const TUint32 KSidHbDeviceDialogAppServer = 0x20022FC4; // SID for unit test project -#else -const TUint32 KSidHbDeviceDialogAppServer = 0x20022FC5; //SID for indicator UI that will call eject usb drives -#endif - /** The Msmm Version numbers */ const TUint KMsmmServMajorVersionNumber = 1; const TUint KMsmmServMinorVersionNumber = 0; @@ -66,7 +60,6 @@ EHostMsmmServerRemoveDevice = 2, // Remove device request EHostMsmmServerDbgFailNext = 3, EHostMsmmServerDbgAlloc = 4, - EHostMsmmServerEjectUsbDrives = 5, // Dismount USB drives request EHostMsmmServerEndMarker // Request end mark }; @@ -74,6 +67,6 @@ const TUint KDefaultMessageSlots = 1; // Max connection number -const TInt KMaxClientCount = 2; +const TInt KMaxClientCount = 1; #endif // #ifndef SRVDEF_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/group/referencepolicyplugin.mmh --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/group/referencepolicyplugin.mmh Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/group/referencepolicyplugin.mmh Wed Sep 01 12:35:00 2010 +0100 @@ -24,6 +24,7 @@ UID 0x10009D8d 0x10285c46 #include "../../server/public/hostmscaps.mmh" +#include OS_LAYER_SYSTEMINCLUDE_SYMBIAN @@ -40,8 +41,6 @@ USERINCLUDE ../inc USERINCLUDE ../../inc -USERINCLUDE ../traces - SOURCEPATH ../data NOEXPORTLIBRARY diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/group/refpp_over_dummycomponent.mmp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/group/refpp_over_dummycomponent.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/group/refpp_over_dummycomponent.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -29,6 +29,4 @@ TARGET dummyreferencepolicyplugin.rsc END -LIBRARY dummynotifier.lib - MACRO __OVER_DUMMYCOMPONENT__ diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/inc/refppnotificationman.h --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/inc/refppnotificationman.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/inc/refppnotificationman.h Wed Sep 01 12:35:00 2010 +0100 @@ -27,10 +27,6 @@ #include #include -#ifdef __OVER_DUMMYCOMPONENT__ - #include -#endif - typedef RArray THostMsErrDataQueue; const TInt KMaxResponseStringLen = 16; @@ -58,11 +54,7 @@ private: THostMsErrDataQueue iErrorQueue; TBuf8<16> iResponse; -#ifdef __OVER_DUMMYCOMPONENT__ - RDummyNotifier iNotifier; -#else RNotifier iNotifier; -#endif }; #endif /*REFPPNOTIFICATIONMAN_H*/ diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/src/proxy.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/src/proxy.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/src/proxy.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -27,13 +27,11 @@ #include "referencepolicyplugin.h" #include "referenceplugin.hrh" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "proxyTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "UsbHostMsmmRefPP"); #endif - - // Provides a key value pair table, this is used to identify // the correct construction function for the requested interface. const TImplementationProxy ImplementationTable[] = @@ -46,11 +44,9 @@ EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount) { - OstTrace0( TRACE_NORMAL, REF_REFERENCEPOLICYPLUGIN_SRC_IMPLEMENTATIONGROUPPROXY, - ">>ImplementationGroupProxy()" ); + LOGTEXT(_L(">>ImplementationGroupProxy()")); aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); - OstTrace0( TRACE_NORMAL, REF_REFERENCEPOLICYPLUGIN_SRC_IMPLEMENTATIONGROUPPROXY_DUP1, - "< #include "refppnotificationman.h" #include "srvpanic.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "referencepolicypluginTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "UsbHostMsmmRefPP"); #endif - - // Global Variables const TUid KHostMsRepositoryUid = {0x10285c46}; const TUint32 KPermittedRangeUid = 0x00010000; @@ -49,34 +47,29 @@ CReferencePolicyPlugin::~CReferencePolicyPlugin() { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_CREFERENCEPOLICYPLUGIN_DES_ENTRY ); - + LOG_FUNC Cancel(); ClearHistory(); // Remove all buffered history record. delete iRepository; delete iNotificationMan; iFs.Close(); - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_CREFERENCEPOLICYPLUGIN_DES_EXIT ); } CReferencePolicyPlugin* CReferencePolicyPlugin::NewL() { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_NEWL_ENTRY ); - + LOG_STATIC_FUNC_ENTRY CReferencePolicyPlugin* self = new (ELeave) CReferencePolicyPlugin; CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(self); - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_NEWL_EXIT ); return self; } void CReferencePolicyPlugin::RetrieveDriveLetterL(TText& aDriveName, const TPolicyRequestData& aData, TRequestStatus& aStatus) { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_RETRIEVEDRIVELETTERL_TTEXT_TPOLICYREQUESTDATA_TREQUESTSTATUS_ENTRY ); - + LOG_FUNC Cancel(); aStatus = KRequestPending; iClientStatus = &aStatus; @@ -85,22 +78,18 @@ // In a licensee owned policy plugin, it shall complete client // request in RunL() in general Complete(KErrNone); - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_RETRIEVEDRIVELETTERL_TTEXT_TPOLICYREQUESTDATA_TREQUESTSTATUS_EXIT ); } void CReferencePolicyPlugin::CancelRetrieveDriveLetter() { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_CANCELRETRIEVEDRIVELETTER_ENTRY ); - + LOG_FUNC Cancel(); - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_CANCELRETRIEVEDRIVELETTER_EXIT ); } void CReferencePolicyPlugin::SaveLatestMountInfoL( const TPolicyMountRecord& aData, TRequestStatus& aStatus) { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_SAVELATESTMOUNTINFOL_TPOLICYMOUNTRECORD_TREQUESTSTATUS_ENTRY ); - + LOG_FUNC Cancel(); aStatus = KRequestPending; iClientStatus = &aStatus; @@ -109,70 +98,56 @@ // In a licensee owned policy plugin, it shall complete client // request in RunL() in general Complete(KErrNone); - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_SAVELATESTMOUNTINFOL_TPOLICYMOUNTRECORD_TREQUESTSTATUS_EXIT ); } void CReferencePolicyPlugin::CancelSaveLatestMountInfo() { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_CANCELSAVELATESTMOUNTINFO_ENTRY ); - + LOG_FUNC Cancel(); - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_CANCELSAVELATESTMOUNTINFO_EXIT ); } void CReferencePolicyPlugin::SendErrorNotificationL( const THostMsErrData& aErrData) { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_SENDERRORNOTIFICATIONL_ENTRY ); - + LOG_FUNC iNotificationMan->SendErrorNotificationL(aErrData); - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_SENDERRORNOTIFICATIONL_EXIT ); } void CReferencePolicyPlugin::GetSuspensionPolicy(TSuspensionPolicy& aPolicy) { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_GETSUSPENSIONPOLICY_ENTRY ); - + LOG_FUNC aPolicy = iSuspensionPolicy; - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_GETSUSPENSIONPOLICY_EXIT ); } void CReferencePolicyPlugin::DoCancel() { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_DOCANCEL_ENTRY ); - + LOG_FUNC // No more work need to do in current implementation of reference // policy plugin. // In a licensee owned policy plugin, it shall complete client // request here with KErrCancel. - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_DOCANCEL_EXIT ); } void CReferencePolicyPlugin::RunL() { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_RUNL_ENTRY ); - + LOG_FUNC // No more work need to do in current implementation of reference // policy plugin. // In a licensee owned policy plugin, it shall complete client // request here with a proper error code. - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_RUNL_EXIT ); } CReferencePolicyPlugin::CReferencePolicyPlugin() : CMsmmPolicyPluginBase(), iHistory(KHistoryGranularity) { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_CREFERENCEPOLICYPLUGIN_CONS_ENTRY ); - + LOG_FUNC CActiveScheduler::Add(this); - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_CREFERENCEPOLICYPLUGIN_CONS_EXIT ); } void CReferencePolicyPlugin::ConstructL() { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_CONSTRUCTL_ENTRY ); - + LOG_FUNC iRepository = CRepository::NewL(KHostMsRepositoryUid); User::LeaveIfError(iFs.Connect()); iNotificationMan = CMsmmPolicyNotificationManager::NewL(); @@ -185,14 +160,13 @@ User::LeaveIfError(iRepository->Get( KMediaPollingTimeUid, value)); iSuspensionPolicy.iStatusPollingInterval = value; - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_CONSTRUCTL_EXIT ); } void CReferencePolicyPlugin::RetrieveDriveLetterL(TText& aDriveName, const TPolicyRequestData& aData) { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_RETRIEVEDRIVELETTERL_TTEXT_TPOLICYREQUESTDATA_ENTRY ); - + LOG_FUNC + TDriveList availableNames; FilterFsForbiddenDriveListL(availableNames); @@ -227,17 +201,15 @@ aDriveName = history.iDriveName; } } - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_RETRIEVEDRIVELETTERL_TTEXT_TPOLICYREQUESTDATA_EXIT ); } void CReferencePolicyPlugin::SaveLatestMountInfoL( const TPolicyMountRecord& aData) { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_SAVELATESTMOUNTINFOL_TPOLICYMOUNTRECORD_ENTRY ); - + LOG_FUNC + if (iMaxHistoryRecCount == 0) // This policy disable history { - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_SAVELATESTMOUNTINFOL_TPOLICYMOUNTRECORD_EXIT ); return; } @@ -271,30 +243,24 @@ TPckg historyPckg(*iHistory[index]); User::LeaveIfError(iRepository->Set(historyRecordUid++, historyPckg)); } - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_SAVELATESTMOUNTINFOL_TPOLICYMOUNTRECORD_EXIT_DUP1 ); } void CReferencePolicyPlugin::Complete(TInt aError) { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_COMPLETE_ENTRY ); - + LOG_FUNC User::RequestComplete(iClientStatus, aError); - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_COMPLETE_EXIT ); } void CReferencePolicyPlugin::PrepareAvailableDriveList() { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_PREPAREAVAILABLEDRIVELIST_ENTRY ); - + LOG_FUNC iAvailableDrvList.SetLength(KMaxDrives); iAvailableDrvList.Fill(0, KMaxDrives); - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_PREPAREAVAILABLEDRIVELIST_EXIT ); } void CReferencePolicyPlugin::AvailableDriveListL() { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_AVAILABLEDRIVELISTL_ENTRY ); - + LOG_FUNC TBuf8 permittedRange; TDriveList forbiddenList; @@ -314,14 +280,12 @@ } } } - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_AVAILABLEDRIVELISTL_EXIT ); } void CReferencePolicyPlugin::FilterFsForbiddenDriveListL( TDriveList& aAvailableNames) { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_FILTERFSFORBIDDENDRIVELISTL_ENTRY ); - + LOG_FUNC TDriveList names; names.SetLength(KMaxDrives); @@ -338,15 +302,13 @@ } names.SetLength(count); aAvailableNames = names; - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_FILTERFSFORBIDDENDRIVELISTL_EXIT ); } void CReferencePolicyPlugin::FindFirstNotUsedDriveLetter( const TDriveList& aAvailableNames, TText& aDriveName) { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_FINDFIRSTNOTUSEDDRIVELETTER_ENTRY ); - + LOG_FUNC TDriveList usedLetter; TUint index = 0; for (index = 0; index < iHistory.Count(); index++) @@ -359,18 +321,15 @@ if (usedLetter.Locate(aAvailableNames[index]) == KErrNotFound) { aDriveName = aAvailableNames[index]; - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_FINDFIRSTNOTUSEDDRIVELETTER_EXIT ); return; // A unused drive letter found out } } - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_FINDFIRSTNOTUSEDDRIVELETTER_EXIT_DUP1 ); } // Retrieve history from CR void CReferencePolicyPlugin::RetrieveHistoryL() { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_RETRIEVEHISTORYL_ENTRY ); - + LOG_FUNC // Read history record number from CR TInt historyCount(0); User::LeaveIfError( @@ -393,25 +352,21 @@ CleanupStack::Pop(record); } } - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_RETRIEVEHISTORYL_EXIT ); } // Remove all buffered history void CReferencePolicyPlugin::ClearHistory() { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_CLEARHISTORY_ENTRY ); - + LOG_FUNC iHistory.ResetAndDestroy(); iHistory.Close(); - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_CLEARHISTORY_EXIT ); } // Search in history for a logic unit TInt CReferencePolicyPlugin::SearchHistoryByLogicUnit( const TPolicyRequestData& aLogicUnit) const { - OstTraceFunctionEntry0( REF_CREFERENCEPOLICYPLUGIN_SEARCHHISTORYBYLOGICUNIT_ENTRY ); - + LOG_FUNC TInt ret(KErrNotFound); TUint count = iHistory.Count(); for (TUint index = 0; index < count; index ++) @@ -428,12 +383,10 @@ (logicalUnit.iOtgInformation == aLogicUnit.iOtgInformation)) { // Matched - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_SEARCHHISTORYBYLOGICUNIT_EXIT ); return index; } } // Can't find any matched records - OstTraceFunctionExit0( REF_CREFERENCEPOLICYPLUGIN_SEARCHHISTORYBYLOGICUNIT_EXIT_DUP1 ); return ret; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/src/refppnotificationman.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/src/refppnotificationman.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/src/refppnotificationman.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -24,13 +24,12 @@ #include #include #include "srvpanic.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "refppnotificationmanTraces.h" + + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "UsbHostMsmmRefPP"); #endif - - #ifdef __OVER_DUMMYCOMPONENT__ const TUid KMountPolicyNotifierUid = {0x1028653E}; #else @@ -39,112 +38,89 @@ CMsmmPolicyNotificationManager::~CMsmmPolicyNotificationManager() { - OstTraceFunctionEntry0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_CMSMMPOLICYNOTIFICATIONMANAGER_DES_ENTRY ); - + LOG_FUNC Cancel(); iErrorQueue.Close(); iNotifier.Close(); - OstTraceFunctionExit0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_CMSMMPOLICYNOTIFICATIONMANAGER_DES_EXIT ); } CMsmmPolicyNotificationManager* CMsmmPolicyNotificationManager::NewL() { - OstTraceFunctionEntry0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_NEWL_ENTRY ); - + LOG_STATIC_FUNC_ENTRY CMsmmPolicyNotificationManager* self = CMsmmPolicyNotificationManager::NewLC(); CleanupStack::Pop(self); - OstTraceFunctionExit0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_NEWL_EXIT ); return self; } CMsmmPolicyNotificationManager* CMsmmPolicyNotificationManager::NewLC() { - OstTraceFunctionEntry0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_NEWLC_ENTRY ); - + LOG_STATIC_FUNC_ENTRY CMsmmPolicyNotificationManager* self = new (ELeave) CMsmmPolicyNotificationManager(); CleanupStack::PushL(self); self->ConstructL(); - OstTraceFunctionExit0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_NEWLC_EXIT ); return self; } void CMsmmPolicyNotificationManager::SendErrorNotificationL( const THostMsErrData& aErrData) { - OstTraceFunctionEntry0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDERRORNOTIFICATIONL_ENTRY ); - + LOG_FUNC // Print error notification data to log - OstTrace1( TRACE_NORMAL, REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDERRORNOTIFICATIONL, - "Err:iError = %d", aErrData.iError ); - OstTrace1( TRACE_NORMAL, REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDERRORNOTIFICATIONL_DUP1, - "Err:iE32Error = %d", aErrData.iE32Error ); - OstTrace1( TRACE_NORMAL, REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDERRORNOTIFICATIONL_DUP2, - "Err:iDriveName = %d", aErrData.iDriveName ); - OstTraceExt1( TRACE_NORMAL, REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDERRORNOTIFICATIONL_DUP3, - "Err:iManufacturerString = %S", aErrData.iManufacturerString ); - OstTraceExt1( TRACE_NORMAL, REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDERRORNOTIFICATIONL_DUP4, - "Err:iProductString = %S", aErrData.iProductString ); - + LOGTEXT2(_L("Err:iError = %d"), aErrData.iError); + LOGTEXT2(_L("Err:iE32Error = %d"), aErrData.iE32Error); + LOGTEXT2(_L("Err:iDriveName = %d"), aErrData.iDriveName); + LOGTEXT2(_L("Err:iManufacturerString = %S"), &aErrData.iManufacturerString); + LOGTEXT2(_L("Err:iProductString = %S"), &aErrData.iProductString); + THostMsErrorDataPckg errPckg = aErrData; iErrorQueue.AppendL(errPckg); if (!IsActive()) { SendNotification(); } - OstTraceFunctionExit0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDERRORNOTIFICATIONL_EXIT ); } void CMsmmPolicyNotificationManager::RunL() { - OstTraceFunctionEntry0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_RUNL_ENTRY ); - + LOG_FUNC iErrorQueue.Remove(0); if (iErrorQueue.Count() > 0) { SendNotification(); } - OstTraceFunctionExit0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_RUNL_EXIT ); } void CMsmmPolicyNotificationManager::DoCancel() { - OstTraceFunctionEntry0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_DOCANCEL_ENTRY ); - + LOG_FUNC iErrorQueue.Reset(); iNotifier.CancelNotifier(KMountPolicyNotifierUid); - OstTraceFunctionExit0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_DOCANCEL_EXIT ); } CMsmmPolicyNotificationManager::CMsmmPolicyNotificationManager(): CActive(EPriorityStandard) { - OstTraceFunctionEntry0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_CMSMMPOLICYNOTIFICATIONMANAGER_ENTRY ); - + LOG_FUNC CActiveScheduler::Add(this); - OstTraceFunctionExit0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_CMSMMPOLICYNOTIFICATIONMANAGER_EXIT ); } void CMsmmPolicyNotificationManager::ConstructL() { - OstTraceFunctionEntry0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_CONSTRUCTL_ENTRY ); - + LOG_FUNC User::LeaveIfError(iNotifier.Connect()); - OstTraceFunctionExit0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_CONSTRUCTL_EXIT ); } void CMsmmPolicyNotificationManager::SendNotification() { - OstTraceFunctionEntry0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDNOTIFICATION_ENTRY ); - + LOG_FUNC iNotifier.StartNotifierAndGetResponse( iStatus, KMountPolicyNotifierUid, iErrorQueue[0], iResponse); SetActive(); - OstTraceFunctionExit0( REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDNOTIFICATION_EXIT ); } // End of file diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/referencepolicyplugin/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_CMSMMPOLICYNOTIFICATIONMANAGER_DES_ENTRY=0x30 -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_CMSMMPOLICYNOTIFICATIONMANAGER_DES_EXIT=0x31 -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_CMSMMPOLICYNOTIFICATIONMANAGER_ENTRY=0x3c -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_CMSMMPOLICYNOTIFICATIONMANAGER_EXIT=0x3d -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_CONSTRUCTL_ENTRY=0x3e -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_CONSTRUCTL_EXIT=0x3f -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_DOCANCEL_ENTRY=0x3a -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_DOCANCEL_EXIT=0x3b -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_NEWLC_ENTRY=0x34 -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_NEWLC_EXIT=0x35 -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_NEWL_ENTRY=0x32 -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_NEWL_EXIT=0x33 -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_RUNL_ENTRY=0x38 -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_RUNL_EXIT=0x39 -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDERRORNOTIFICATIONL_ENTRY=0x36 -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDERRORNOTIFICATIONL_EXIT=0x37 -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDNOTIFICATION_ENTRY=0x40 -[TRACE]TRACE_FLOW[0x8A]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDNOTIFICATION_EXIT=0x41 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_AVAILABLEDRIVELISTL_ENTRY=0x22 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_AVAILABLEDRIVELISTL_EXIT=0x23 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_CANCELRETRIEVEDRIVELETTER_ENTRY=0x7 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_CANCELRETRIEVEDRIVELETTER_EXIT=0x8 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_CANCELSAVELATESTMOUNTINFO_ENTRY=0xb -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_CANCELSAVELATESTMOUNTINFO_EXIT=0xc -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_CLEARHISTORY_ENTRY=0x2b -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_CLEARHISTORY_EXIT=0x2c -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_COMPLETE_ENTRY=0x1e -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_COMPLETE_EXIT=0x1f -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_CONSTRUCTL_ENTRY=0x17 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_CONSTRUCTL_EXIT=0x18 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_CREFERENCEPOLICYPLUGIN_CONS_ENTRY=0x15 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_CREFERENCEPOLICYPLUGIN_CONS_EXIT=0x16 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_CREFERENCEPOLICYPLUGIN_DES_ENTRY=0x1 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_CREFERENCEPOLICYPLUGIN_DES_EXIT=0x2 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_DOCANCEL_ENTRY=0x11 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_DOCANCEL_EXIT=0x12 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_FILTERFSFORBIDDENDRIVELISTL_ENTRY=0x24 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_FILTERFSFORBIDDENDRIVELISTL_EXIT=0x25 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_FINDFIRSTNOTUSEDDRIVELETTER_ENTRY=0x26 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_FINDFIRSTNOTUSEDDRIVELETTER_EXIT=0x27 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_FINDFIRSTNOTUSEDDRIVELETTER_EXIT_DUP1=0x28 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_GETSUSPENSIONPOLICY_ENTRY=0xf -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_GETSUSPENSIONPOLICY_EXIT=0x10 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_NEWL_ENTRY=0x3 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_NEWL_EXIT=0x4 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_PREPAREAVAILABLEDRIVELIST_ENTRY=0x20 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_PREPAREAVAILABLEDRIVELIST_EXIT=0x21 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_RETRIEVEDRIVELETTERL_TTEXT_TPOLICYREQUESTDATA_ENTRY=0x58 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_RETRIEVEDRIVELETTERL_TTEXT_TPOLICYREQUESTDATA_EXIT=0x59 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_RETRIEVEDRIVELETTERL_TTEXT_TPOLICYREQUESTDATA_TREQUESTSTATUS_ENTRY=0x54 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_RETRIEVEDRIVELETTERL_TTEXT_TPOLICYREQUESTDATA_TREQUESTSTATUS_EXIT=0x55 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_RETRIEVEHISTORYL_ENTRY=0x29 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_RETRIEVEHISTORYL_EXIT=0x2a -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_RUNL_ENTRY=0x13 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_RUNL_EXIT=0x14 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_SAVELATESTMOUNTINFOL_TPOLICYMOUNTRECORD_ENTRY=0x5a -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_SAVELATESTMOUNTINFOL_TPOLICYMOUNTRECORD_EXIT=0x5b -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_SAVELATESTMOUNTINFOL_TPOLICYMOUNTRECORD_EXIT_DUP1=0x5c -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_SAVELATESTMOUNTINFOL_TPOLICYMOUNTRECORD_TREQUESTSTATUS_ENTRY=0x56 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_SAVELATESTMOUNTINFOL_TPOLICYMOUNTRECORD_TREQUESTSTATUS_EXIT=0x57 -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_SEARCHHISTORYBYLOGICUNIT_ENTRY=0x2d -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_SEARCHHISTORYBYLOGICUNIT_EXIT=0x2e -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_SEARCHHISTORYBYLOGICUNIT_EXIT_DUP1=0x2f -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_SENDERRORNOTIFICATIONL_ENTRY=0xd -[TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_SENDERRORNOTIFICATIONL_EXIT=0xe -[TRACE]TRACE_NORMAL[0x86]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDERRORNOTIFICATIONL=0x3 -[TRACE]TRACE_NORMAL[0x86]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDERRORNOTIFICATIONL_DUP1=0x4 -[TRACE]TRACE_NORMAL[0x86]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDERRORNOTIFICATIONL_DUP2=0x5 -[TRACE]TRACE_NORMAL[0x86]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDERRORNOTIFICATIONL_DUP3=0x6 -[TRACE]TRACE_NORMAL[0x86]_REF_CMSMMPOLICYNOTIFICATIONMANAGER_SENDERRORNOTIFICATIONL_DUP4=0x7 -[TRACE]TRACE_NORMAL[0x86]_REF_REFERENCEPOLICYPLUGIN_SRC_IMPLEMENTATIONGROUPPROXY=0x1 -[TRACE]TRACE_NORMAL[0x86]_REF_REFERENCEPOLICYPLUGIN_SRC_IMPLEMENTATIONGROUPPROXY_DUP1=0x2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREFERENCEPOLICYPLUGIN_RETRIEVEDRIVELETTERL_ENTRY=0x42 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_RETRIEVEDRIVELETTERL_DUP1_ENTRY=0x4f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_RETRIEVEDRIVELETTERL_DUP1_EXIT=0x50 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_RETRIEVEDRIVELETTERL_ENTRY=0x4d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_RETRIEVEDRIVELETTERL_EXIT=0x4e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_SAVELATESTMOUNTINFOL_DUP1_ENTRY=0x51 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_SAVELATESTMOUNTINFOL_DUP1_EXIT=0x52 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_SAVELATESTMOUNTINFOL_DUP1_EXIT_DUP1=0x53 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_SAVELATESTMOUNTINFOL_ENTRY=0x4b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_SAVELATESTMOUNTINFOL_EXIT=0x4c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CREFERENCEPOLICYPLUGIN_SAVELATESTMOUNTINFOL_EXIT_DUP1=0x1d diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/group/bld.inf Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,33 @@ +/* +* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +/** + @file + @internalComponent +*/ + +PRJ_PLATFORMS +ARMV5 GCCXML + +PRJ_TESTEXPORTS +refppnotifier.iby /epoc32/rom/include/refppnotifier.iby + +PRJ_TESTMMPFILES + +#if defined(SYMBIAN_ENABLE_USB_OTG_HOST) && !defined(WINS) && !defined(X86GCC) +refppnotifier.mmp +#endif \ No newline at end of file diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/group/refppnotifier.iby --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/group/refppnotifier.iby Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,35 @@ +/* +* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +/** + @file + @internalComponent +*/ + +#ifndef __REFPPNOTIFIER_IBY__ +#define __REFPPNOTIFIER_IBY__ + +#include +#ifdef _DEBUG +ECOM_PLUGIN_UDEB(refppnotifier.dll, refppnotifier.rsc) +#else +ECOM_PLUGIN(refppnotifier.dll, refppnotifier.rsc) +#endif + +data=DATAZ_\resource\apps\dialog.rsc "\resource\apps\dialog.rsc" + +#endif // __REFPPNOTIFIER_IBY__ diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/group/refppnotifier.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/group/refppnotifier.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,55 @@ +/* +* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +/** + @file + @internalComponent +*/ + +TARGET refppnotifier.dll +TARGETTYPE PLUGIN +UID 0x10009D8D 0x10285ddd + +CAPABILITY ProtServ TrustedUI + + +OS_LAYER_SYSTEMINCLUDE_SYMBIAN +APP_LAYER_SYSTEMINCLUDE_SYMBIAN + +SOURCEPATH ../src +SOURCE refppnotifier.cpp refppdialog.cpp + +RESOURCE refppnotifier.rss + +START RESOURCE dialog.rss +HEADER +TARGETPATH /resource/apps +END + +LIBRARY euser.lib +LIBRARY ecom.lib +LIBRARY eikdlg.lib +LIBRARY eiksrv.lib +LIBRARY eikcoctl.lib +LIBRARY cone.lib +LIBRARY eikcdlg.lib + +USERINCLUDE ../inc + +NOEXPORTLIBRARY + +VENDORID 0x70000001 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/inc/refppdialog.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/inc/refppdialog.h Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,54 @@ +/* +* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +/** + @file + @internalComponent +*/ + +#ifndef CREFPPDIALOG_H +#define CREFPPDIALOG_H + +// INCLUDES +#include +// CLASS DECLARATION + +/** + The CRefPPDialog class + This is a subclass derived from CEikDialog, it is used by notifier to display + the message of Errors from MS mount manager. + */ +class CRefPPDialog : public CEikDialog + { +public: + + ~CRefPPDialog(); + static CRefPPDialog* NewL(TBool* aDlgFlag); + static CRefPPDialog* NewLC(TBool* aDlgFlag); + +private: + + CRefPPDialog(TBool* aDlgFlag); + void ConstructL(); +protected: + virtual TBool OkToExitL(TInt aButtonId); +private: + TBool* iDlgFlagInOwner; + + }; // class CRefPPDialog + +#endif // CREFPPDIALOG_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/inc/refppnotifier.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/inc/refppnotifier.h Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,67 @@ +/* +* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +/** + @file + @internalComponent +*/ + +#ifndef REFPPNOTIFIER_H +#define REFPPNOTIFIER_H + +#include +#include +#include "refppdialog.h" + +/** + The CMsmmRefPolicyPluginNotifier class + This is a subclass derived from MEikSrvNotifierBase2, it is used as a ECOM + plug-in of notify service to provide the function of showing a dialog when + error occured in MS mount manager. + */ +NONSHARABLE_CLASS (CMsmmRefPolicyPluginNotifier) : public MEikSrvNotifierBase2 + { +public: + ~CMsmmRefPolicyPluginNotifier(); + static CMsmmRefPolicyPluginNotifier* NewL(); + static CMsmmRefPolicyPluginNotifier* NewLC(); + +public: + + // from MEikSrvNotifierBase2 + void Release(); + TNotifierInfo RegisterL(); + TNotifierInfo Info() const; + TPtrC8 StartL(const TDesC8& aBuffer); + void StartL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage); + void Cancel(); + TPtrC8 UpdateL(const TDesC8& aBuffer); + +private: + CMsmmRefPolicyPluginNotifier(); + void ConstructL(); + +private: + TNotifierInfo iInfo; + RMessagePtr2 iMessage; + CCoeEnv* iCoeEnv; + TInt iOffset; + TBool iDialogIsVisible; + CRefPPDialog* iDialogPtr; + }; + +#endif /*REFPPNOTIFIER_H*/ diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/inc/refppnotifier.hrh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/inc/refppnotifier.hrh Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,35 @@ +/* +* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +/** + @file + @internalComponent +*/ + +#ifndef REFPPNOTIFIER_HRH +#define REFPPNOTIFIER_HRH + +// Implementation UID for reference notifier of Policy plug-in +#define KUidMsmmReferenceNotifierImp 0x10285DDE + +enum +{ + EReferencePPNotifierButton, //ID of button on dialog + EReferencePPNotifierMsg //ID of the label on dialog +}; + +#endif /*REFPPNOTIFIER_HRH*/ diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/src/dialog.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/src/dialog.rss Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,65 @@ +/* +* Copyright (c) 2008-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: +* Reference policy plugin notifier implementation resource file +* +*/ + +/** + @file + @internalComponent +*/ + +#include +#include +#include +#include +#include "refppnotifier.hrh" +NAME REFN + +RESOURCE RSS_SIGNATURE { } + +RESOURCE TBUF16 { buf=""; } + +RESOURCE DLG_BUTTONS r_dialog_buttons +{ +buttons = + { + DLG_BUTTON + { + id = EReferencePPNotifierButton; + button = CMBUT {txt = "OK";}; + hotkey='1'; + } + }; +} + +RESOURCE DIALOG r_notifier_dialog + { + title = "MSMM message"; + buttons = r_dialog_buttons; + items = + { + DLG_LINE + { + type = EEikCtLabel; + id = EReferencePPNotifierMsg; + control = LABEL + { + standard_font = EEikLabelFontAnnotation; + txt = "NULL"; + }; + } + }; + } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/src/refppdialog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/src/refppdialog.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,87 @@ +/* +* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +/** + @file + @internalComponent +*/ + +#include "refppdialog.h" +/** + Constructor + */ +CRefPPDialog::CRefPPDialog(TBool* aDlgFlag):iDlgFlagInOwner(aDlgFlag) + { + } +/** + Destructor + */ +CRefPPDialog::~CRefPPDialog() + { + } +/** + This is a static method used by refppnotifier to initialize a CRefDialog object. + + @param aDlgFlag The flag in the owner of this dialog. This flag is used + to indicate if the dialog has been closed by the user + by click the button on the dialog. + + @return A pointer to the newly initialized object. + */ +CRefPPDialog* CRefPPDialog::NewLC(TBool* aDlgFlag) + { + CRefPPDialog* self = new (ELeave)CRefPPDialog(aDlgFlag); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } +/** + This is a static method used by refppnotifier to initialize a CRefDialog object. + + @param aDlgFlag The flag in the owner of this dialog. This flag is used + to indicate if the dialog has been closed by the user + by click the button on the dialog. + + @return A pointer to the newly initialized object. + */ +CRefPPDialog* CRefPPDialog::NewL(TBool* aDlgFlag) + { + CRefPPDialog* self=CRefPPDialog::NewLC(aDlgFlag); + CleanupStack::Pop(self); + return self; + } +/** + Method for the second phase construction. + */ +void CRefPPDialog::ConstructL() + { + } +/** + Get called when the dialog is closed by user closing the dialog. Must return ETrue to + allow the dialog to close. + + @param aButtonId the button pressed when OkToExitL() is called. + + @return TBool ETrue to let the dialog close. + EFalse to keep the dialog on screen. + + */ +TBool CRefPPDialog::OkToExitL(TInt /*aButtonId*/) + { + *iDlgFlagInOwner = EFalse; + return ETrue; + } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/src/refppnotifier.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/src/refppnotifier.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,268 @@ +/* +* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +/** + @file + @internalComponent +*/ + +#include "refppnotifier.h" +#include +#include "refppnotifier.hrh" +#include +#include +#include +#include +#include +const TUid KMsmmRefNotifierChannel = {0x10009D48}; //0x10208C14 +/** + Initialize and put the notifiers in this DLL into the array and return it. + + @return CArrayPtr* The array contents the notifiers in this dll. + */ +CArrayPtr* NotifierArray() + { + CArrayPtrFlat* subjects=NULL; + TRAPD(err, subjects = new(ELeave) CArrayPtrFlat(1)); + if( err == KErrNone ) + { + TRAP(err, subjects->AppendL(CMsmmRefPolicyPluginNotifier::NewL())); + return(subjects); + } + else + { + return NULL; + } + } + +//Adding ECOM SUPPORT +/** + Build up the table contains the implementation ID and the notifier array. + */ +const TImplementationProxy ImplementationTable[] = + { + IMPLEMENTATION_PROXY_ENTRY(KUidMsmmReferenceNotifierImp, NotifierArray) + }; + +/** + Initialize and put the notifiers in this DLL into the array and return it. + @param aTableCount a TInt reference, when return it contains the entry number in the + array of ImplementationTable[]. + @return CArrayPtr* The table of implementations. + */ +EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) + { + aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); + return ImplementationTable; + } + +// Member functions +/** + Static method to initialize a CMsmmRefPolicyPluginNotifier object. This method may leave. + + @return CMsmmRefPolicyPluginNotifier* a pointer to an object of CMsmmRefPolicyPluginNotifier + */ +CMsmmRefPolicyPluginNotifier* CMsmmRefPolicyPluginNotifier::NewL() + { + CMsmmRefPolicyPluginNotifier* self = CMsmmRefPolicyPluginNotifier::NewLC(); + CleanupStack::Pop(self); + return self; + } +/** + Static method to initialize a CMsmmRefPolicyPluginNotifier object. This method may leave. + + @return CMsmmRefPolicyPluginNotifier* a pointer to an object of CMsmmRefPolicyPluginNotifier + */ +CMsmmRefPolicyPluginNotifier* CMsmmRefPolicyPluginNotifier::NewLC() + { + CMsmmRefPolicyPluginNotifier* self = new (ELeave) CMsmmRefPolicyPluginNotifier(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } +/** + Constructor. + */ +CMsmmRefPolicyPluginNotifier::CMsmmRefPolicyPluginNotifier():iDialogIsVisible(EFalse),iDialogPtr(0) + { + iCoeEnv = CCoeEnv::Static(); + } + +/** + Destructor. + */ +CMsmmRefPolicyPluginNotifier::~CMsmmRefPolicyPluginNotifier() + { + iCoeEnv->DeleteResourceFile(iOffset); + if (iDialogIsVisible) + { + delete iDialogPtr; + } + } + +/** + This method is called when client of this notifier disconnect from notify server. + */ +void CMsmmRefPolicyPluginNotifier::Release() + { + delete this; + } + +/** + This method is called when notify server starts and get all the plug-ins of notifiers. + By calling this method notify server knows the ID, channel and priority of this notifier. + */ +MEikSrvNotifierBase2::TNotifierInfo CMsmmRefPolicyPluginNotifier::RegisterL() + { + iInfo.iUid = TUid::Uid(KUidMountPolicyNotifier); + iInfo.iChannel = KMsmmRefNotifierChannel; + iInfo.iPriority = ENotifierPriorityLow; + return iInfo; + } + +/** + This method just returns the same TNotifierInfo as it is in RegisterL(). + */ +MEikSrvNotifierBase2::TNotifierInfo CMsmmRefPolicyPluginNotifier::Info() const + { + return iInfo; + } + +/** + Starts the notifier. + + This is called as a result of a client-side call to RNotifier::StartNotifier(), + which the client uses to start a notifier from which it does not expect a response. + + The function is synchronous, but it should be implemented so that it completes as + soon as possible, allowing the notifier framework to enforce its priority mechanism. + + It is not possible to to wait for a notifier to complete before returning from this + function unless the notifier is likely to finish implementing its functionality immediately. + + @param aBuffer the message sent from client. + + @return TPtrC8 Defines an empty or null literal descriptor + for use with 8-bit descriptors + */ +TPtrC8 CMsmmRefPolicyPluginNotifier::StartL(const TDesC8& /*aBuffer*/) + { + return KNullDesC8(); + } +/** + Starts the notifier. + + This is called as a result of a client-side call to the asynchronous function + RNotifier::StartNotifierAndGetResponse(). This means that the client is waiting, + asynchronously, for the notifier to tell the client that it has finished its work. + + It is important to return from this function as soon as possible, and derived + classes may find it useful to take a copy of the reply-slot number and the + RMessage object. + + The implementation of a derived class must make sure that Complete() is called + on the RMessage object when the notifier is deactivated. + + This function may be called multiple times if more than one client starts + the notifier. + + @param aBuffer Data that can be passed from the client-side. The format + and meaning of any data is implementation dependent. + + aReplySlot Identifies which message argument to use for the reply. + This message argument will refer to a modifiable descriptor, + a TDes8 type, into which data can be returned. The format and + meaning of any returned data is implementation dependent. + + aMessage Encapsulates a client request. +*/ +void CMsmmRefPolicyPluginNotifier::StartL(const TDesC8& aBuffer, + TInt /*aReplySlot*/, + const RMessagePtr2& aMessage) + { + // extract the notifier request parameters + iMessage = aMessage; + + const TUint8* Buffer= aBuffer.Ptr(); + const THostMsErrData* Data = reinterpret_cast(Buffer); + + HBufC16* HeapBuf = HBufC16::NewL(aBuffer.Length()); + CleanupStack::PushL(HeapBuf); + _LIT(KFormat1,"MSMMErr:%d SymbianErr:%d %S %S on Drive %c"); + TPtr16 PtrBuf = HeapBuf->Des(); + + PtrBuf.Format(KFormat1,Data->iError,Data->iE32Error,&Data->iProductString,&Data->iManufacturerString,Data->iDriveName); + + if (iDialogIsVisible && iDialogPtr) + { + delete iDialogPtr; + } + iDialogPtr = CRefPPDialog::NewL(&iDialogIsVisible); + iDialogPtr->PrepareLC(R_NOTIFIER_DIALOG); + CEikLabel *pLabel = static_cast (iDialogPtr->ControlOrNull(EReferencePPNotifierMsg)); + pLabel->SetTextL(PtrBuf); + + iDialogPtr->RunLD(); + iDialogIsVisible = ETrue; + + CleanupStack::Pop(HeapBuf); + + // complete + iMessage.Complete(KErrNone); + } + +/** + Cancels an active notifier. + + This is called as a result of a client-side call to RNotifier::CancelNotifier(). + + An implementation should free any relevant resources and complete any outstanding + messages, if relevant. + */ +void CMsmmRefPolicyPluginNotifier::Cancel() + { + if (iDialogIsVisible && iDialogPtr) + { + delete iDialogPtr; + iDialogPtr = NULL; + } + } + +/** + Updates a currently active notifier with new data.This is called as a result + of a client-side call to RNotifier::UpdateNotifier(). + + @param aBuffer Data that can be passed from the client-side. The format + and meaning of any data is implementation dependent. + + @return KNullDesC8() Defines an empty or null literal descriptor for use + with 8-bit descriptors. + */ +TPtrC8 CMsmmRefPolicyPluginNotifier::UpdateL(const TDesC8& /*aBuffer*/) + { + return KNullDesC8(); + } +/** + Second phase construction. + */ +void CMsmmRefPolicyPluginNotifier::ConstructL() + { + _LIT(KResFileName,"z:\\resource\\apps\\dialog.rsc"); + iOffset=iCoeEnv->AddResourceFileL(KResFileName); + } + +// End of file diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/src/refppnotifier.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/refppnotifier/src/refppnotifier.rss Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,53 @@ +/* +* Copyright (c) 2008-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: +* Reference policy plugin notifier implementation resource file +* +*/ + +/** + @file + @internalComponent +*/ + +#include +#include +#include "refppnotifier.hrh" +#include "uikon.hrh" + +RESOURCE REGISTRY_INFO theInfo + { + // UID for the DLL + dll_uid = 0x10285ddd; + // Declare array of interface info + interfaces = + { + INTERFACE_INFO + { + // UID of interface that is implemented + interface_uid = KUikonUidPluginInterfaceNotifiers; + implementations = + { + IMPLEMENTATION_INFO + { + implementation_uid = KUidMsmmReferenceNotifierImp; + version_no = 1; + display_name = "Reference notifier"; + default_data = "Referencenotifier"; + opaque_data = ""; + } + }; + } + }; + } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/group/msmmserver_base.mmp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/group/msmmserver_base.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/group/msmmserver_base.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -23,6 +23,7 @@ OS_LAYER_SYSTEMINCLUDE_SYMBIAN #include "../public/hostmscaps.mmh" +#include LIBRARY euser.lib LIBRARY ecom.lib @@ -32,7 +33,6 @@ SOURCE main.cpp SOURCE msmmserver.cpp SOURCE msmmsession.cpp -SOURCE msmmdismountusbdrives.cpp SOURCE eventqueue.cpp SOURCE eventhandler.cpp SOURCE msmmterminator.cpp @@ -44,6 +44,5 @@ USERINCLUDE ../inc USERINCLUDE ../public USERINCLUDE ../../inc -USERINCLUDE ../traces VENDORID 0x70000001 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/group/msmmserver_over_dummycomponent.mmp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/group/msmmserver_over_dummycomponent.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/group/msmmserver_over_dummycomponent.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -27,7 +27,6 @@ UID 0 0x1028653F LIBRARY dummymsc.lib -LIBRARY dummyfilesysclient.lib #include "msmmserver_base.mmp" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/inc/msmmdismountusbdrives.h --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/inc/msmmdismountusbdrives.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,169 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Header file for Stylus Tap indicator eject usb drives -* -*/ - - -#ifndef MSMMDISMOUNTUSBDRIVES_H -#define MSMMDISMOUNTUSBDRIVES_H - -#include -#ifdef __OVER_DUMMYCOMPONENT__ -#include "usb/hostms/dummycomponent/dummyfsclient.h" -#else -#include -#endif - -#include "msmm_pub_def.h" - -class CDismountTimer; -class CMsmmPolicyPluginBase; - -/** - * Timer callback interface to indicate USB drive in use - * - * This class specifies the function to be called when a timeout occurs. - * Used in conjunction with CDismountTimer class - * - */ -class MTimerNotifier - { -public: - /** - * The function to be called when a timeout occurs. - * - */ - virtual void TimerExpired() = 0; - }; - -/** - * An Active Object class to request dismount of usb specific drives and notify the result to MSMM plugin - * - */ -NONSHARABLE_CLASS( CMsmmDismountUsbDrives ) : public CActive, - public MTimerNotifier - { -public: - virtual ~CMsmmDismountUsbDrives(); - static CMsmmDismountUsbDrives* NewL(); - static CMsmmDismountUsbDrives* NewLC(); - -public: - /** - * Send dismount notifications for all usb drives. - */ - void DismountUsbDrives(CMsmmPolicyPluginBase& aPlugin, TUSBMSDeviceDescription& aDevice); - -protected: - CMsmmDismountUsbDrives(); - void ConstructL(); - -private: - /** - * Send dismount notification via RFs - */ - void DoDismount(); - - /** - * Callback to CMsmmPolicyPluginBase - */ - void CompleteDismountRequest(const TInt aResult); - -private: //from CActive - void RunL(); - void DoCancel(); - -private: // from MTimerNotifier - - /** - * Dismount timer callback - */ - void TimerExpired(); - -private: - /** - * Drive index - */ - TInt iDriveIndex; - /** - * RFs session - */ -#ifdef __OVER_DUMMYCOMPONENT__ - RDummyFs iRFs; -#else - RFs iRFs; -#endif - /** - * List of drives - */ - TDriveList iDriveList; - - /** - * Dismount timer - * Own - */ - CDismountTimer* iDismountTimer; - - /** - * Callback API for dismount result - * Do not own - */ - CMsmmPolicyPluginBase* iPlugin; - - /** - * Device specific details, manufacturer and productid - */ - TPckgBuf iDevicePkgInfo; - }; - - -/** - * Timer interface for dismount request - * - * This class will notify an object after a specified timeout. - * - */ -class CDismountTimer : public CTimer - { -public: - static CDismountTimer* NewL( MTimerNotifier* aTimeOutNotify ); - static CDismountTimer* NewLC( MTimerNotifier* aTimeOutNotify); - virtual ~CDismountTimer(); - void CancelTimer(); - void StartTimer(); - -protected: - /** - * From CTimer - * Invoked when a timeout occurs - * - */ - virtual void RunL(); - -private: - CDismountTimer( MTimerNotifier* aTimeOutNotify ); - void ConstructL(); - -private: // Member variables - - /** - * The observer for this objects events - * Not own. - */ - MTimerNotifier* iNotify; - }; - - -#endif // MSMMDISMOUNTUSBDRIVES_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/inc/msmmserver.h --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/inc/msmmserver.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/inc/msmmserver.h Wed Sep 01 12:35:00 2010 +0100 @@ -37,9 +37,6 @@ class CMsmmTerminator; class CDeviceEventQueue; class CMsmmPolicyPluginBase; -class THostMsErrData; -class CMsmmDismountUsbDrives; -class TUSBMSDeviceDescription; // Server side resource container class // Intends to be used by any internal objects (such as sub-command objects) @@ -69,16 +66,11 @@ // CMsmmServer API virtual CSession2* NewSessionL(const TVersion& aVersion, const RMessage2& aMessage) const; - CPolicyServer::TCustomResult CustomSecurityCheckL(const RMessage2& aMsg, - TInt& aAction, - TSecurityInfo& aMissing); - + TInt SessionNumber() const; void AddSession(); void RemoveSession(); - void DismountUsbDrivesL(TUSBMSDeviceDescription& aDevice); - // From MMsmmSrvProxy inline CMsmmEngine& Engine() const; inline RFs& FileServerSession() const; @@ -95,8 +87,6 @@ RFs iFs; CMsmmPolicyPluginBase* iPolicyPlugin; // Owned CDeviceEventQueue* iEventQueue; // Owned - CMsmmDismountUsbDrives* iDismountManager; //Singleton to request dismounting usb drives via RFs - THostMsErrData* iDismountErrData; // The data nodes try, Owned }; #include "msmmserver.inl" #endif // MSMMSERVER_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/inc/srvsec.h --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/inc/srvsec.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/inc/srvsec.h Wed Sep 01 12:35:00 2010 +0100 @@ -26,7 +26,6 @@ const TInt KMsmmServerRanges[] = { EHostMsmmServerAddFunction, - EHostMsmmServerEjectUsbDrives, //separate policy check for Eject usb drives client EHostMsmmServerEndMarker }; const TUint KMsmmServerRangeCount = @@ -35,21 +34,18 @@ const TUint8 KMsmmServerElementsIndex[KMsmmServerRangeCount] = { 0, - 1, CPolicyServer::ENotSupported }; const CPolicyServer::TPolicyElement KMsmmServerElements[] = { {_INIT_SECURITY_POLICY_S1( KFDFWSecureId, ECapabilityCommDD ), - CPolicyServer::EFailClient}, - {_INIT_SECURITY_POLICY_S1( KSidHbDeviceDialogAppServer, ECapabilityTrustedUI ), CPolicyServer::EFailClient} }; const CPolicyServer::TPolicy KMsmmServerSecurityPolicy = { - CPolicyServer::ECustomCheck, + 0, KMsmmServerRangeCount, KMsmmServerRanges, KMsmmServerElementsIndex, diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/public/srverr.h --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/public/srverr.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/public/srverr.h Wed Sep 01 12:35:00 2010 +0100 @@ -31,9 +31,6 @@ // adding device EHostMsErrInvalidParameter = 0x4, // Invalid request parameter EHostMsErrOutOfMemory = 0x5, // Out of memory - EHostMsEjectInProgress = 0x6, // eject request commenced - EHostMsErrNone = 0x7, // no error == success condition - EHostMsErrInUse = 0x8, // Drives in use EHostMsErrorEndMarker }; diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/eventhandler.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/eventhandler.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/eventhandler.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -27,32 +27,27 @@ #include "msmmengine.h" #include "subcommands.h" #include "msmmnodebase.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "eventhandlerTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "UsbHostMsmmServer"); #endif - - // Push a sub-command into the queue and transfer the owership // to the queue void RSubCommandQueue::PushL(TSubCommandBase* aCommand) { - OstTraceFunctionEntry0( RSUBCOMMANDQUEUE_PUSHL_ENTRY ); - + LOG_FUNC CleanupStack::PushL(aCommand); iQueue.AppendL(aCommand); CleanupStack::Pop(aCommand); - OstTraceFunctionExit0( RSUBCOMMANDQUEUE_PUSHL_EXIT ); } // Pop the head entity from the queue and destroy it void RSubCommandQueue::Pop() { - OstTraceFunctionEntry0( RSUBCOMMANDQUEUE_POP_ENTRY ); + LOG_FUNC if (iQueue.Count() == 0) { - OstTraceFunctionExit0( RSUBCOMMANDQUEUE_POP_EXIT ); return; } @@ -60,45 +55,39 @@ iQueue.Remove(0); delete command; command = NULL; - OstTraceFunctionExit0( RSUBCOMMANDQUEUE_POP_EXIT_DUP1 ); } // Insert a sub-command sequence after head entities void RSubCommandQueue::InsertAfterHeadL(TSubCommandBase* aCommand) { - OstTraceFunctionEntry0( RSUBCOMMANDQUEUE_INSERTAFTERHEADL_ENTRY ); - + LOG_FUNC if (!aCommand) { User::Leave(KErrArgument); } iQueue.InsertL(aCommand, 1); - OstTraceFunctionExit0( RSUBCOMMANDQUEUE_INSERTAFTERHEADL_EXIT ); } // Execute the head sub-comment void RSubCommandQueue::ExecuteHeadL() { - OstTraceFunctionEntry0( RSUBCOMMANDQUEUE_EXECUTEHEADL_ENTRY ); + LOG_FUNC Head().ExecuteL(); - OstTraceFunctionExit0( RSUBCOMMANDQUEUE_EXECUTEHEADL_EXIT ); } // Get a reference of head sub-command in queue TSubCommandBase& RSubCommandQueue::Head() { - OstTraceFunctionEntry0( RSUBCOMMANDQUEUE_HEAD_ENTRY ); + LOG_FUNC return *iQueue[0]; } // Destory all entities and release the memory of queue void RSubCommandQueue::Release() { - OstTraceFunctionEntry0( RSUBCOMMANDQUEUE_RELEASE_ENTRY ); - + LOG_FUNC iQueue.ResetAndDestroy(); - OstTraceFunctionExit0( RSUBCOMMANDQUEUE_RELEASE_EXIT ); } /* @@ -106,43 +95,36 @@ */ CDeviceEventHandler::~CDeviceEventHandler() { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_CDEVICEEVENTHANDLER_DES_ENTRY ); - + LOG_FUNC Cancel(); delete iErrNotiData; iSubCommandQueue.Release(); - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_CDEVICEEVENTHANDLER_DES_EXIT ); } CDeviceEventHandler* CDeviceEventHandler::NewL(MMsmmSrvProxy& aServer) { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_NEWL_ENTRY ); - + LOG_STATIC_FUNC_ENTRY CDeviceEventHandler* self = CDeviceEventHandler::NewLC(aServer); CleanupStack::Pop(self); - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_NEWL_EXIT ); return self; } CDeviceEventHandler* CDeviceEventHandler::NewLC(MMsmmSrvProxy& aServer) { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_NEWLC_ENTRY ); - + LOG_STATIC_FUNC_ENTRY CDeviceEventHandler* self = new (ELeave) CDeviceEventHandler(aServer); CleanupStack::PushL(self); self->ConstructL(); - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_NEWLC_EXIT ); return self; } void CDeviceEventHandler::CreateSubCmdForRetrieveDriveLetterL( TInt aLogicalUnitCount) { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_CREATESUBCMDFORRETRIEVEDRIVELETTERL_ENTRY ); - + LOG_FUNC TRetrieveDriveLetter* command(NULL); THostMsSubCommandParam parameter(iServer, *this, *this, iIncomingEvent); for (TInt index = 0; index < aLogicalUnitCount; index++) @@ -150,60 +132,49 @@ command = new (ELeave) TRetrieveDriveLetter(parameter, index); iSubCommandQueue.PushL(command); } - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_CREATESUBCMDFORRETRIEVEDRIVELETTERL_EXIT ); } void CDeviceEventHandler::CreateSubCmdForMountingLogicalUnitL(TText aDrive, TInt aLuNumber) { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_CREATESUBCMDFORMOUNTINGLOGICALUNITL_ENTRY ); - + LOG_FUNC THostMsSubCommandParam parameter(iServer, *this, *this, iIncomingEvent); TMountLogicalUnit* command = new (ELeave) TMountLogicalUnit( parameter, aDrive, aLuNumber); iSubCommandQueue.InsertAfterHeadL(command); - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_CREATESUBCMDFORMOUNTINGLOGICALUNITL_EXIT ); } void CDeviceEventHandler::CreateSubCmdForSaveLatestMountInfoL(TText aDrive, TInt aLuNumber) { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_CREATESUBCMDFORSAVELATESTMOUNTINFOL_ENTRY ); - + LOG_FUNC THostMsSubCommandParam parameter(iServer, *this, *this, iIncomingEvent); TSaveLatestMountInfo* command = new (ELeave) TSaveLatestMountInfo(parameter, aDrive, aLuNumber); iSubCommandQueue.InsertAfterHeadL(command); - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_CREATESUBCMDFORSAVELATESTMOUNTINFOL_EXIT ); } void CDeviceEventHandler::Start() { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_START_ENTRY ); - + LOG_FUNC if (IsActive()) { - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_START_EXIT ); return; } iStatus = KRequestPending; SetActive(); - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_START_EXIT_DUP1 ); } void CDeviceEventHandler::Complete(TInt aError) { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_COMPLETE_ENTRY ); - + LOG_FUNC TRequestStatus* status = &iStatus; User::RequestComplete(status, aError); - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_COMPLETE_EXIT ); } TRequestStatus& CDeviceEventHandler::Status() const { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_STATUS_ENTRY ); - + LOG_FUNC const TRequestStatus& status = iStatus; return const_cast(status); } @@ -211,8 +182,7 @@ void CDeviceEventHandler::HandleEventL(TRequestStatus& aStatus, const TDeviceEvent& aEvent) { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_HANDLEEVENTL_ENTRY ); - + LOG_FUNC if (IsActive()) { // An event is being handled. Currently handler is busy. @@ -231,7 +201,6 @@ // Start the handler to handle the incoming event Start(); Complete(); - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_HANDLEEVENTL_EXIT ); } /* @@ -240,28 +209,25 @@ void CDeviceEventHandler::DoCancel() { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_DOCANCEL_ENTRY ); - + LOG_FUNC // Complete client with KErrCancel CompleteClient(KErrCancel); // Cancel current pending command - if (iSubCommandQueue.Count()) + if (iSubCommandQueue.Count()) { - iSubCommandQueue.Head().CancelAsyncCmd(); - } - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_DOCANCEL_EXIT ); + iSubCommandQueue.Head().CancelAsyncCmd(); + } } void CDeviceEventHandler::RunL( ) { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_RUNL_ENTRY ); + LOG_FUNC if (iSubCommandQueue.Count() == 0) { // Error occurs in lastest sub-command's DoExecuteL() // Or current command has been cancelled. - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_RUNL_EXIT ); return; } @@ -283,27 +249,26 @@ // Complete client CompleteClient(); } - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_RUNL_EXIT_DUP1 ); } TInt CDeviceEventHandler::RunError(TInt aError) { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_RUNERROR_ENTRY ); - - if (iSubCommandQueue.Count()) + LOG_FUNC + + if (iSubCommandQueue.Count()) { - // Retrieve sub-command related error notification data - iSubCommandQueue.Head().HandleError(*iErrNotiData, aError); + // Retrieve sub-command related error notification data + iSubCommandQueue.Head().HandleError(*iErrNotiData, aError); - // If current sub-command isn't a key one, the handler will continue to - // execute rest sub-command in the queue. But, if current sub-command - // is the last one in the queue, handler shall complete the client also. - if (iSubCommandQueue.Head().IsKeyCommand() || - (iSubCommandQueue.Count() == 1)) - { - CompleteClient(aError); - } - iSubCommandQueue.Pop(); + // If current sub-command isn't a key one, the handler will continue to + // execute rest sub-command in the queue. But, if current sub-command + // is the last one in the queue, handler shall complete the client also. + if (iSubCommandQueue.Head().IsKeyCommand() || + (iSubCommandQueue.Count() == 1)) + { + CompleteClient(aError); + } + iSubCommandQueue.Pop(); } if( IsActive() ) @@ -316,7 +281,6 @@ Complete(); } - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_RUNERROR_EXIT ); return KErrNone; } @@ -325,25 +289,20 @@ CActive(EPriorityStandard), iServer(aServer) { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_CDEVICEEVENTHANDLER_ENTRY ); - + LOG_FUNC CActiveScheduler::Add(this); - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_CDEVICEEVENTHANDLER_EXIT ); } void CDeviceEventHandler::ConstructL() { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_CONSTRUCTL_ENTRY ); - + LOG_FUNC iErrNotiData = new (ELeave) THostMsErrData; ResetHandler(); - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_CONSTRUCTL_EXIT ); } void CDeviceEventHandler::CreateSubCmdForDeviceEventL() { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_CREATESUBCMDFORDEVICEEVENTL_ENTRY ); - + LOG_FUNC switch (iIncomingEvent.iEvent) { case EDeviceEventAddFunction: @@ -353,23 +312,19 @@ CreateSubCmdForRemovingUsbMsDeviceL(); break; } - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_CREATESUBCMDFORDEVICEEVENTL_EXIT ); } void CDeviceEventHandler::CreateSubCmdForAddingUsbMsFunctionL() { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_CREATESUBCMDFORADDINGUSBMSFUNCTIONL_ENTRY ); - + LOG_FUNC THostMsSubCommandParam parameter(iServer, *this, *this, iIncomingEvent); TRegisterInterface* command = new (ELeave) TRegisterInterface(parameter); iSubCommandQueue.PushL(command); - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_CREATESUBCMDFORADDINGUSBMSFUNCTIONL_EXIT ); } void CDeviceEventHandler::CreateSubCmdForRemovingUsbMsDeviceL() { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_CREATESUBCMDFORREMOVINGUSBMSDEVICEL_ENTRY ); - + LOG_FUNC CMsmmEngine& engine = iServer.Engine(); TUsbMsDevice* device = engine.SearchDevice(iIncomingEvent.iDeviceId); if (!device) @@ -397,22 +352,18 @@ TRemoveUsbMsDeviceNode* removeNode = new (ELeave) TRemoveUsbMsDeviceNode(parameter, device); iSubCommandQueue.PushL(removeNode); - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_CREATESUBCMDFORREMOVINGUSBMSDEVICEL_EXIT ); } void CDeviceEventHandler::ResetHandler() { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_RESETHANDLER_ENTRY ); - + LOG_FUNC ResetHandlerData(); ResetHandlerError(); - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_RESETHANDLER_EXIT ); } void CDeviceEventHandler::ResetHandlerData() { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_RESETHANDLERDATA_ENTRY ); - + LOG_FUNC // Reset event buffer iIncomingEvent.iDeviceId = 0; iIncomingEvent.iEvent = EDeviceEventEndMark; @@ -420,30 +371,25 @@ // Destory sub-command queue iSubCommandQueue.Release(); - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_RESETHANDLERDATA_EXIT ); } void CDeviceEventHandler::ResetHandlerError() { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_RESETHANDLERERROR_ENTRY ); - + LOG_FUNC // Reset error notification data iErrNotiData->iDriveName = 0x0; iErrNotiData->iError = EHostMsErrorEndMarker; iErrNotiData->iE32Error = KErrNone; iErrNotiData->iManufacturerString.Zero(); - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_RESETHANDLERERROR_EXIT ); } void CDeviceEventHandler::CompleteClient(TInt aError/* = KErrNone*/) { - OstTraceFunctionEntry0( CDEVICEEVENTHANDLER_COMPLETECLIENT_ENTRY ); - + LOG_FUNC if (iEvtQueueStatus) { User::RequestComplete(iEvtQueueStatus, aError); } - OstTraceFunctionExit0( CDEVICEEVENTHANDLER_COMPLETECLIENT_EXIT ); } // End of file diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/eventqueue.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/eventqueue.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/eventqueue.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -27,55 +27,47 @@ #include "msmmengine.h" #include #include -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "eventqueueTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "UsbHostMsmmServer"); #endif - // Public member functions CDeviceEventQueue::~CDeviceEventQueue( ) { - OstTraceFunctionEntry0( CDEVICEEVENTQUEUE_CDEVICEEVENTQUEUE_DES_ENTRY ); - + LOG_FUNC Cancel(); delete iHandler; iEventArray.Close(); - OstTraceFunctionExit0( CDEVICEEVENTQUEUE_CDEVICEEVENTQUEUE_DES_EXIT ); } CDeviceEventQueue* CDeviceEventQueue::NewL(MMsmmSrvProxy& aServer) { - OstTraceFunctionEntry0( CDEVICEEVENTQUEUE_NEWL_ENTRY ); - + LOG_STATIC_FUNC_ENTRY CDeviceEventQueue* self = CDeviceEventQueue::NewLC(aServer); CleanupStack::Pop(self); - OstTraceFunctionExit0( CDEVICEEVENTQUEUE_NEWL_EXIT ); return self; } CDeviceEventQueue* CDeviceEventQueue::NewLC(MMsmmSrvProxy& aServer) { - OstTraceFunctionEntry0( CDEVICEEVENTQUEUE_NEWLC_ENTRY ); - + LOG_STATIC_FUNC_ENTRY CDeviceEventQueue* self = new (ELeave) CDeviceEventQueue(aServer); CleanupStack::PushL(self); self->ConstructL(); - OstTraceFunctionExit0( CDEVICEEVENTQUEUE_NEWLC_EXIT ); return self; } void CDeviceEventQueue::PushL(const TDeviceEvent& aEvent) { - OstTraceFunctionEntry0( CDEVICEEVENTQUEUE_PUSHL_ENTRY ); - + LOG_FUNC + // Perform optimization for remove device event AppendAndOptimizeL(aEvent); // Start handling first event in queue StartL(); - OstTraceFunctionExit0( CDEVICEEVENTQUEUE_PUSHL_EXIT ); } void CDeviceEventQueue::Finalize() @@ -103,17 +95,14 @@ // Protected member functions void CDeviceEventQueue::DoCancel() { - OstTraceFunctionEntry0( CDEVICEEVENTQUEUE_DOCANCEL_ENTRY ); - + LOG_FUNC iEventArray.Reset(); iHandler->Cancel(); - OstTraceFunctionExit0( CDEVICEEVENTQUEUE_DOCANCEL_EXIT ); } void CDeviceEventQueue::RunL() { - OstTraceFunctionEntry0( CDEVICEEVENTQUEUE_RUNL_ENTRY ); - + LOG_FUNC // Check the completion code from CDeviceEventHandler. If there // is some error occured. We need issue error notification here. TInt err = iStatus.Int(); @@ -127,13 +116,11 @@ { SendEventL(); } - OstTraceFunctionExit0( CDEVICEEVENTQUEUE_RUNL_EXIT ); } TInt CDeviceEventQueue::RunError(TInt aError) { - OstTraceFunctionEntry0( CDEVICEEVENTQUEUE_RUNERROR_ENTRY ); - + LOG_FUNC THostMsErrData errData; switch (aError) { @@ -157,7 +144,6 @@ errData.iDriveName = 0x0; TInt err(KErrNone); TRAP(err, iServer.PolicyPlugin()->SendErrorNotificationL(errData)); - OstTraceFunctionExit0( CDEVICEEVENTQUEUE_RUNERROR_EXIT ); return KErrNone; } @@ -166,24 +152,19 @@ CActive(EPriorityStandard), iServer(aServer) { - OstTraceFunctionEntry0( CDEVICEEVENTQUEUE_CDEVICEEVENTQUEUE_CONS_ENTRY ); - + LOG_FUNC CActiveScheduler::Add(this); - OstTraceFunctionExit0( CDEVICEEVENTQUEUE_CDEVICEEVENTQUEUE_CONS_EXIT ); } void CDeviceEventQueue::ConstructL() { - OstTraceFunctionEntry0( CDEVICEEVENTQUEUE_CONSTRUCTL_ENTRY ); - + LOG_FUNC iHandler = CDeviceEventHandler::NewL(iServer); - OstTraceFunctionExit0( CDEVICEEVENTQUEUE_CONSTRUCTL_EXIT ); } void CDeviceEventQueue::AppendAndOptimizeL(const TDeviceEvent& aEvent) { - OstTraceFunctionEntry0( CDEVICEEVENTQUEUE_APPENDANDOPTIMIZEL_ENTRY ); - + LOG_FUNC if (EDeviceEventRemoveDevice == aEvent.iEvent) { // Scan the event queue to discard all pending related adding @@ -215,23 +196,19 @@ if (aEvent.iDeviceId == iHandler->Event().iDeviceId && IsActive()) { // Discard duplicated removing event. - OstTraceFunctionExit0( CDEVICEEVENTQUEUE_APPENDANDOPTIMIZEL_EXIT ); return; } break; } } iEventArray.AppendL(aEvent); - OstTraceFunctionExit0( CDEVICEEVENTQUEUE_APPENDANDOPTIMIZEL_EXIT_DUP1 ); } void CDeviceEventQueue::StartL() { - OstTraceFunctionEntry0( CDEVICEEVENTQUEUE_STARTL_ENTRY ); - + LOG_FUNC if (IsActive()) { - OstTraceFunctionExit0( CDEVICEEVENTQUEUE_STARTL_EXIT ); return; } @@ -239,29 +216,24 @@ { SendEventL(); } - OstTraceFunctionExit0( CDEVICEEVENTQUEUE_STARTL_EXIT_DUP1 ); } void CDeviceEventQueue::SendEventL() { - OstTraceFunctionEntry0( CDEVICEEVENTQUEUE_SENDEVENTL_ENTRY ); - + LOG_FUNC // If the handler is available, sending oldest event to it iHandler->HandleEventL(iStatus, Pop()); // Activiate the manager again to wait for the handler // finish current event SetActive(); - OstTraceFunctionExit0( CDEVICEEVENTQUEUE_SENDEVENTL_EXIT ); } TDeviceEvent CDeviceEventQueue::Pop() { - OstTraceFunctionEntry0( CDEVICEEVENTQUEUE_POP_ENTRY ); - + LOG_FUNC TDeviceEvent event = iEventArray[0]; iEventArray.Remove(0); - OstTraceFunctionExit0( CDEVICEEVENTQUEUE_POP_EXIT ); return event; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/main.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/main.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/main.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmdismountusbdrives.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmdismountusbdrives.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,283 +0,0 @@ -/* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* 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: Active Object to dismount usb drives -* -*/ - - -#include -#include -#include - -#include "msmmdismountusbdrives.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "msmmdismountusbdrivesTraces.h" -#endif - - -const TInt KDismountTimeOut = 6000000; // 6 seconds - - -CMsmmDismountUsbDrives::~CMsmmDismountUsbDrives() - { - OstTraceFunctionEntry0( CMSMMDISMOUNTUSBDRIVES_CMSMMDISMOUNTUSBDRIVES_DES_ENTRY ); - - Cancel(); - delete iDismountTimer; - iRFs.Close(); - OstTraceFunctionExit0( CMSMMDISMOUNTUSBDRIVES_CMSMMDISMOUNTUSBDRIVES_DES_EXIT ); - } - -/** - * Symbian two phase constructor - */ -CMsmmDismountUsbDrives* CMsmmDismountUsbDrives::NewL() - { - OstTraceFunctionEntry0( CMSMMDISMOUNTUSBDRIVES_NEWL_ENTRY ); - - CMsmmDismountUsbDrives* self = CMsmmDismountUsbDrives::NewLC(); - CleanupStack::Pop(self); - OstTraceFunctionExit0( CMSMMDISMOUNTUSBDRIVES_NEWL_EXIT ); - return self; - } - -/** - * Symbian two phase constructor. Object pushed to cleanup stack - */ -CMsmmDismountUsbDrives* CMsmmDismountUsbDrives::NewLC() - { - OstTraceFunctionEntry0( CMSMMDISMOUNTUSBDRIVES_NEWLC_ENTRY ); - - CMsmmDismountUsbDrives* self = new (ELeave) CMsmmDismountUsbDrives(); - CleanupStack::PushL(self); - self->ConstructL(); - OstTraceFunctionExit0( CMSMMDISMOUNTUSBDRIVES_NEWLC_EXIT ); - return self; - } - -/** - * Check the status of current dismount request and continue issuing next if no error - */ -void CMsmmDismountUsbDrives::RunL() - { - OstTraceFunctionEntry0( CMSMMDISMOUNTUSBDRIVES_RUNL_ENTRY ); - - iDismountTimer->CancelTimer(); - - // Indicates there has been an error dismounting a usb drive, report immediately to MSMM plugin and - // abort the process - if ( iStatus != KErrNone ) - { - CompleteDismountRequest( iStatus.Int() ); - } - // Indicates we have reached the end of all usb drives dismounting, in other words a success condition - else if ( iDriveIndex == KMaxDrives ) - { - CompleteDismountRequest( KErrNone ); - } - // We still have more drives to traverse - else if ( iDriveIndex < KMaxDrives ) - { - DoDismount(); - } - OstTraceFunctionExit0( CMSMMDISMOUNTUSBDRIVES_RUNL_EXIT ); - } - -/** - * Cancel pending notifier and those in queue - */ -void CMsmmDismountUsbDrives::DoCancel() - { - OstTraceFunctionEntry0( CMSMMDISMOUNTUSBDRIVES_DOCANCEL_ENTRY ); - - iRFs.NotifyDismountCancel(iStatus); - OstTraceFunctionExit0( CMSMMDISMOUNTUSBDRIVES_DOCANCEL_EXIT ); - } - -CMsmmDismountUsbDrives::CMsmmDismountUsbDrives() - : CActive(EPriorityStandard) - { - OstTraceFunctionEntry0( CMSMMDISMOUNTUSBDRIVES_CMSMMDISMOUNTUSBDRIVES_ENTRY ); - - CActiveScheduler::Add(this); - OstTraceFunctionExit0( CMSMMDISMOUNTUSBDRIVES_CMSMMDISMOUNTUSBDRIVES_EXIT ); - } - -void CMsmmDismountUsbDrives::ConstructL() - { - OstTraceFunctionEntry0( CMSMMDISMOUNTUSBDRIVES_CONSTRUCTL_ENTRY ); - - User::LeaveIfError( iRFs.Connect()); - iDismountTimer = CDismountTimer::NewL(this); - OstTraceFunctionExit0( CMSMMDISMOUNTUSBDRIVES_CONSTRUCTL_EXIT ); - } - -/** - * Dismount usb drives - */ -void CMsmmDismountUsbDrives::DismountUsbDrives(CMsmmPolicyPluginBase& aPlugin, TUSBMSDeviceDescription& aDevice) - { - OstTraceFunctionEntry0( CMSMMDISMOUNTUSBDRIVES_DISMOUNTUSBDRIVES_ENTRY ); - - Cancel(); - iPlugin = &aPlugin; - TUSBMSDeviceDescription& device = iDevicePkgInfo(); - device = aDevice; - iDriveIndex = 0; - iRFs.DriveList( iDriveList ); - DoDismount(); - OstTraceFunctionExit0( CMSMMDISMOUNTUSBDRIVES_DISMOUNTUSBDRIVES_EXIT ); - } - -/** - * Callback to CMsmmPolicyPluginBase with either success or failure message - */ -void CMsmmDismountUsbDrives::CompleteDismountRequest(const TInt aResult) - { - THostMsErrData data; - if( aResult == KErrNone ) - data.iError = EHostMsErrNone; - else - data.iError = EHostMsErrInUse; - data.iE32Error = aResult; - data.iManufacturerString = iDevicePkgInfo().iManufacturerString; - data.iProductString = iDevicePkgInfo().iProductString; - data.iDriveName = 0x0; - - TRAP_IGNORE(iPlugin->SendErrorNotificationL(data)); - } - -/** - * Dismount next usb drive - */ -void CMsmmDismountUsbDrives::DoDismount() - { - OstTraceFunctionEntry0( CMSMMDISMOUNTUSBDRIVES_DODISMOUNT_ENTRY ); - - TDriveInfo info; - TInt err = KErrNone; - for ( ; iDriveIndex < KMaxDrives; iDriveIndex++ ) - { - if ( iDriveList[iDriveIndex] ) - { - err = iRFs.Drive( info , iDriveIndex ); - if ( info.iConnectionBusType == EConnectionBusUsb && - info.iDriveAtt & KDriveAttExternal && - err == KErrNone ) - { - OstTrace0( TRACE_NORMAL, CMSMMDISMOUNTUSBDRIVES_DODISMOUNT, - "CMsmmDismountUsbDrives::DoDismount Dismount notify request" ); - iRFs.NotifyDismount( iDriveIndex, iStatus, EFsDismountNotifyClients ); - iDismountTimer->StartTimer(); - SetActive(); - OstTraceFunctionExit0( CMSMMDISMOUNTUSBDRIVES_DODISMOUNT_EXIT ); - return; - } - } - } - // Indicates we have gone through all the drives and no more usb drives left to request dismount - CompleteDismountRequest( KErrNone ); - OstTraceFunctionExit0( CMSMMDISMOUNTUSBDRIVES_DODISMOUNT_EXIT_DUP1 ); - } - - -/** - * Callback function from CDismountTimer after 6 seconds indicating a usb drive is not released by another process, report it as an error - */ -void CMsmmDismountUsbDrives::TimerExpired() - { - OstTraceFunctionEntry0( CMSMMDISMOUNTUSBDRIVES_TIMEREXPIRED_ENTRY ); - - Cancel(); - iDismountTimer->CancelTimer(); - CompleteDismountRequest( KErrInUse ); - OstTraceFunctionExit0( CMSMMDISMOUNTUSBDRIVES_TIMEREXPIRED_EXIT ); - } - -//CDismountTimer - -CDismountTimer* CDismountTimer::NewL( MTimerNotifier* aTimeOutNotify) - { - OstTraceFunctionEntry0( CDISMOUNTTIMER_NEWL_ENTRY ); - - CDismountTimer* self = CDismountTimer::NewLC( aTimeOutNotify ); - CleanupStack::Pop(self); - OstTraceFunctionExit0( CDISMOUNTTIMER_NEWL_EXIT ); - return self; - } - -CDismountTimer* CDismountTimer::NewLC( MTimerNotifier* aTimeOutNotify ) - { - OstTraceFunctionEntry0( CDISMOUNTTIMER_NEWLC_ENTRY ); - - CDismountTimer* self = new (ELeave) CDismountTimer( aTimeOutNotify ); - CleanupStack::PushL(self); - self->ConstructL(); - OstTraceFunctionExit0( CDISMOUNTTIMER_NEWLC_EXIT ); - return self; - } - -CDismountTimer::CDismountTimer( MTimerNotifier* aTimeOutNotify): - CTimer(EPriorityStandard), - iNotify(aTimeOutNotify) - { - OstTraceFunctionEntry0( CDISMOUNTTIMER_CDISMOUNTTIMER_CONS_ENTRY ); - } - -CDismountTimer::~CDismountTimer() - { - OstTraceFunctionEntry0( CDISMOUNTTIMER_CDISMOUNTTIMER_DES_ENTRY ); - - Cancel(); - OstTraceFunctionExit0( CDISMOUNTTIMER_CDISMOUNTTIMER_DES_EXIT ); - } - -void CDismountTimer::ConstructL() - { - OstTraceFunctionEntry0( CDISMOUNTTIMER_CONSTRUCTL_ENTRY ); - - if ( !iNotify ) - { - User::Leave(KErrArgument); - } - CTimer::ConstructL(); - CActiveScheduler::Add(this); - OstTraceFunctionExit0( CDISMOUNTTIMER_CONSTRUCTL_EXIT ); - } - -void CDismountTimer::RunL() - { - OstTraceFunctionEntry0( CDISMOUNTTIMER_RUNL_ENTRY ); - - // Timer request has completed, so notify the timer's owner - iNotify->TimerExpired(); - OstTraceFunctionExit0( CDISMOUNTTIMER_RUNL_EXIT ); - } -void CDismountTimer::CancelTimer() - { - OstTraceFunctionEntry0( CDISMOUNTTIMER_CANCELTIMER_ENTRY ); - - Cancel(); - OstTraceFunctionExit0( CDISMOUNTTIMER_CANCELTIMER_EXIT ); - } - -void CDismountTimer::StartTimer() - { - OstTraceFunctionEntry0( CDISMOUNTTIMER_STARTTIMER_ENTRY ); - - After( KDismountTimeOut ); - OstTraceFunctionExit0( CDISMOUNTTIMER_STARTTIMER_EXIT ); - } -// End of File diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmengine.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmengine.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmengine.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -24,64 +24,54 @@ #include "msmmnodebase.h" #include -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "msmmengineTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "UsbHostMsmmServer"); #endif - CMsmmEngine::~CMsmmEngine() { - OstTraceFunctionEntry0( CMSMMENGINE_CMSMMENGINE_DES_ENTRY ); - + LOG_FUNC if (iDataEntrys) { delete iDataEntrys; } - OstTraceFunctionExit0( CMSMMENGINE_CMSMMENGINE_DES_EXIT ); } CMsmmEngine* CMsmmEngine::NewL() { - OstTraceFunctionEntry0( CMSMMENGINE_NEWL_ENTRY ); - + LOG_STATIC_FUNC_ENTRY CMsmmEngine* self = CMsmmEngine::NewLC(); CleanupStack::Pop(self); - OstTraceFunctionExit0( CMSMMENGINE_NEWL_EXIT ); return self; } CMsmmEngine* CMsmmEngine::NewLC() { - OstTraceFunctionEntry0( CMSMMENGINE_NEWLC_ENTRY ); - + LOG_STATIC_FUNC_ENTRY CMsmmEngine* self = new (ELeave) CMsmmEngine(); CleanupStack::PushL(self); self->ConstructL(); - OstTraceFunctionExit0( CMSMMENGINE_NEWLC_EXIT ); return self; } void CMsmmEngine::AddUsbMsDeviceL(const TUSBMSDeviceDescription& aDevice) { - OstTraceFunctionEntry0( CMSMMENGINE_ADDUSBMSDEVICEL_ENTRY ); - + LOG_FUNC TUsbMsDevice* device = SearchDevice(aDevice.iDeviceId); if (!device) { device = new (ELeave) TUsbMsDevice(aDevice); iDataEntrys->AddChild(device); } - OstTraceFunctionExit0( CMSMMENGINE_ADDUSBMSDEVICEL_EXIT ); } TUsbMsInterface* CMsmmEngine::AddUsbMsInterfaceL(TInt aDeviceId, TUint8 aInterfaceNumber, TInt32 aInterfaceToken) { - OstTraceFunctionEntry0( CMSMMENGINE_ADDUSBMSINTERFACEL_ENTRY ); - + LOG_FUNC TUsbMsDevice* device = SearchDevice(aDeviceId); if (!device) { @@ -97,15 +87,13 @@ { interface = AddUsbMsInterfaceNodeL(device, aInterfaceNumber, aInterfaceToken); } - OstTraceFunctionExit0( CMSMMENGINE_ADDUSBMSINTERFACEL_EXIT ); return interface; } void CMsmmEngine::AddUsbMsLogicalUnitL(TInt aDeviceId, TInt aInterfaceNumber, TInt aLogicalUnitNumber, TText aDrive) { - OstTraceFunctionEntry0( CMSMMENGINE_ADDUSBMSLOGICALUNITL_ENTRY ); - + LOG_FUNC TUsbMsDevice* device = SearchDevice(aDeviceId); if (!device) { @@ -121,21 +109,17 @@ { User::Leave(KErrArgument); // A proper interface node can't be found } - OstTraceFunctionExit0( CMSMMENGINE_ADDUSBMSLOGICALUNITL_EXIT ); } void CMsmmEngine::RemoveUsbMsNode(TMsmmNodeBase* aNodeToBeRemoved) { - OstTraceFunctionEntry0( CMSMMENGINE_REMOVEUSBMSNODE_ENTRY ); - + LOG_FUNC delete aNodeToBeRemoved; - OstTraceFunctionExit0( CMSMMENGINE_REMOVEUSBMSNODE_EXIT ); } TUsbMsDevice* CMsmmEngine::SearchDevice(TInt aDeviceId) const { - OstTraceFunctionEntry0( CMSMMENGINE_SEARCHDEVICE_ENTRY ); - + LOG_FUNC return static_cast( iDataEntrys->SearchInChildren(aDeviceId)); } @@ -143,37 +127,31 @@ TUsbMsInterface* CMsmmEngine::SearchInterface(TMsmmNodeBase* aDevice, TInt aInterfaceNumber) const { - OstTraceFunctionEntry0( CMSMMENGINE_SEARCHINTERFACE_ENTRY ); - + LOG_FUNC return static_cast( aDevice->SearchInChildren(aInterfaceNumber)); } CMsmmEngine::CMsmmEngine() { - OstTraceFunctionEntry0( CMSMMENGINE_CMSMMENGINE_CONS_ENTRY ); - + LOG_FUNC } void CMsmmEngine::ConstructL() { - OstTraceFunctionEntry0( CMSMMENGINE_CONSTRUCTL_ENTRY ); - + LOG_FUNC // Create the root of the whole node tree iDataEntrys = new (ELeave) TMsmmNodeBase(0x0); - OstTraceFunctionExit0( CMSMMENGINE_CONSTRUCTL_EXIT ); } TUsbMsInterface* CMsmmEngine::AddUsbMsInterfaceNodeL(TUsbMsDevice* iParent, TInt aInterfaceNumber, TInt aInterfaceToken) { - OstTraceFunctionEntry0( CMSMMENGINE_ADDUSBMSINTERFACENODEL_ENTRY ); - + LOG_FUNC TUsbMsInterface* interface = new (ELeave) TUsbMsInterface( aInterfaceNumber, aInterfaceToken); iParent->AddChild(interface); - OstTraceFunctionExit0( CMSMMENGINE_ADDUSBMSINTERFACENODEL_EXIT ); return interface; } @@ -181,13 +159,11 @@ TUsbMsInterface* iParent, TInt aLogicalUnitNumber, TText aDrive) { - OstTraceFunctionEntry0( CMSMMENGINE_ADDUSBMSLOGICALUNITNODEL_ENTRY ); - + LOG_FUNC TUsbMsLogicalUnit* logicalUnit = new (ELeave) TUsbMsLogicalUnit( aLogicalUnitNumber, aDrive); iParent->AddChild(logicalUnit); - OstTraceFunctionExit0( CMSMMENGINE_ADDUSBMSLOGICALUNITNODEL_EXIT ); return logicalUnit; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmnodebase.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmnodebase.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmnodebase.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -23,13 +23,11 @@ #include "msmmnodebase.h" #include -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "msmmnodebaseTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "UsbHostMsmmServer"); #endif - - TMsmmNodeBase::TMsmmNodeBase(TInt aIdentifier): iIdentifier(aIdentifier), iNextPeer(NULL), @@ -37,22 +35,19 @@ iLastChild(NULL), iParent(NULL) { - OstTraceFunctionEntry0( TMSMMNODEBASE_TMSMMNODEBASE_CONS_ENTRY ); + LOG_FUNC } TMsmmNodeBase::~TMsmmNodeBase() { - OstTraceFunctionEntry0( TMSMMNODEBASE_TMSMMNODEBASE_DES_ENTRY ); - + LOG_FUNC // Remove current node from the parent node and destroy it. DestroyNode(); - OstTraceFunctionExit0( TMSMMNODEBASE_TMSMMNODEBASE_DES_EXIT ); } void TMsmmNodeBase::DestroyNode() { - OstTraceFunctionEntry0( TMSMMNODEBASE_DESTROYNODE_ENTRY ); - + LOG_FUNC TMsmmNodeBase* parentNode = iParent; TMsmmNodeBase* iterator(this); TMsmmNodeBase* iteratorPrev(NULL); @@ -96,7 +91,6 @@ else { // No matched node - OstTraceFunctionExit0( TMSMMNODEBASE_DESTROYNODE_EXIT ); return; } } @@ -117,13 +111,11 @@ } } } - OstTraceFunctionExit0( TMSMMNODEBASE_DESTROYNODE_EXIT_DUP1 ); } void TMsmmNodeBase::AddChild(TMsmmNodeBase* aChild) { - OstTraceFunctionEntry0( TMSMMNODEBASE_ADDCHILD_ENTRY ); - + LOG_FUNC if (!iFirstChild) { iFirstChild = aChild; @@ -134,13 +126,11 @@ } iLastChild = aChild; aChild->iParent = this; - OstTraceFunctionExit0( TMSMMNODEBASE_ADDCHILD_EXIT ); } TMsmmNodeBase* TMsmmNodeBase::SearchInChildren(TInt aIdentifier) { - OstTraceFunctionEntry0( TMSMMNODEBASE_SEARCHINCHILDREN_ENTRY ); - + LOG_FUNC TMsmmNodeBase* iterator(iFirstChild); while (iterator) @@ -152,7 +142,6 @@ iterator = iterator->iNextPeer; } - OstTraceFunctionExit0( TMSMMNODEBASE_SEARCHINCHILDREN_EXIT ); return iterator; } @@ -162,7 +151,7 @@ TMsmmNodeBase(aDevice.iDeviceId), iDevice(aDevice) { - OstTraceFunctionEntry0( TUSBMSDEVICE_TUSBMSDEVICE_CONS_ENTRY ); + LOG_FUNC } // TUsbMsInterface @@ -173,15 +162,13 @@ iInterfaceNumber(aInterfaceNumber), iInterfaceToken(aInterfaceToken) { - OstTraceFunctionEntry0( TUSBMSINTERFACE_TUSBMSINTERFACE_CONS_ENTRY ); + LOG_FUNC } TUsbMsInterface::~TUsbMsInterface() { - OstTraceFunctionEntry0( TUSBMSINTERFACE_TUSBMSINTERFACE_DES_ENTRY ); - + LOG_FUNC iUsbMsDevice.Close(); - OstTraceFunctionExit0( TUSBMSINTERFACE_TUSBMSINTERFACE_DES_EXIT ); } // TUsbMsLogicalUnit @@ -191,7 +178,7 @@ iLogicalUnitNumber(aLogicalUnitNumber), iDrive(aDrive) { - OstTraceFunctionEntry0( TUSBMSLOGICALUNIT_TUSBMSLOGICALUNIT_CONS_ENTRY ); + LOG_FUNC } // End of file diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmserver.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmserver.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmserver.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -21,21 +21,19 @@ */ #include "msmmserver.h" +#include #include "msmm_internal_def.h" #include "msmmsession.h" #include "msmmengine.h" #include "eventqueue.h" #include "msmmterminator.h" -#include "msmmdismountusbdrives.h" -#include #include -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "msmmserverTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "UsbHostMsmmServer"); #endif - // Static public functions TInt CMsmmServer::ThreadFunction() { @@ -46,7 +44,15 @@ CTrapCleanup* cleanupStack = CTrapCleanup::New(); if (cleanupStack) { +#ifdef __FLOG_ACTIVE + (void)CUsbLog::Connect(); +#endif + TRAP(ret, ThreadFunctionL()); + +#ifdef __FLOG_ACTIVE + CUsbLog::Close(); +#endif delete cleanupStack; } @@ -61,7 +67,7 @@ void CMsmmServer::ThreadFunctionL() { - OstTraceFunctionEntry0( CMSMMSERVER_THREADFUNCTIONL_ENTRY ); + LOG_STATIC_FUNC_ENTRY TSecureId creatorSID = User::CreatorSecureId(); if (KFDFWSecureId != creatorSID) @@ -89,35 +95,13 @@ // Free the server and active scheduler. CleanupStack::PopAndDestroy(2, scheduler); - OstTraceFunctionExit0( CMSMMSERVER_THREADFUNCTIONL_EXIT ); } -CPolicyServer::TCustomResult CMsmmServer::CustomSecurityCheckL( - const RMessage2& aMsg, - TInt& /*aAction*/, - TSecurityInfo& /*aMissing*/) - { - CPolicyServer::TCustomResult returnValue = CPolicyServer::EFail; - - TSecureId ClientSID = aMsg.SecureId(); - - if (KFDFWSecureId == ClientSID) - { - returnValue = CPolicyServer::EPass; - } - else if ((KSidHbDeviceDialogAppServer == ClientSID) && SessionNumber() > 0) - { - returnValue = CPolicyServer::EPass; - } - return returnValue; - } - // Public functions // Construction and destruction CMsmmServer* CMsmmServer::NewLC() { - OstTraceFunctionEntry0( CMSMMSERVER_NEWLC_ENTRY ); - + LOG_STATIC_FUNC_ENTRY CMsmmServer* self = new (ELeave) CMsmmServer(EPriorityHigh); CleanupStack::PushL(self); @@ -125,39 +109,34 @@ self->StartL(KMsmmServerName); self->ConstructL(); - OstTraceFunctionExit0( CMSMMSERVER_NEWLC_EXIT ); return self; } CMsmmServer::~CMsmmServer() { - OstTraceFunctionEntry0( CMSMMSERVER_CMSMMSERVER_DES_ENTRY ); - + LOG_FUNC delete iPolicyPlugin; delete iEventQueue; delete iEngine; delete iTerminator; - delete iDismountErrData; - delete iDismountManager; REComSession::FinalClose(); #ifndef __OVER_DUMMYCOMPONENT__ iFs.RemoveProxyDrive(KPROXYDRIVENAME); iFs.Close(); #endif - OstTraceFunctionExit0( CMSMMSERVER_CMSMMSERVER_DES_EXIT ); } // CMsmmServer APIs CSession2* CMsmmServer::NewSessionL(const TVersion& aVersion, const RMessage2& aMessage) const { - OstTraceFunctionEntry0( CMSMMSERVER_NEWSESSIONL_ENTRY ); + LOG_FUNC if (KMaxClientCount <= SessionNumber()) { // There is a connection to MSMM server already. - // Currently design of MSMM can have two clients, one FDF and the other Indicator UI + // Currently design of MSMM allows only one activated client // at any time. User::Leave(KErrInUse); } @@ -180,22 +159,22 @@ TInt CMsmmServer::SessionNumber() const { - OstTraceFunctionEntry0( CMSMMSERVER_SESSIONNUMBER_ENTRY ); + LOG_FUNC + return iNumSessions; } void CMsmmServer::AddSession() { - OstTraceFunctionEntry0( CMSMMSERVER_ADDSESSION_ENTRY ); - + LOG_FUNC + ++iNumSessions; iTerminator->Cancel(); - OstTraceFunctionExit0( CMSMMSERVER_ADDSESSION_EXIT ); } void CMsmmServer::RemoveSession() { - OstTraceFunctionEntry0( CMSMMSERVER_REMOVESESSION_ENTRY ); + LOG_FUNC --iNumSessions; if (iNumSessions == 0) @@ -207,49 +186,25 @@ iTerminator->Cancel(); iTerminator->Start(); } - - OstTraceFunctionExit0( CMSMMSERVER_REMOVESESSION_EXIT ); } - - void CMsmmServer::DismountUsbDrivesL(TUSBMSDeviceDescription& aDevice) - { - OstTraceFunctionEntry0( CMSMMSERVER_DISMOUNTUSBDRIVERSL_ENTRY ); - delete iDismountManager; - iDismountManager = NULL; - iDismountManager= CMsmmDismountUsbDrives::NewL(); - - //Also notify the MSMM plugin of beginning of dismounting - iDismountErrData->iError = EHostMsEjectInProgress; - iDismountErrData->iE32Error = KErrNone; - iDismountErrData->iManufacturerString = aDevice.iManufacturerString; - iDismountErrData->iProductString = aDevice.iProductString; - iDismountErrData->iDriveName = 0x0; - - TRAP_IGNORE(iPolicyPlugin->SendErrorNotificationL(*iDismountErrData)); - - // Start dismounting - iDismountManager->DismountUsbDrives(*iPolicyPlugin, aDevice); - OstTraceFunctionExit0( CMSMMSERVER_DISMOUNTUSBDRIVERSL_EXIT ); - } - // Private functions // CMsmmServer Construction CMsmmServer::CMsmmServer(TInt aPriority) :CPolicyServer(aPriority, KMsmmServerSecurityPolicy, EUnsharableSessions) { - OstTraceFunctionEntry0( CMSMMSERVER_CMSMMSERVER_CONS_ENTRY ); + LOG_FUNC + // } void CMsmmServer::ConstructL() { - OstTraceFunctionEntry0( CMSMMSERVER_CONSTRUCTL_ENTRY ); + LOG_FUNC iEngine = CMsmmEngine::NewL(); iEventQueue = CDeviceEventQueue::NewL(*this); iTerminator = CMsmmTerminator::NewL(*iEventQueue); iPolicyPlugin = CMsmmPolicyPluginBase::NewL(); - iDismountErrData = new (ELeave) THostMsErrData; if (!iPolicyPlugin) { // Not any policy plugin implementation available @@ -270,7 +225,6 @@ // Start automatic shutdown timer iTerminator->Start(); - OstTraceFunctionExit0( CMSMMSERVER_CONSTRUCTL_EXIT ); } // End of file diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmsession.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmsession.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmsession.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -24,44 +24,36 @@ #include "msmmserver.h" #include "msmmengine.h" #include "eventqueue.h" -#include "msmmnodebase.h" #include #include - +#include "msmmnodebase.h" #include -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "msmmsessionTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "UsbHostMsmmServer"); #endif - - CMsmmSession::~CMsmmSession() { - OstTraceFunctionEntry0( CMSMMSESSION_CMSMMSESSION_DES_ENTRY ); - + LOG_FUNC delete iErrData; iServer.RemoveSession(); - OstTraceFunctionExit0( CMSMMSESSION_CMSMMSESSION_DES_EXIT ); } CMsmmSession* CMsmmSession::NewL(CMsmmServer& aServer, CDeviceEventQueue& anEventQueue) { - OstTraceFunctionEntry0( CMSMMSESSION_NEWL_ENTRY ); - + LOG_STATIC_FUNC_ENTRY CMsmmSession* self = new(ELeave) CMsmmSession(aServer, anEventQueue); CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(self); - OstTraceFunctionExit0( CMSMMSESSION_NEWL_EXIT ); return self; } void CMsmmSession::ServiceL(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CMSMMSESSION_SERVICEL_ENTRY ); - + LOG_STATIC_FUNC_ENTRY TInt ret(KErrNone); #ifdef _DEBUG @@ -100,10 +92,7 @@ delete heapObj; #endif // _DEBUG break; - - case EHostMsmmServerEjectUsbDrives: - iServer.DismountUsbDrivesL(iDevicePkg()); - break; + default: // Unsupported function number - panic the client PanicClient(aMessage, EBadRequest); @@ -111,13 +100,11 @@ // Complete the request aMessage.Complete(ret); - OstTraceFunctionExit0( CMSMMSESSION_SERVICEL_EXIT ); } void CMsmmSession::ServiceError(const RMessage2 &aMessage, TInt aError) { - OstTraceFunctionEntry0( CMSMMSESSION_SERVICEERROR_ENTRY ); - + LOG_FUNC CMsmmPolicyPluginBase* plugin = iServer.PolicyPlugin(); TUSBMSDeviceDescription& device = iDevicePkg(); @@ -141,15 +128,9 @@ iErrData->iProductString = device.iProductString; iErrData->iDriveName = 0x0; - OstTrace1( TRACE_DUMP, CMSMMSESSION_SERVICEERROR, "iErrData->iE32Error = %d", aError ); - OstTraceExt1( TRACE_DUMP, CMSMMSESSION_SERVICEERROR_DUP1, "iErrData->iManufacturerString=\"%S\"", device.iManufacturerString ); - OstTraceExt1( TRACE_DUMP, CMSMMSESSION_SERVICEERROR_DUP2, "iErrData->iProductString=\"%S\"", device.iProductString ); - - TInt err(KErrNone); TRAP(err, plugin->SendErrorNotificationL(*iErrData)); aMessage.Complete(aError); - OstTraceFunctionExit0( CMSMMSESSION_SERVICEERROR_EXIT ); } CMsmmSession::CMsmmSession(CMsmmServer& aServer, @@ -158,24 +139,19 @@ iEngine(aServer.Engine()), iEventQueue(anEventQueue) { - OstTraceFunctionEntry0( CMSMMSESSION_CMSMMSESSION_CONS_ENTRY ); - + LOG_FUNC aServer.AddSession(); - OstTraceFunctionExit0( CMSMMSESSION_CMSMMSESSION_CONS_EXIT ); } void CMsmmSession::ConstructL() { - OstTraceFunctionEntry0( CMSMMSESSION_CONSTRUCTL_ENTRY ); - + LOG_FUNC iErrData = new (ELeave) THostMsErrData; - OstTraceFunctionExit0( CMSMMSESSION_CONSTRUCTL_EXIT ); } void CMsmmSession::AddUsbMsInterfaceL(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CMSMMSESSION_ADDUSBMSINTERFACEL_ENTRY ); - + LOG_FUNC aMessage.Read(0, iDevicePkg); iInterfaceNumber = aMessage.Int1(); iInterfaceToken = static_cast(aMessage.Int2()); @@ -189,19 +165,16 @@ TDeviceEvent event(EDeviceEventAddFunction, device.iDeviceId, iInterfaceNumber, iInterfaceToken); iEventQueue.PushL(event); - OstTraceFunctionExit0( CMSMMSESSION_ADDUSBMSINTERFACEL_EXIT ); } void CMsmmSession::RemoveUsbMsDeviceL(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CMSMMSESSION_REMOVEUSBMSDEVICEL_ENTRY ); - + LOG_FUNC iDeviceID = aMessage.Int0(); // Put device event into queue TDeviceEvent event(EDeviceEventRemoveDevice, iDeviceID, 0, 0); iEventQueue.PushL(event); - OstTraceFunctionExit0( CMSMMSESSION_REMOVEUSBMSDEVICEL_EXIT ); } // End of file diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmterminator.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmterminator.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/msmmterminator.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -24,39 +24,33 @@ #include "eventqueue.h" #include -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "msmmterminatorTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "UsbHostMsmmServer"); #endif - const TInt KShutdownDelay = 2000000; // approx 2 seconds const TInt KMsmmTerminatorPriority = CActive::EPriorityStandard; CMsmmTerminator* CMsmmTerminator::NewL(const CDeviceEventQueue& anEventQueue) { - OstTraceFunctionEntry0( CMSMMTERMINATOR_NEWL_ENTRY ); - + LOG_STATIC_FUNC_ENTRY CMsmmTerminator* self = new (ELeave) CMsmmTerminator(anEventQueue); CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(self); - OstTraceFunctionExit0( CMSMMTERMINATOR_NEWL_EXIT ); return self; } void CMsmmTerminator::Start() { - OstTraceFunctionEntry0( CMSMMTERMINATOR_START_ENTRY ); - + LOG_FUNC After(KShutdownDelay); - OstTraceFunctionExit0( CMSMMTERMINATOR_START_EXIT ); } void CMsmmTerminator::RunL() { - OstTraceFunctionEntry0( CMSMMTERMINATOR_RUNL_ENTRY ); - + LOG_FUNC if (iEventQueue.Count()) { // There are some events still in the event queue to @@ -67,25 +61,20 @@ { CActiveScheduler::Stop(); } - OstTraceFunctionExit0( CMSMMTERMINATOR_RUNL_EXIT ); } CMsmmTerminator::CMsmmTerminator(const CDeviceEventQueue& anEventQueue): CTimer(KMsmmTerminatorPriority), iEventQueue(anEventQueue) { - OstTraceFunctionEntry0( CMSMMTERMINATOR_CMSMMTERMINATOR_CONS_ENTRY ); - + LOG_FUNC CActiveScheduler::Add(this); - OstTraceFunctionExit0( CMSMMTERMINATOR_CMSMMTERMINATOR_CONS_EXIT ); } void CMsmmTerminator::ConstructL() { - OstTraceFunctionEntry0( CMSMMTERMINATOR_CONSTRUCTL_ENTRY ); - + LOG_FUNC CTimer::ConstructL(); - OstTraceFunctionExit0( CMSMMTERMINATOR_CONSTRUCTL_EXIT ); } // End of file diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/subcommandbase.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/subcommandbase.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/subcommandbase.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -26,13 +26,11 @@ #include "eventhandler.h" #include -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "subcommandbaseTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "UsbHostMsmmServer"); #endif - - THostMsSubCommandParam::THostMsSubCommandParam(MMsmmSrvProxy& aServer, MUsbMsEventHandler& aHandler, MUsbMsSubCommandCreator& aCreator, @@ -42,7 +40,7 @@ iCreator(aCreator), iEvent(aEvent) { - OstTraceFunctionEntry0( THOSTMSSUBCOMMANDPARAM_THOSTMSSUBCOMMANDPARAM_CONS_ENTRY ); + LOG_FUNC } TSubCommandBase::TSubCommandBase(THostMsSubCommandParam& aParameter): @@ -53,7 +51,7 @@ iIsExecuted(EFalse), iIsKeyCommand(ETrue) { - OstTraceFunctionEntry0( TSUBCOMMANDBASE_TSUBCOMMANDBASE_CONS_ENTRY ); + LOG_FUNC } void TSubCommandBase::ExecuteL() @@ -64,34 +62,26 @@ void TSubCommandBase::AsyncCmdCompleteL() { - OstTraceFunctionEntry0( TSUBCOMMANDBASE_ASYNCCMDCOMPLETEL_ENTRY ); - + LOG_FUNC DoAsyncCmdCompleteL(); - OstTraceFunctionExit0( TSUBCOMMANDBASE_ASYNCCMDCOMPLETEL_EXIT ); } void TSubCommandBase::CancelAsyncCmd() { - OstTraceFunctionEntry0( TSUBCOMMANDBASE_CANCELASYNCCMD_ENTRY ); - + LOG_FUNC DoCancelAsyncCmd(); - OstTraceFunctionExit0( TSUBCOMMANDBASE_CANCELASYNCCMD_EXIT ); } void TSubCommandBase::DoAsyncCmdCompleteL() { - OstTraceFunctionEntry0( TSUBCOMMANDBASE_DOASYNCCMDCOMPLETEL_ENTRY ); - + LOG_FUNC // Empty implementation - OstTraceFunctionExit0( TSUBCOMMANDBASE_DOASYNCCMDCOMPLETEL_EXIT ); } void TSubCommandBase::DoCancelAsyncCmd() { - OstTraceFunctionEntry0( TSUBCOMMANDBASE_DOCANCELASYNCCMD_ENTRY ); - + LOG_FUNC // Empty implementation - OstTraceFunctionExit0( TSUBCOMMANDBASE_DOCANCELASYNCCMD_EXIT ); } // End of file diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/subcommands.cpp --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/subcommands.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/src/subcommands.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -30,12 +30,11 @@ #include #include -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "subcommandsTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "UsbHostMsmmServer"); #endif - /** * TRegisterInterface member functions */ @@ -44,12 +43,12 @@ iDeviceNode(NULL), iInterfaceNode(NULL) { - OstTraceFunctionEntry0( TREGISTERINTERFACE_TREGISTERINTERFACE_CONS_ENTRY ); + LOG_FUNC } void TRegisterInterface::DoExecuteL() { - OstTraceFunctionEntry0( TREGISTERINTERFACE_DOEXECUTEL_ENTRY ); + LOG_FUNC // Add new interface node into data engine iInterfaceNode = iServer.Engine().AddUsbMsInterfaceL(iEvent.iDeviceId, @@ -75,32 +74,26 @@ iMsConfig.iRemoteWakeup = device.iRemoteWakeup; iMsConfig.iIsOtgClient = device.iIsOtgClient; - OstTrace1( TRACE_NORMAL, TREGISTERINTERFACE_DOEXECUTEL, - "iMsConfig.iProtocolId %d", iMsConfig.iProtocolId ); - OstTrace1( TRACE_NORMAL, TREGISTERINTERFACE_DOEXECUTEL_DUP1, - "iMsConfig.iTransportId %d", iMsConfig.iTransportId ); - OstTrace1( TRACE_NORMAL, TREGISTERINTERFACE_DOEXECUTEL_DUP2, - "iMsConfig.iRemoteWakeup %d", iMsConfig.iRemoteWakeup ); - OstTrace1( TRACE_NORMAL, TREGISTERINTERFACE_DOEXECUTEL_DUP3, - "iMsConfig.iIsOtgClient %d", iMsConfig.iIsOtgClient ); - + LOGTEXT2(_L8("\t iMsConfig.iProtocolId %d"), iMsConfig.iProtocolId); + LOGTEXT2(_L8("\t iMsConfig.iTransportId %d"), iMsConfig.iTransportId); + LOGTEXT2(_L8("\t iMsConfig.iRemoteWakeup %d"), iMsConfig.iRemoteWakeup); + LOGTEXT2(_L8("\t iMsConfig.iIsOtgClient %d"), iMsConfig.iIsOtgClient); + TSuspensionPolicy suspensionPolicy; iServer.PolicyPlugin()->GetSuspensionPolicy(suspensionPolicy); iMsConfig.iOtgSuspendTime = suspensionPolicy.iOtgSuspendTime; iMsConfig.iStatusPollingInterval = suspensionPolicy.iStatusPollingInterval; - OstTrace1( TRACE_NORMAL, TREGISTERINTERFACE_DOEXECUTEL_DUP4, - "iMsConfig.iStatusPollingInterval %d", iMsConfig.iStatusPollingInterval ); - OstTrace1( TRACE_NORMAL, TREGISTERINTERFACE_DOEXECUTEL_DUP5, - "iMsConfig.iOtgSuspendTime %d", iMsConfig.iOtgSuspendTime ); - + + LOGTEXT2(_L8("\t iMsConfig.iStatusPollingInterval %d"), iMsConfig.iStatusPollingInterval); + LOGTEXT2(_L8("\t iMsConfig.iOtgSuspendTime %d"), iMsConfig.iOtgSuspendTime); + iHandler.Start(); iInterfaceNode->iUsbMsDevice.Add(iMsConfig, iHandler.Status()); - OstTraceFunctionExit0( TREGISTERINTERFACE_DOEXECUTEL_EXIT ); } void TRegisterInterface::HandleError(THostMsErrData& aData, TInt aError) { - OstTraceFunctionEntry0( TREGISTERINTERFACE_HANDLEERROR_ENTRY ); + LOG_FUNC switch (aError) { @@ -127,12 +120,11 @@ iServer.Engine().RemoveUsbMsNode(iInterfaceNode); iInterfaceNode = NULL; } - OstTraceFunctionExit0( TREGISTERINTERFACE_HANDLEERROR_EXIT ); } void TRegisterInterface::DoAsyncCmdCompleteL() { - OstTraceFunctionEntry0( TREGISTERINTERFACE_DOASYNCCMDCOMPLETEL_ENTRY ); + LOG_FUNC User::LeaveIfError(iHandler.Status().Int()); if(iInterfaceNode) @@ -141,16 +133,14 @@ iInterfaceNode->iUsbMsDevice.GetNumLun(iMaxLogicalUnit)); } - OstTrace1( TRACE_NORMAL, TREGISTERINTERFACE_DOASYNCCMDCOMPLETEL, - "GetNumLun %d", iMaxLogicalUnit ); + LOGTEXT2(_L8("\tGetNumLun %d"), iMaxLogicalUnit); iCreator.CreateSubCmdForRetrieveDriveLetterL(iMaxLogicalUnit); - OstTraceFunctionExit0( TREGISTERINTERFACE_DOASYNCCMDCOMPLETEL_EXIT ); } void TRegisterInterface::DoCancelAsyncCmd() { - OstTraceFunctionEntry0( TREGISTERINTERFACE_DOCANCELASYNCCMD_ENTRY ); + LOG_FUNC if(iInterfaceNode) { @@ -158,7 +148,6 @@ iServer.Engine().RemoveUsbMsNode(iInterfaceNode); iInterfaceNode = NULL; } - OstTraceFunctionExit0( TREGISTERINTERFACE_DOCANCELASYNCCMD_EXIT ); } /** @@ -171,12 +160,12 @@ iLuNumber(aLuNumber), iDrive(0) { - OstTraceFunctionEntry0( TRETRIEVEDRIVELETTER_TRETRIEVEDRIVELETTER_CONS_ENTRY ); + LOG_FUNC } void TRetrieveDriveLetter::DoExecuteL() { - OstTraceFunctionEntry0( TRETRIEVEDRIVELETTER_DOEXECUTEL_ENTRY ); + LOG_FUNC TUsbMsDevice* deviceEntry(NULL); deviceEntry = iServer.Engine().SearchDevice(iEvent.iDeviceId); @@ -205,12 +194,11 @@ iServer.PolicyPlugin()->RetrieveDriveLetterL( iDrive, iRequestData, status); } - OstTraceFunctionExit0( TRETRIEVEDRIVELETTER_DOEXECUTEL_EXIT ); } void TRetrieveDriveLetter::HandleError(THostMsErrData& aData, TInt aError) { - OstTraceFunctionEntry0( TRETRIEVEDRIVELETTER_HANDLEERROR_ENTRY ); + LOG_FUNC switch (aError) { @@ -230,25 +218,22 @@ aData.iManufacturerString = iRequestData.iManufacturerString; aData.iProductString = iRequestData.iProductString; aData.iDriveName = iDrive; - OstTraceFunctionExit0( TRETRIEVEDRIVELETTER_HANDLEERROR_EXIT ); } void TRetrieveDriveLetter::DoAsyncCmdCompleteL() { - OstTraceFunctionEntry0( TRETRIEVEDRIVELETTER_DOASYNCCMDCOMPLETEL_ENTRY ); + LOG_FUNC User::LeaveIfError(iHandler.Status().Int()); iCreator.CreateSubCmdForMountingLogicalUnitL(iDrive, iLuNumber); - OstTraceFunctionExit0( TRETRIEVEDRIVELETTER_DOASYNCCMDCOMPLETEL_EXIT ); } void TRetrieveDriveLetter::DoCancelAsyncCmd() { - OstTraceFunctionEntry0( TRETRIEVEDRIVELETTER_DOCANCELASYNCCMD_ENTRY ); + LOG_FUNC iServer.PolicyPlugin()->CancelRetrieveDriveLetter(); - OstTraceFunctionExit0( TRETRIEVEDRIVELETTER_DOCANCELASYNCCMD_EXIT ); } /** @@ -261,16 +246,14 @@ iDrive(aDrive), iLuNumber(aLuNumber) { - OstTraceFunctionEntry0( TMOUNTLOGICALUNIT_TMOUNTLOGICALUNIT_CONS_ENTRY ); + LOG_FUNC iIsKeyCommand = EFalse; - OstTraceFunctionExit0( TMOUNTLOGICALUNIT_TMOUNTLOGICALUNIT_CONS_EXIT ); } void TMountLogicalUnit::DoExecuteL() { - OstTraceFunctionEntry0( TMOUNTLOGICALUNIT_DOEXECUTEL_ENTRY ); - + LOG_FUNC TInt ret(KErrNone); RFs& fs = iServer.FileServerSession(); @@ -294,18 +277,16 @@ if ((KErrNone != ret) && (KErrAlreadyExists != ret) && (KErrNotReady != ret)) { - if (KErrAbort != ret) - User::Leave (ret); + User::Leave (ret); } iHandler.Start(); iHandler.Complete(); - OstTraceFunctionExit0( TMOUNTLOGICALUNIT_DOEXECUTEL_EXIT ); } void TMountLogicalUnit::HandleError(THostMsErrData& aData, TInt aError) { - OstTraceFunctionEntry0( TMOUNTLOGICALUNIT_HANDLEERROR_ENTRY ); + LOG_FUNC switch (aError) { @@ -355,18 +336,16 @@ aData.iProductString.Copy(deviceNode->iDevice.iProductString); } aData.iDriveName = iDrive; - OstTraceFunctionExit0( TMOUNTLOGICALUNIT_HANDLEERROR_EXIT ); } void TMountLogicalUnit::DoAsyncCmdCompleteL() { - OstTraceFunctionEntry0( TMOUNTLOGICALUNIT_DOASYNCCMDCOMPLETEL_ENTRY ); - + LOG_FUNC + iServer.Engine().AddUsbMsLogicalUnitL( iEvent.iDeviceId, iEvent.iInterfaceNumber, iLuNumber, iDrive); iCreator.CreateSubCmdForSaveLatestMountInfoL(iDrive, iLuNumber); - OstTraceFunctionExit0( TMOUNTLOGICALUNIT_DOASYNCCMDCOMPLETEL_EXIT ); } /** @@ -380,16 +359,15 @@ iDrive(aDrive), iLuNumber(aLuNumber) { - OstTraceFunctionEntry0( TSAVELATESTMOUNTINFO_TSAVELATESTMOUNTINFO_CONS_ENTRY ); + LOG_FUNC iIsKeyCommand = EFalse; - OstTraceFunctionExit0( TSAVELATESTMOUNTINFO_TSAVELATESTMOUNTINFO_CONS_EXIT ); } void TSaveLatestMountInfo::DoExecuteL() { - OstTraceFunctionEntry0( TSAVELATESTMOUNTINFO_DOEXECUTEL_ENTRY ); - + LOG_FUNC + TUsbMsDevice* deviceEntry(NULL); deviceEntry = iServer.Engine().SearchDevice(iEvent.iDeviceId); if (!deviceEntry) @@ -420,21 +398,18 @@ iServer.PolicyPlugin()->SaveLatestMountInfoL(iRecord, status); } - OstTraceFunctionExit0( TSAVELATESTMOUNTINFO_DOEXECUTEL_EXIT ); } void TSaveLatestMountInfo::DoAsyncCmdCompleteL() { - OstTraceFunctionEntry0( TSAVELATESTMOUNTINFO_DOASYNCCMDCOMPLETEL_ENTRY ); - + LOG_FUNC User::LeaveIfError(iHandler.Status().Int()); - OstTraceFunctionExit0( TSAVELATESTMOUNTINFO_DOASYNCCMDCOMPLETEL_EXIT ); } void TSaveLatestMountInfo::HandleError(THostMsErrData& aData, TInt aError) { - OstTraceFunctionEntry0( TSAVELATESTMOUNTINFO_HANDLEERROR_ENTRY ); - + LOG_FUNC + switch (aError) { case KErrNoMemory: @@ -450,15 +425,13 @@ aData.iManufacturerString = iRecord.iLogicUnit.iManufacturerString; aData.iProductString = iRecord.iLogicUnit.iProductString; aData.iDriveName = iDrive; - OstTraceFunctionExit0( TSAVELATESTMOUNTINFO_HANDLEERROR_EXIT ); } void TSaveLatestMountInfo::DoCancelAsyncCmd() { - OstTraceFunctionEntry0( TSAVELATESTMOUNTINFO_DOCANCELASYNCCMD_ENTRY ); + LOG_FUNC iServer.PolicyPlugin()->CancelSaveLatestMountInfo(); - OstTraceFunctionExit0( TSAVELATESTMOUNTINFO_DOCANCELASYNCCMD_EXIT ); } @@ -475,13 +448,13 @@ iDeviceNode(NULL), iInterfaceNode(NULL) { - OstTraceFunctionEntry0( TDEREGISTERINTERFACE_TDEREGISTERINTERFACE_CONS_ENTRY ); + LOG_FUNC } void TDeregisterInterface::DoExecuteL() { - OstTraceFunctionEntry0( TDEREGISTERINTERFACE_DOEXECUTEL_ENTRY ); - + LOG_FUNC + iDeviceNode = iServer.Engine().SearchDevice(iEvent.iDeviceId); if (!iDeviceNode) { @@ -510,13 +483,12 @@ iHandler.Start(); // Simulate a async request be completed. iHandler.Complete(); - OstTraceFunctionExit0( TDEREGISTERINTERFACE_DOEXECUTEL_EXIT ); } void TDeregisterInterface::HandleError(THostMsErrData& aData, TInt aError) { - OstTraceFunctionEntry0( TDEREGISTERINTERFACE_HANDLEERROR_ENTRY ); - + LOG_FUNC + switch (aError) { case KErrNoMemory: @@ -535,7 +507,6 @@ aData.iProductString.Copy(iDeviceNode->iDevice.iProductString); } aData.iDriveName = 0; - OstTraceFunctionExit0( TDEREGISTERINTERFACE_HANDLEERROR_EXIT ); } /** @@ -548,13 +519,12 @@ TSubCommandBase(aParameter), iLogicalUnit(aLogicalUnit) { - OstTraceFunctionEntry0( TDISMOUNTLOGICALUNIT_TDISMOUNTLOGICALUNIT_CONS_ENTRY ); + LOG_FUNC } void TDismountLogicalUnit::DoExecuteL() { - OstTraceFunctionEntry0( TDISMOUNTLOGICALUNIT_DOEXECUTEL_ENTRY ); - + LOG_FUNC RFs& fs = iServer.FileServerSession(); TInt driveNum; fs.CharToDrive(iLogicalUnit.iDrive, driveNum); @@ -571,12 +541,11 @@ iHandler.Start(); // Simulate a async request be completed. iHandler.Complete(); - OstTraceFunctionExit0( TDISMOUNTLOGICALUNIT_DOEXECUTEL_EXIT ); } void TDismountLogicalUnit::HandleError(THostMsErrData& aData, TInt aError) { - OstTraceFunctionEntry0( TDISMOUNTLOGICALUNIT_HANDLEERROR_ENTRY ); + LOG_FUNC switch (aError) { @@ -597,7 +566,6 @@ aData.iProductString.Copy(deviceNode->iDevice.iProductString); } aData.iDriveName = iLogicalUnit.iDrive; - OstTraceFunctionExit0( TDISMOUNTLOGICALUNIT_HANDLEERROR_EXIT ); } /** @@ -610,13 +578,12 @@ TSubCommandBase(aParameter), iNodeToBeRemoved(aNodeToBeRemoved) { - OstTraceFunctionEntry0( TREMOVEUSBMSDEVICENODE_TREMOVEUSBMSDEVICENODE_CONS_ENTRY ); + LOG_FUNC } void TRemoveUsbMsDeviceNode::DoExecuteL() { - OstTraceFunctionEntry0( TREMOVEUSBMSDEVICENODE_DOEXECUTEL_ENTRY ); - + LOG_FUNC if(iNodeToBeRemoved) { iServer.Engine().RemoveUsbMsNode(iNodeToBeRemoved); @@ -631,13 +598,11 @@ iHandler.Start(); // Simulate a async request be completed. iHandler.Complete(); - OstTraceFunctionExit0( TREMOVEUSBMSDEVICENODE_DOEXECUTEL_EXIT ); } void TRemoveUsbMsDeviceNode::HandleError(THostMsErrData& aData, TInt aError) { - OstTraceFunctionEntry0( TREMOVEUSBMSDEVICENODE_HANDLEERROR_ENTRY ); - + LOG_FUNC switch (aError) { case KErrArgument: @@ -654,7 +619,6 @@ aData.iProductString.Copy(deviceNode->iDevice.iProductString); } aData.iDriveName = 0; - OstTraceFunctionExit0( TREMOVEUSBMSDEVICENODE_HANDLEERROR_EXIT ); } // End of file diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/host/functiondrivers/ms/msmm/server/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,280 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_DUMP=0x89 -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_DUMP[0x89]_CMSMMSESSION_SERVICEERROR=0x1 -[TRACE]TRACE_DUMP[0x89]_CMSMMSESSION_SERVICEERROR_DUP1=0x2 -[TRACE]TRACE_DUMP[0x89]_CMSMMSESSION_SERVICEERROR_DUP2=0x3 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CDEVICEEVENTHANDLER_DES_ENTRY=0xd -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CDEVICEEVENTHANDLER_DES_EXIT=0xe -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CDEVICEEVENTHANDLER_ENTRY=0x28 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CDEVICEEVENTHANDLER_EXIT=0x29 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_COMPLETECLIENT_ENTRY=0x38 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_COMPLETECLIENT_EXIT=0x39 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_COMPLETE_ENTRY=0x1c -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_COMPLETE_EXIT=0x1d -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CONSTRUCTL_ENTRY=0x2a -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CONSTRUCTL_EXIT=0x2b -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CREATESUBCMDFORADDINGUSBMSFUNCTIONL_ENTRY=0x2e -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CREATESUBCMDFORADDINGUSBMSFUNCTIONL_EXIT=0x2f -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CREATESUBCMDFORDEVICEEVENTL_ENTRY=0x2c -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CREATESUBCMDFORDEVICEEVENTL_EXIT=0x2d -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CREATESUBCMDFORMOUNTINGLOGICALUNITL_ENTRY=0x15 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CREATESUBCMDFORMOUNTINGLOGICALUNITL_EXIT=0x16 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CREATESUBCMDFORREMOVINGUSBMSDEVICEL_ENTRY=0x30 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CREATESUBCMDFORREMOVINGUSBMSDEVICEL_EXIT=0x31 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CREATESUBCMDFORRETRIEVEDRIVELETTERL_ENTRY=0x13 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CREATESUBCMDFORRETRIEVEDRIVELETTERL_EXIT=0x14 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CREATESUBCMDFORSAVELATESTMOUNTINFOL_ENTRY=0x17 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_CREATESUBCMDFORSAVELATESTMOUNTINFOL_EXIT=0x18 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_DOCANCEL_ENTRY=0x21 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_DOCANCEL_EXIT=0x22 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_HANDLEEVENTL_ENTRY=0x1f -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_HANDLEEVENTL_EXIT=0x20 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_NEWLC_ENTRY=0x11 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_NEWLC_EXIT=0x12 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_NEWL_ENTRY=0xf -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_NEWL_EXIT=0x10 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_RESETHANDLERDATA_ENTRY=0x34 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_RESETHANDLERDATA_EXIT=0x35 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_RESETHANDLERERROR_ENTRY=0x36 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_RESETHANDLERERROR_EXIT=0x37 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_RESETHANDLER_ENTRY=0x32 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_RESETHANDLER_EXIT=0x33 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_RUNERROR_ENTRY=0x26 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_RUNERROR_EXIT=0x27 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_RUNL_ENTRY=0x23 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_RUNL_EXIT=0x24 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_RUNL_EXIT_DUP1=0x25 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_START_ENTRY=0x19 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_START_EXIT=0x1a -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_START_EXIT_DUP1=0x1b -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTHANDLER_STATUS_ENTRY=0x1e -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_APPENDANDOPTIMIZEL_ENTRY=0x4c -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_APPENDANDOPTIMIZEL_EXIT=0x4d -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_APPENDANDOPTIMIZEL_EXIT_DUP1=0x4e -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_CDEVICEEVENTQUEUE_CONS_ENTRY=0x48 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_CDEVICEEVENTQUEUE_CONS_EXIT=0x49 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_CDEVICEEVENTQUEUE_DES_ENTRY=0x3a -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_CDEVICEEVENTQUEUE_DES_EXIT=0x3b -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_CONSTRUCTL_ENTRY=0x4a -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_CONSTRUCTL_EXIT=0x4b -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_DOCANCEL_ENTRY=0x42 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_DOCANCEL_EXIT=0x43 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_NEWLC_ENTRY=0x3e -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_NEWLC_EXIT=0x3f -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_NEWL_ENTRY=0x3c -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_NEWL_EXIT=0x3d -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_POP_ENTRY=0x54 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_POP_EXIT=0x55 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_PUSHL_ENTRY=0x40 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_PUSHL_EXIT=0x41 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_RUNERROR_ENTRY=0x46 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_RUNERROR_EXIT=0x47 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_RUNL_ENTRY=0x44 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_RUNL_EXIT=0x45 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_SENDEVENTL_ENTRY=0x52 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_SENDEVENTL_EXIT=0x53 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_STARTL_ENTRY=0x4f -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_STARTL_EXIT=0x50 -[TRACE]TRACE_FLOW[0x8A]_CDEVICEEVENTQUEUE_STARTL_EXIT_DUP1=0x51 -[TRACE]TRACE_FLOW[0x8A]_CDISMOUNTTIMER_CANCELTIMER_ENTRY=0x104 -[TRACE]TRACE_FLOW[0x8A]_CDISMOUNTTIMER_CANCELTIMER_EXIT=0x105 -[TRACE]TRACE_FLOW[0x8A]_CDISMOUNTTIMER_CDISMOUNTTIMER_CONS_ENTRY=0xfd -[TRACE]TRACE_FLOW[0x8A]_CDISMOUNTTIMER_CDISMOUNTTIMER_DES_ENTRY=0xfe -[TRACE]TRACE_FLOW[0x8A]_CDISMOUNTTIMER_CDISMOUNTTIMER_DES_EXIT=0xff -[TRACE]TRACE_FLOW[0x8A]_CDISMOUNTTIMER_CONSTRUCTL_ENTRY=0x100 -[TRACE]TRACE_FLOW[0x8A]_CDISMOUNTTIMER_CONSTRUCTL_EXIT=0x101 -[TRACE]TRACE_FLOW[0x8A]_CDISMOUNTTIMER_NEWLC_ENTRY=0xfb -[TRACE]TRACE_FLOW[0x8A]_CDISMOUNTTIMER_NEWLC_EXIT=0xfc -[TRACE]TRACE_FLOW[0x8A]_CDISMOUNTTIMER_NEWL_ENTRY=0xf9 -[TRACE]TRACE_FLOW[0x8A]_CDISMOUNTTIMER_NEWL_EXIT=0xfa -[TRACE]TRACE_FLOW[0x8A]_CDISMOUNTTIMER_RUNL_ENTRY=0x102 -[TRACE]TRACE_FLOW[0x8A]_CDISMOUNTTIMER_RUNL_EXIT=0x103 -[TRACE]TRACE_FLOW[0x8A]_CDISMOUNTTIMER_STARTTIMER_ENTRY=0x106 -[TRACE]TRACE_FLOW[0x8A]_CDISMOUNTTIMER_STARTTIMER_EXIT=0x107 -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_CMSMMDISMOUNTUSBDRIVES_DES_ENTRY=0xe4 -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_CMSMMDISMOUNTUSBDRIVES_DES_EXIT=0xe5 -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_CMSMMDISMOUNTUSBDRIVES_ENTRY=0xee -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_CMSMMDISMOUNTUSBDRIVES_EXIT=0xef -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_CONSTRUCTL_ENTRY=0xf0 -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_CONSTRUCTL_EXIT=0xf1 -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_DISMOUNTUSBDRIVES_ENTRY=0xf2 -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_DISMOUNTUSBDRIVES_EXIT=0xf3 -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_DOCANCEL_ENTRY=0xec -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_DOCANCEL_EXIT=0xed -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_DODISMOUNT_ENTRY=0xf4 -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_DODISMOUNT_EXIT=0xf5 -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_DODISMOUNT_EXIT_DUP1=0xf6 -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_NEWLC_ENTRY=0xe8 -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_NEWLC_EXIT=0xe9 -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_NEWL_ENTRY=0xe6 -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_NEWL_EXIT=0xe7 -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_RUNL_ENTRY=0xea -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_RUNL_EXIT=0xeb -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_TIMEREXPIRED_ENTRY=0xf7 -[TRACE]TRACE_FLOW[0x8A]_CMSMMDISMOUNTUSBDRIVES_TIMEREXPIRED_EXIT=0xf8 -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_ADDUSBMSDEVICEL_ENTRY=0x5c -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_ADDUSBMSDEVICEL_EXIT=0x5d -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_ADDUSBMSINTERFACEL_ENTRY=0x5e -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_ADDUSBMSINTERFACEL_EXIT=0x5f -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_ADDUSBMSINTERFACENODEL_ENTRY=0x69 -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_ADDUSBMSINTERFACENODEL_EXIT=0x6a -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_ADDUSBMSLOGICALUNITL_ENTRY=0x60 -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_ADDUSBMSLOGICALUNITL_EXIT=0x61 -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_ADDUSBMSLOGICALUNITNODEL_ENTRY=0x6b -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_ADDUSBMSLOGICALUNITNODEL_EXIT=0x6c -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_CMSMMENGINE_CONS_ENTRY=0x66 -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_CMSMMENGINE_DES_ENTRY=0x56 -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_CMSMMENGINE_DES_EXIT=0x57 -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_CONSTRUCTL_ENTRY=0x67 -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_CONSTRUCTL_EXIT=0x68 -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_NEWLC_ENTRY=0x5a -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_NEWLC_EXIT=0x5b -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_NEWL_ENTRY=0x58 -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_NEWL_EXIT=0x59 -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_REMOVEUSBMSNODE_ENTRY=0x62 -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_REMOVEUSBMSNODE_EXIT=0x63 -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_SEARCHDEVICE_ENTRY=0x64 -[TRACE]TRACE_FLOW[0x8A]_CMSMMENGINE_SEARCHINTERFACE_ENTRY=0x65 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSERVER_ADDSESSION_ENTRY=0x84 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSERVER_ADDSESSION_EXIT=0x85 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSERVER_CMSMMSERVER_CONS_ENTRY=0x8a -[TRACE]TRACE_FLOW[0x8A]_CMSMMSERVER_CMSMMSERVER_DES_ENTRY=0x80 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSERVER_CMSMMSERVER_DES_EXIT=0x81 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSERVER_CONSTRUCTL_ENTRY=0x8b -[TRACE]TRACE_FLOW[0x8A]_CMSMMSERVER_CONSTRUCTL_EXIT=0x8c -[TRACE]TRACE_FLOW[0x8A]_CMSMMSERVER_DISMOUNTUSBDRIVERSL_ENTRY=0x88 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSERVER_DISMOUNTUSBDRIVERSL_EXIT=0x89 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSERVER_NEWLC_ENTRY=0x7e -[TRACE]TRACE_FLOW[0x8A]_CMSMMSERVER_NEWLC_EXIT=0x7f -[TRACE]TRACE_FLOW[0x8A]_CMSMMSERVER_NEWSESSIONL_ENTRY=0x82 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSERVER_REMOVESESSION_ENTRY=0x86 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSERVER_REMOVESESSION_EXIT=0x87 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSERVER_SESSIONNUMBER_ENTRY=0x83 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSERVER_THREADFUNCTIONL_ENTRY=0x7c -[TRACE]TRACE_FLOW[0x8A]_CMSMMSERVER_THREADFUNCTIONL_EXIT=0x7d -[TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_ADDUSBMSINTERFACEL_ENTRY=0x99 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_ADDUSBMSINTERFACEL_EXIT=0x9a -[TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_CMSMMSESSION_CONS_ENTRY=0x108 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_CMSMMSESSION_CONS_EXIT=0x109 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_CMSMMSESSION_DES_ENTRY=0x8d -[TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_CMSMMSESSION_DES_EXIT=0x8e -[TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_CONSTRUCTL_ENTRY=0x97 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_CONSTRUCTL_EXIT=0x98 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_NEWL_ENTRY=0x8f -[TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_NEWL_EXIT=0x90 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_REMOVEUSBMSDEVICEL_ENTRY=0x9b -[TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_REMOVEUSBMSDEVICEL_EXIT=0x9c -[TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_SERVICEERROR_ENTRY=0x93 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_SERVICEERROR_EXIT=0x94 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_SERVICEL_ENTRY=0x91 -[TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_SERVICEL_EXIT=0x92 -[TRACE]TRACE_FLOW[0x8A]_CMSMMTERMINATOR_CMSMMTERMINATOR_CONS_ENTRY=0xa3 -[TRACE]TRACE_FLOW[0x8A]_CMSMMTERMINATOR_CMSMMTERMINATOR_CONS_EXIT=0xa4 -[TRACE]TRACE_FLOW[0x8A]_CMSMMTERMINATOR_CONSTRUCTL_ENTRY=0xa5 -[TRACE]TRACE_FLOW[0x8A]_CMSMMTERMINATOR_CONSTRUCTL_EXIT=0xa6 -[TRACE]TRACE_FLOW[0x8A]_CMSMMTERMINATOR_NEWL_ENTRY=0x9d -[TRACE]TRACE_FLOW[0x8A]_CMSMMTERMINATOR_NEWL_EXIT=0x9e -[TRACE]TRACE_FLOW[0x8A]_CMSMMTERMINATOR_RUNL_ENTRY=0xa1 -[TRACE]TRACE_FLOW[0x8A]_CMSMMTERMINATOR_RUNL_EXIT=0xa2 -[TRACE]TRACE_FLOW[0x8A]_CMSMMTERMINATOR_START_ENTRY=0x9f -[TRACE]TRACE_FLOW[0x8A]_CMSMMTERMINATOR_START_EXIT=0xa0 -[TRACE]TRACE_FLOW[0x8A]_RSUBCOMMANDQUEUE_EXECUTEHEADL_ENTRY=0x8 -[TRACE]TRACE_FLOW[0x8A]_RSUBCOMMANDQUEUE_EXECUTEHEADL_EXIT=0x9 -[TRACE]TRACE_FLOW[0x8A]_RSUBCOMMANDQUEUE_HEAD_ENTRY=0xa -[TRACE]TRACE_FLOW[0x8A]_RSUBCOMMANDQUEUE_INSERTAFTERHEADL_ENTRY=0x6 -[TRACE]TRACE_FLOW[0x8A]_RSUBCOMMANDQUEUE_INSERTAFTERHEADL_EXIT=0x7 -[TRACE]TRACE_FLOW[0x8A]_RSUBCOMMANDQUEUE_POP_ENTRY=0x3 -[TRACE]TRACE_FLOW[0x8A]_RSUBCOMMANDQUEUE_POP_EXIT=0x4 -[TRACE]TRACE_FLOW[0x8A]_RSUBCOMMANDQUEUE_POP_EXIT_DUP1=0x5 -[TRACE]TRACE_FLOW[0x8A]_RSUBCOMMANDQUEUE_PUSHL_ENTRY=0x1 -[TRACE]TRACE_FLOW[0x8A]_RSUBCOMMANDQUEUE_PUSHL_EXIT=0x2 -[TRACE]TRACE_FLOW[0x8A]_RSUBCOMMANDQUEUE_RELEASE_ENTRY=0xb -[TRACE]TRACE_FLOW[0x8A]_RSUBCOMMANDQUEUE_RELEASE_EXIT=0xc -[TRACE]TRACE_FLOW[0x8A]_TDEREGISTERINTERFACE_DOEXECUTEL_ENTRY=0xd6 -[TRACE]TRACE_FLOW[0x8A]_TDEREGISTERINTERFACE_DOEXECUTEL_EXIT=0xd7 -[TRACE]TRACE_FLOW[0x8A]_TDEREGISTERINTERFACE_HANDLEERROR_ENTRY=0xd8 -[TRACE]TRACE_FLOW[0x8A]_TDEREGISTERINTERFACE_HANDLEERROR_EXIT=0xd9 -[TRACE]TRACE_FLOW[0x8A]_TDEREGISTERINTERFACE_TDEREGISTERINTERFACE_CONS_ENTRY=0xd5 -[TRACE]TRACE_FLOW[0x8A]_TDISMOUNTLOGICALUNIT_DOEXECUTEL_ENTRY=0xdb -[TRACE]TRACE_FLOW[0x8A]_TDISMOUNTLOGICALUNIT_DOEXECUTEL_EXIT=0xdc -[TRACE]TRACE_FLOW[0x8A]_TDISMOUNTLOGICALUNIT_HANDLEERROR_ENTRY=0xdd -[TRACE]TRACE_FLOW[0x8A]_TDISMOUNTLOGICALUNIT_HANDLEERROR_EXIT=0xde -[TRACE]TRACE_FLOW[0x8A]_TDISMOUNTLOGICALUNIT_TDISMOUNTLOGICALUNIT_CONS_ENTRY=0xda -[TRACE]TRACE_FLOW[0x8A]_THOSTMSSUBCOMMANDPARAM_THOSTMSSUBCOMMANDPARAM_CONS_ENTRY=0xa7 -[TRACE]TRACE_FLOW[0x8A]_TMOUNTLOGICALUNIT_DOASYNCCMDCOMPLETEL_ENTRY=0xc9 -[TRACE]TRACE_FLOW[0x8A]_TMOUNTLOGICALUNIT_DOASYNCCMDCOMPLETEL_EXIT=0xca -[TRACE]TRACE_FLOW[0x8A]_TMOUNTLOGICALUNIT_DOEXECUTEL_ENTRY=0xc5 -[TRACE]TRACE_FLOW[0x8A]_TMOUNTLOGICALUNIT_DOEXECUTEL_EXIT=0xc6 -[TRACE]TRACE_FLOW[0x8A]_TMOUNTLOGICALUNIT_HANDLEERROR_ENTRY=0xc7 -[TRACE]TRACE_FLOW[0x8A]_TMOUNTLOGICALUNIT_HANDLEERROR_EXIT=0xc8 -[TRACE]TRACE_FLOW[0x8A]_TMOUNTLOGICALUNIT_TMOUNTLOGICALUNIT_CONS_ENTRY=0xc3 -[TRACE]TRACE_FLOW[0x8A]_TMOUNTLOGICALUNIT_TMOUNTLOGICALUNIT_CONS_EXIT=0xc4 -[TRACE]TRACE_FLOW[0x8A]_TMSMMNODEBASE_ADDCHILD_ENTRY=0x73 -[TRACE]TRACE_FLOW[0x8A]_TMSMMNODEBASE_ADDCHILD_EXIT=0x74 -[TRACE]TRACE_FLOW[0x8A]_TMSMMNODEBASE_DESTROYNODE_ENTRY=0x70 -[TRACE]TRACE_FLOW[0x8A]_TMSMMNODEBASE_DESTROYNODE_EXIT=0x71 -[TRACE]TRACE_FLOW[0x8A]_TMSMMNODEBASE_DESTROYNODE_EXIT_DUP1=0x72 -[TRACE]TRACE_FLOW[0x8A]_TMSMMNODEBASE_SEARCHINCHILDREN_ENTRY=0x75 -[TRACE]TRACE_FLOW[0x8A]_TMSMMNODEBASE_SEARCHINCHILDREN_EXIT=0x76 -[TRACE]TRACE_FLOW[0x8A]_TMSMMNODEBASE_TMSMMNODEBASE_CONS_ENTRY=0x6d -[TRACE]TRACE_FLOW[0x8A]_TMSMMNODEBASE_TMSMMNODEBASE_DES_ENTRY=0x6e -[TRACE]TRACE_FLOW[0x8A]_TMSMMNODEBASE_TMSMMNODEBASE_DES_EXIT=0x6f -[TRACE]TRACE_FLOW[0x8A]_TREGISTERINTERFACE_DOASYNCCMDCOMPLETEL_ENTRY=0xb6 -[TRACE]TRACE_FLOW[0x8A]_TREGISTERINTERFACE_DOASYNCCMDCOMPLETEL_EXIT=0xb7 -[TRACE]TRACE_FLOW[0x8A]_TREGISTERINTERFACE_DOCANCELASYNCCMD_ENTRY=0xb8 -[TRACE]TRACE_FLOW[0x8A]_TREGISTERINTERFACE_DOCANCELASYNCCMD_EXIT=0xb9 -[TRACE]TRACE_FLOW[0x8A]_TREGISTERINTERFACE_DOEXECUTEL_ENTRY=0xb2 -[TRACE]TRACE_FLOW[0x8A]_TREGISTERINTERFACE_DOEXECUTEL_EXIT=0xb3 -[TRACE]TRACE_FLOW[0x8A]_TREGISTERINTERFACE_HANDLEERROR_ENTRY=0xb4 -[TRACE]TRACE_FLOW[0x8A]_TREGISTERINTERFACE_HANDLEERROR_EXIT=0xb5 -[TRACE]TRACE_FLOW[0x8A]_TREGISTERINTERFACE_TREGISTERINTERFACE_CONS_ENTRY=0xb1 -[TRACE]TRACE_FLOW[0x8A]_TREMOVEUSBMSDEVICENODE_DOEXECUTEL_ENTRY=0xe0 -[TRACE]TRACE_FLOW[0x8A]_TREMOVEUSBMSDEVICENODE_DOEXECUTEL_EXIT=0xe1 -[TRACE]TRACE_FLOW[0x8A]_TREMOVEUSBMSDEVICENODE_HANDLEERROR_ENTRY=0xe2 -[TRACE]TRACE_FLOW[0x8A]_TREMOVEUSBMSDEVICENODE_HANDLEERROR_EXIT=0xe3 -[TRACE]TRACE_FLOW[0x8A]_TREMOVEUSBMSDEVICENODE_TREMOVEUSBMSDEVICENODE_CONS_ENTRY=0xdf -[TRACE]TRACE_FLOW[0x8A]_TRETRIEVEDRIVELETTER_DOASYNCCMDCOMPLETEL_ENTRY=0xbf -[TRACE]TRACE_FLOW[0x8A]_TRETRIEVEDRIVELETTER_DOASYNCCMDCOMPLETEL_EXIT=0xc0 -[TRACE]TRACE_FLOW[0x8A]_TRETRIEVEDRIVELETTER_DOCANCELASYNCCMD_ENTRY=0xc1 -[TRACE]TRACE_FLOW[0x8A]_TRETRIEVEDRIVELETTER_DOCANCELASYNCCMD_EXIT=0xc2 -[TRACE]TRACE_FLOW[0x8A]_TRETRIEVEDRIVELETTER_DOEXECUTEL_ENTRY=0xbb -[TRACE]TRACE_FLOW[0x8A]_TRETRIEVEDRIVELETTER_DOEXECUTEL_EXIT=0xbc -[TRACE]TRACE_FLOW[0x8A]_TRETRIEVEDRIVELETTER_HANDLEERROR_ENTRY=0xbd -[TRACE]TRACE_FLOW[0x8A]_TRETRIEVEDRIVELETTER_HANDLEERROR_EXIT=0xbe -[TRACE]TRACE_FLOW[0x8A]_TRETRIEVEDRIVELETTER_TRETRIEVEDRIVELETTER_CONS_ENTRY=0xba -[TRACE]TRACE_FLOW[0x8A]_TSAVELATESTMOUNTINFO_DOASYNCCMDCOMPLETEL_ENTRY=0xcf -[TRACE]TRACE_FLOW[0x8A]_TSAVELATESTMOUNTINFO_DOASYNCCMDCOMPLETEL_EXIT=0xd0 -[TRACE]TRACE_FLOW[0x8A]_TSAVELATESTMOUNTINFO_DOCANCELASYNCCMD_ENTRY=0xd3 -[TRACE]TRACE_FLOW[0x8A]_TSAVELATESTMOUNTINFO_DOCANCELASYNCCMD_EXIT=0xd4 -[TRACE]TRACE_FLOW[0x8A]_TSAVELATESTMOUNTINFO_DOEXECUTEL_ENTRY=0xcd -[TRACE]TRACE_FLOW[0x8A]_TSAVELATESTMOUNTINFO_DOEXECUTEL_EXIT=0xce -[TRACE]TRACE_FLOW[0x8A]_TSAVELATESTMOUNTINFO_HANDLEERROR_ENTRY=0xd1 -[TRACE]TRACE_FLOW[0x8A]_TSAVELATESTMOUNTINFO_HANDLEERROR_EXIT=0xd2 -[TRACE]TRACE_FLOW[0x8A]_TSAVELATESTMOUNTINFO_TSAVELATESTMOUNTINFO_CONS_ENTRY=0xcb -[TRACE]TRACE_FLOW[0x8A]_TSAVELATESTMOUNTINFO_TSAVELATESTMOUNTINFO_CONS_EXIT=0xcc -[TRACE]TRACE_FLOW[0x8A]_TSUBCOMMANDBASE_ASYNCCMDCOMPLETEL_ENTRY=0xa9 -[TRACE]TRACE_FLOW[0x8A]_TSUBCOMMANDBASE_ASYNCCMDCOMPLETEL_EXIT=0xaa -[TRACE]TRACE_FLOW[0x8A]_TSUBCOMMANDBASE_CANCELASYNCCMD_ENTRY=0xab -[TRACE]TRACE_FLOW[0x8A]_TSUBCOMMANDBASE_CANCELASYNCCMD_EXIT=0xac -[TRACE]TRACE_FLOW[0x8A]_TSUBCOMMANDBASE_DOASYNCCMDCOMPLETEL_ENTRY=0xad -[TRACE]TRACE_FLOW[0x8A]_TSUBCOMMANDBASE_DOASYNCCMDCOMPLETEL_EXIT=0xae -[TRACE]TRACE_FLOW[0x8A]_TSUBCOMMANDBASE_DOCANCELASYNCCMD_ENTRY=0xaf -[TRACE]TRACE_FLOW[0x8A]_TSUBCOMMANDBASE_DOCANCELASYNCCMD_EXIT=0xb0 -[TRACE]TRACE_FLOW[0x8A]_TSUBCOMMANDBASE_TSUBCOMMANDBASE_CONS_ENTRY=0xa8 -[TRACE]TRACE_FLOW[0x8A]_TUSBMSDEVICE_TUSBMSDEVICE_CONS_ENTRY=0x77 -[TRACE]TRACE_FLOW[0x8A]_TUSBMSINTERFACE_TUSBMSINTERFACE_CONS_ENTRY=0x78 -[TRACE]TRACE_FLOW[0x8A]_TUSBMSINTERFACE_TUSBMSINTERFACE_DES_ENTRY=0x79 -[TRACE]TRACE_FLOW[0x8A]_TUSBMSINTERFACE_TUSBMSINTERFACE_DES_EXIT=0x7a -[TRACE]TRACE_FLOW[0x8A]_TUSBMSLOGICALUNIT_TUSBMSLOGICALUNIT_CONS_ENTRY=0x7b -[TRACE]TRACE_NORMAL[0x86]_CMSMMDISMOUNTUSBDRIVES_DODISMOUNT=0x8 -[TRACE]TRACE_NORMAL[0x86]_TREGISTERINTERFACE_DOASYNCCMDCOMPLETEL=0x7 -[TRACE]TRACE_NORMAL[0x86]_TREGISTERINTERFACE_DOEXECUTEL=0x1 -[TRACE]TRACE_NORMAL[0x86]_TREGISTERINTERFACE_DOEXECUTEL_DUP1=0x2 -[TRACE]TRACE_NORMAL[0x86]_TREGISTERINTERFACE_DOEXECUTEL_DUP2=0x3 -[TRACE]TRACE_NORMAL[0x86]_TREGISTERINTERFACE_DOEXECUTEL_DUP3=0x4 -[TRACE]TRACE_NORMAL[0x86]_TREGISTERINTERFACE_DOEXECUTEL_DUP4=0x5 -[TRACE]TRACE_NORMAL[0x86]_TREGISTERINTERFACE_DOEXECUTEL_DUP5=0x6 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_CMSMMSESSION_ENTRY=0x95 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CMSMMSESSION_CMSMMSESSION_EXIT=0x96 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/inifile/src/inifile.cpp --- a/usbmgmt/usbmgr/inifile/src/inifile.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/inifile/src/inifile.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2002-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" @@ -21,11 +21,11 @@ */ #include +#include "inifile.h" #include -#include "inifile.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "inifileTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "IniFile"); #endif @@ -34,15 +34,14 @@ void CIniFile::Panic(TIniPanic aPanic) { - _LIT(KIniData,"CIniFile"); - OstTrace1( TRACE_NORMAL, CINIFILE_PANIC, "CIniFile::Panic;aPanic=%d", aPanic ); - User::Panic(KIniData,aPanic ); + _LIT(KIniData,"CIniFile"); + _USB_PANIC(KIniData,aPanic); } CIniFile::CIniFile() : iPtr(NULL,0) { - OstTraceFunctionEntry1( CINIFILE_CINIFILE_CONS_ENTRY, this ); + LOG_FUNC } CIniFile::~CIniFile() @@ -59,13 +58,12 @@ * @param aName The name of the ini file to be used, e.g. "GPRSBTT.INI". */ { - OstTraceFunctionEntry0( CINIFILE_NEWL_TDESC_ENTRY ); + LOG_STATIC_FUNC_ENTRY CIniFile* self = new(ELeave) CIniFile; CleanupStack::PushL(self); self->ConstructL(aName, KDefaultIniFileDir); CleanupStack::Pop(self); - OstTraceFunctionExit0( CINIFILE_NEWL_TDESC_EXIT ); return self; } @@ -78,13 +76,12 @@ * @param aPath The location of the file e.g. "\\system\\data\\". */ { - OstTraceFunctionEntry0( CINIFILE_NEWL_TDESC_TDESC_ENTRY ); + LOG_STATIC_FUNC_ENTRY CIniFile* self = new(ELeave) CIniFile; CleanupStack::PushL(self); self->ConstructL(aName, aPath); CleanupStack::Pop(self); - OstTraceFunctionExit0( CINIFILE_NEWL_TDESC_TDESC_EXIT ); return self; } @@ -98,53 +95,27 @@ iToken = HBufC::NewL(KTokenSize+2); // 2 extra chars for [] RFs fs; - TInt err; - err = fs.Connect(); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CINIFILE_CONSTRUCTL, "CIniFile::ConstructL;fs.Connect() with error=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(fs.Connect()); CleanupClosePushL(fs); TFindFile ff(fs); - err = ff.FindByDir(aName, aPath); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CINIFILE_CONSTRUCTL_DUP1, "CIniFile::ConstructL;ff.FindByDir(aName, aPath) with error=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(ff.FindByDir(aName, aPath)); iName = ff.File().AllocL(); RFile file; TInt size; - err = file.Open(fs,*iName,EFileStreamText|EFileRead|EFileShareReadersOnly); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CINIFILE_CONSTRUCTL_DUP2, "CIniFile::ConstructL;file.Open(fs,*iName,EFileStreamText|EFileRead|EFileShareReadersOnly) with error=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(file.Open(fs,*iName,EFileStreamText|EFileRead|EFileShareReadersOnly)); CleanupClosePushL(file); - err = file.Size(size); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CINIFILE_CONSTRUCTL_DUP3, "CIniFile::ConstructL;file.Size(size) with error=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(file.Size(size)); TText* data = REINTERPRET_CAST(TText*, User::AllocL(size)); iPtr.Set(data, size/sizeof(TText), size/sizeof(TText)); TPtr8 dest(REINTERPRET_CAST(TUint8*,data), 0, size); - err = file.Read(dest); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CINIFILE_CONSTRUCTL_DUP4, "CIniFile::ConstructL;file.Read(dest) with error=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(file.Read(dest)); TUint8* ptr = REINTERPRET_CAST(TUint8*,data); diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/logger/BWINS/usbloggerU.DEF --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/logger/BWINS/usbloggerU.DEF Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,17 @@ +EXPORTS + ??0TFunctionLogger@@QAE@ABVTDesC8@@0PAX@Z @ 1 NONAME ; TFunctionLogger::TFunctionLogger(class TDesC8 const &, class TDesC8 const &, void *) + ??1TFunctionLogger@@QAE@XZ @ 2 NONAME ; TFunctionLogger::~TFunctionLogger(void) + ?Close@CUsbLog@@SAXXZ @ 3 NONAME ; void CUsbLog::Close(void) + ?Connect@CUsbLog@@SAHXZ @ 4 NONAME ; int CUsbLog::Connect(void) + ?HexDump@CUsbLog@@SAXABVTDesC8@@PBG1PBEH@Z @ 5 NONAME ; void CUsbLog::HexDump(class TDesC8 const &, unsigned short const *, unsigned short const *, unsigned char const *, int) + ?VerboseLeaveIfErrorL@@YAXABVTDesC8@@PADHH@Z @ 6 NONAME ; void VerboseLeaveIfErrorL(class TDesC8 const &, char *, int, int) + ?VerbosePanic@@YAXABVTDesC8@@PADHHPAEABVTDesC16@@@Z @ 7 NONAME ; void VerbosePanic(class TDesC8 const &, char *, int, int, unsigned char *, class TDesC16 const &) + ?Write@CUsbLog@@SAXABVTDesC8@@0@Z @ 8 NONAME ; void CUsbLog::Write(class TDesC8 const &, class TDesC8 const &) + ?Write@CUsbLog@@SAXABVTDesC8@@ABVTDesC16@@@Z @ 9 NONAME ; void CUsbLog::Write(class TDesC8 const &, class TDesC16 const &) + ?WriteFormat@CUsbLog@@SAXABVTDesC8@@V?$TRefByValue@$$CBVTDesC16@@@@AAY00PAC@Z @ 10 NONAME ; void CUsbLog::WriteFormat(class TDesC8 const &, class TRefByValue, signed char * [1] &) + ?WriteFormat@CUsbLog@@SAXABVTDesC8@@V?$TRefByValue@$$CBVTDesC16@@@@ZZ @ 11 NONAME ; void CUsbLog::WriteFormat(class TDesC8 const &, class TRefByValue, ...) + ?WriteFormat@CUsbLog@@SAXABVTDesC8@@V?$TRefByValue@$$CBVTDesC8@@@@AAY00PAC@Z @ 12 NONAME ; void CUsbLog::WriteFormat(class TDesC8 const &, class TRefByValue, signed char * [1] &) + ?WriteFormat@CUsbLog@@SAXABVTDesC8@@V?$TRefByValue@$$CBVTDesC8@@@@ZZ @ 13 NONAME ; void CUsbLog::WriteFormat(class TDesC8 const &, class TRefByValue, ...) + ?VerboseLeaveL@@YAXABVTDesC8@@PADHH@Z @ 14 NONAME ; void VerboseLeaveL(class TDesC8 const &, char *, int, int) + ?VerboseMsgPanic@@YAXABVTDesC8@@PADHABVRMessage2@@ABVTDesC16@@H@Z @ 15 NONAME ; void VerboseMsgPanic(class TDesC8 const &, char *, int, class RMessage2 const &, class TDesC16 const &, int) + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/logger/EABI/usbloggerU.DEF --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/logger/EABI/usbloggerU.DEF Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,19 @@ +EXPORTS + _Z12VerbosePanicRK6TDesC8PciiPhRK7TDesC16 @ 1 NONAME + _Z20VerboseLeaveIfErrorLRK6TDesC8Pcii @ 2 NONAME + _ZN15TFunctionLoggerC1ERK6TDesC8S2_Pv @ 3 NONAME + _ZN15TFunctionLoggerC2ERK6TDesC8S2_Pv @ 4 NONAME + _ZN15TFunctionLoggerD1Ev @ 5 NONAME + _ZN15TFunctionLoggerD2Ev @ 6 NONAME + _ZN7CUsbLog11WriteFormatERK6TDesC811TRefByValueIK7TDesC16ERSt9__va_list @ 7 NONAME + _ZN7CUsbLog11WriteFormatERK6TDesC811TRefByValueIK7TDesC16Ez @ 8 NONAME + _ZN7CUsbLog11WriteFormatERK6TDesC811TRefByValueIS1_ERSt9__va_list @ 9 NONAME + _ZN7CUsbLog11WriteFormatERK6TDesC811TRefByValueIS1_Ez @ 10 NONAME + _ZN7CUsbLog5CloseEv @ 11 NONAME + _ZN7CUsbLog5WriteERK6TDesC8RK7TDesC16 @ 12 NONAME + _ZN7CUsbLog5WriteERK6TDesC8S2_ @ 13 NONAME + _ZN7CUsbLog7ConnectEv @ 14 NONAME + _ZN7CUsbLog7HexDumpERK6TDesC8PKtS4_PKhi @ 15 NONAME + _Z13VerboseLeaveLRK6TDesC8Pcii @ 16 NONAME + _Z15VerboseMsgPanicRK6TDesC8PciRK9RMessage2RK7TDesC16i @ 17 NONAME + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/logger/group/BLD.INF --- a/usbmgmt/usbmgr/logger/group/BLD.INF Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/logger/group/BLD.INF Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -21,5 +21,7 @@ PRJ_EXPORTS ../public/usblogger.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/usblogger.h) +usblogger.mmh /epoc32/include/usb/usblogger.mmh - +PRJ_MMPFILES +usblogger.MMP diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/logger/group/usblogger.MMP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/logger/group/usblogger.MMP Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,44 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Logging engine for USB. +* +*/ + +/** + @file +*/ + +target usblogger.dll + +CAPABILITY All -Tcb +TARGETTYPE dll + +uid 0x1000008d 0x10281A7D + +// MACRO __USB_DEBUG_RDEBUG__ +// Define this macro to get output through the serial port (COM0) + +SOURCEPATH ../src +SOURCE usblogger.cpp + +OS_LAYER_SYSTEMINCLUDE_SYMBIAN + +library euser.lib + +VENDORID 0x70000001 + +#include + +UNPAGED diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/logger/group/usblogger.mmh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/logger/group/usblogger.mmh Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,67 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* When checking this file into perforce, ensure that +* LOGGING IS DISABLED FOR RELEASE BUILDS. +* This file is not to be used outside Symbian. +* It is largely a copy of commsdebugutility.mmh. +* When the new logger comes in that provides the functionality we want +* (specifically, 'connected' logging using TLS), we can remove our own logger +* dll entirely, including this file. [We'll still possibly need a header with +* our nice function entry/exit, leave and panic macros though.] +* +*/ + +// Uncomment next line to temporarily engage logging for release builds. +//#define __FLOGGER_UREL +// Comment next line to temporarily disengage logging for debug builds +#define __FLOGGER_UDEB + +// Determine whether, and how, flogger is to be included +#ifdef __FLOGGER_UREL + #ifdef __FLOGGER_UDEB + #define __FLOGGER_INCLUDED + MACRO __FLOG_UREL + #endif +#endif +#ifdef __FLOGGER_UREL + #ifndef __FLOGGER_UDEB + #define __FLOGGER_INCLUDED + MACRO __FLOG_UREL + MACRO __FLOG_NO_UDEB + #endif +#endif +#ifndef __FLOGGER_UREL + #ifndef __FLOGGER_UDEB + MACRO __FLOG_NO_UDEB + #endif +#endif +#ifndef __FLOGGER_UREL + #ifdef __FLOGGER_UDEB + #define __FLOGGER_INCLUDED + #define __FLOGGER_DEBUGGERLIBRARY + #endif +#endif + + +#ifdef __FLOGGER_INCLUDED + #ifndef __FLOGGER_SUPPRESS_LIBRARY + #ifdef __FLOGGER_DEBUGGERLIBRARY + DEBUGLIBRARY usblogger.lib + #else + LIBRARY usblogger.lib + #endif + #endif +#endif + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/logger/public/usblogger.h --- a/usbmgmt/usbmgr/logger/public/usblogger.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/logger/public/usblogger.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -21,20 +21,163 @@ */ -#ifndef USBLOGGER_H -#define USBLOGGER_H +#ifndef LOGGER_H +#define LOGGER_H #include -#define LEAVEIFERRORL(err, trace) \ -{ \ -TInt munged_err=(err); \ -if (munged_err < 0) \ -{ \ -trace; \ -User::Leave(munged_err);\ -}\ -} +// Control function entry and exit logging using a compile-time switch. +#define __LOG_FUNCTIONS__ + +class TFunctionLogger; + +#ifndef __COMMSDEBUGUTILITY_H__ // comms-infras/commsdebugutility.h not included +#ifdef _DEBUG // If this is a debug build... +// Set flogging active. +#define __FLOG_ACTIVE +#endif +#endif + +#ifdef __FLOG_ACTIVE +#define IF_FLOGGING(a) a +#else +#define IF_FLOGGING(a) +#endif + +_LIT8(KDefaultLogFile, "USB"); + +#ifdef __FLOG_ACTIVE +#define LEAVEIFERRORL(a) VerboseLeaveIfErrorL(KLogComponent, __FILE__, __LINE__, a) +#define LEAVEL(a) VerboseLeaveL(KLogComponent, __FILE__, __LINE__, a) +#define _USB_PANIC(CAT, CODE) VerbosePanic(KLogComponent, __FILE__, __LINE__, CODE, (TText8*)#CODE, CAT) +#define PANIC_MSG(msg, cat, code) VerboseMsgPanic(KLogComponent, __FILE__, __LINE__, msg, cat, code); +#define FLOG(a) CUsbLog::Write(KDefaultLogFile, a); +#define FTRACE(a) {a;} +#define LOGTEXT(text) CUsbLog::Write(KLogComponent, text); +#define LOGTEXT2(text, a) CUsbLog::WriteFormat(KLogComponent, text, a); +#define LOGTEXT3(text, a, b) CUsbLog::WriteFormat(KLogComponent, text, a, b); +#define LOGTEXT4(text, a, b, c) CUsbLog::WriteFormat(KLogComponent, text, a, b, c); +#define LOGTEXT5(text, a, b, c, d) CUsbLog::WriteFormat(KLogComponent, text, a, b, c, d); +#define LOGTEXT6(text, a, b, c, d, e) CUsbLog::WriteFormat(KLogComponent, text, a, b, c, d, e); +#define LOGTEXT7(text, a, b, c, d, e, f) CUsbLog::WriteFormat(KLogComponent, text, a, b, c, d, e, f); +#define LOGHEXDESC(desc) CUsbLog::HexDump(KLogComponent, 0, 0, desc.Ptr() , desc.Length()); +#define LOGHEXRAW(data, len) CUsbLog::HexDump(KLogComponent, 0, 0, data, len); +#else +#define LEAVEIFERRORL(a) static_cast(User::LeaveIfError(a)) +#define LEAVEL(a) User::Leave(a) +#define _USB_PANIC(CAT, CODE) User::Panic(CAT, CODE) +#define PANIC_MSG(msg, cat, code) msg.Panic(cat, code); +#define FLOG(a) +#define FTRACE(a) +#define LOGTEXT(text) +#define LOGTEXT2(text, a) +#define LOGTEXT3(text, a, b) +#define LOGTEXT4(text, a, b, c) +#define LOGTEXT5(text, a, b, c, d) +#define LOGTEXT6(text, a, b, c, d, e) +#define LOGTEXT7(text, a, b, c, d, e, f) +#define LOGHEXDESC(desc) +#define LOGHEXRAW(data, len) +#endif // __FLOG_ACTIVE + +#define FORCED_LOG_FUNC TFunctionLogger __instrument(KLogComponent, TPtrC8((TUint8*)__PRETTY_FUNCTION__), (TAny*)this); +#define FORCED_LOG_STATIC_FUNC_ENTRY TFunctionLogger __instrument(KLogComponent, TPtrC8((TUint8*)__PRETTY_FUNCTION__), (TAny*)NULL); + +#if ( defined __FLOG_ACTIVE && defined __LOG_FUNCTIONS__ ) +#define LOG_LINE CUsbLog::Write(KLogComponent, KNullDesC8()); +#define LOG_FUNC FORCED_LOG_FUNC +#define LOG_STATIC_FUNC_ENTRY FORCED_LOG_STATIC_FUNC_ENTRY +#else +#define LOG_LINE +#define LOG_FUNC +#define LOG_STATIC_FUNC_ENTRY +#endif + + -#endif // USBLOGGER_H +NONSHARABLE_CLASS(CUsbLog) : public CBase + { +public: + IMPORT_C static TInt Connect(); + IMPORT_C static void Close(); + + IMPORT_C static void Write(const TDesC8& aCmpt, const TDesC8& aText); + IMPORT_C static void WriteFormat(const TDesC8& aCmpt, TRefByValue aFmt, ...); + IMPORT_C static void WriteFormat(const TDesC8& aCmpt, TRefByValue aFmt, VA_LIST& aList); + IMPORT_C static void Write(const TDesC8& aCmpt, const TDesC16& aText); + IMPORT_C static void WriteFormat(const TDesC8& aCmpt, TRefByValue aFmt, ...); + IMPORT_C static void WriteFormat(const TDesC8& aCmpt, TRefByValue aFmt, VA_LIST& aList); + IMPORT_C static void HexDump(const TDesC8& aCmpt, const TText* aHeader, const TText* aMargin, const TUint8* aPtr, TInt aLen); + }; + + +#ifndef NO_FPRINT +inline void FPrint(const TRefByValue IF_FLOGGING(aFmt), ...) + { +#ifdef __FLOG_ACTIVE + VA_LIST list; + VA_START(list,aFmt); + CUsbLog::WriteFormat(KDefaultLogFile, aFmt, list); +#endif + } +#endif + + +#ifndef NO_FHEX_PTR +inline void FHex(const TUint8* IF_FLOGGING(aPtr), TInt IF_FLOGGING(aLen)) + { +#ifdef __FLOG_ACTIVE + CUsbLog::HexDump(KDefaultLogFile, 0, 0, aPtr, aLen); +#endif + } +#endif + +#ifndef NO_FHEX_DESC +inline void FHex(const TDesC8& IF_FLOGGING(aDes)) + { +#ifdef __FLOG_ACTIVE + FHex(aDes.Ptr(), aDes.Length()); +#endif + } +#endif + + +IMPORT_C void VerboseLeaveIfErrorL(const TDesC8& aCpt, + char* aFile, + TInt aLine, + TInt aReason); + +IMPORT_C void VerboseLeaveL(const TDesC8& aCpt, + char* aFile, + TInt aLine, + TInt aReason); + +IMPORT_C void VerbosePanic(const TDesC8& aCpt, + char* aFile, + TInt aLine, + TInt aPanicCode, + TText8* aPanicName, + const TDesC& aPanicCategory); + +IMPORT_C void VerboseMsgPanic(const TDesC8& aCpt, + char* aFile, + TInt aLine, + const RMessage2& aMsg, + const TDesC& aCat, + TInt aPanicCode); + + +NONSHARABLE_CLASS(TFunctionLogger) + { +public: + IMPORT_C TFunctionLogger(const TDesC8& aCpt, const TDesC8& aString, TAny* aThis); + IMPORT_C ~TFunctionLogger(); + +private: + TPtrC8 iCpt; + TPtrC8 iString; + }; + +#endif // LOGGER_H + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/logger/src/usblogger.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/logger/src/usblogger.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,600 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +/** + @file + @internalTechnology +*/ + + +#include +#include +#include + + +#ifdef __USB_DEBUG_RDEBUG__ +#include +const TInt KUSBLogBufferSize=255; +class TUSBFlogOverflow8 : public TDes8Overflow + { +public: + void Overflow(TDes8& /*aDes*/) { } + }; + +class TUSBFlogOverflow16 : public TDes16Overflow + { +public: + void Overflow(TDes16& /*aDes*/) { } + }; +void __CUsbLog_DoHexDump(const TDesC8& aCmpt, const TDesC8& aData, const TDesC8& aHeader, const TDesC8& aMargin); +#endif //__USB_DEBUG_RDEBUG__ + + + + +#ifdef __FLOG_ACTIVE +_LIT8(KSubsystem, "USB"); +_LIT8(KLogCmpt, "logengine"); +#endif + + +NONSHARABLE_CLASS(TLogData) + { + public: +#ifdef __FLOG_ACTIVE + TLogData(); + + void SetLogTags(const TDesC8& aCmpt); + + TInt iAccessCount; + + RFileLogger iLogEngine; + TBuf8 iCurrentComponent; +#endif + }; + + +#ifdef __FLOG_ACTIVE +TLogData::TLogData() + : iAccessCount(0), iCurrentComponent(KNullDesC8) + {} + +void TLogData::SetLogTags(const TDesC8& aCmpt) + { + if (aCmpt != iCurrentComponent) + { + iLogEngine.SetLogTags(KSubsystem, aCmpt.Left(KMaxTagLength)); + iCurrentComponent = aCmpt.Left(KMaxTagLength); + } + } +#endif + +#define GETLOG TLogData* __logger = static_cast(Dll::Tls()); + + + +EXPORT_C /*static*/ TInt CUsbLog::Connect() + { +#ifdef __FLOG_ACTIVE + GETLOG; + + if (!__logger) + { + + CUsbLog::Write(KLogCmpt, _L8("Opening new logger connection")); + __logger = new TLogData(); + if (!__logger) + { + CUsbLog::Write(KLogCmpt, _L8("Opening logger connection failed, no memory")); + return KErrNoMemory; + } + + __logger->iLogEngine.Connect(); + Dll::SetTls(__logger); + } + + __logger->iAccessCount++; + CUsbLog::WriteFormat(KLogCmpt, _L8("Opening -- %d instances now open"), __logger->iAccessCount); + + return KErrNone; +#else + return KErrNotSupported; +#endif + } + + +EXPORT_C /*static*/ void CUsbLog::Close() + { +#ifdef __FLOG_ACTIVE + GETLOG; + + if (__logger) + { + TInt& count = __logger->iAccessCount; + + if (count) + { + count--; + CUsbLog::WriteFormat(KLogCmpt, _L8("Closing -- %d instance(s) left open"), count); + if (!count) + { + __logger->iLogEngine.Close(); + delete __logger; + Dll::SetTls(NULL); + CUsbLog::Write(KLogCmpt, _L8("Fully closed and deleted, now flogging statically.")); + } + } + else + { + CUsbLog::Write(KLogCmpt, _L8("Not closing -- not opened")); + } + } +#endif + } + + +EXPORT_C /*static*/ void CUsbLog::Write(const TDesC8& IF_FLOGGING(aCmpt), const TDesC8& IF_FLOGGING(aText)) + { +#ifdef __FLOG_ACTIVE + GETLOG; + +#ifdef __USB_DEBUG_RDEBUG__ + TBuf8 buf; + RThread thread; + buf.AppendFormat(_L8("%S\t%S\t%LX\t%S\r\n"), &KSubsystem(), &aCmpt, thread.Id().Id(), &aText); + RDebug::RawPrint(buf); +#endif // __USB_DEBUG_RDEBUG + + if (__logger) + { + __logger->SetLogTags(aCmpt); + __logger->iLogEngine.Write(aText); + } + else + { + RFileLogger::Write(KSubsystem, aCmpt, aText); + } +#endif + } + + +EXPORT_C /*static*/ void CUsbLog::WriteFormat(const TDesC8& IF_FLOGGING(aCmpt), TRefByValue IF_FLOGGING(aFmt), ...) + { +#ifdef __FLOG_ACTIVE + VA_LIST list; + VA_START(list, aFmt); + + GETLOG; + +#ifdef __USB_DEBUG_RDEBUG__ + TUSBFlogOverflow8 objFlogBody8; + TBuf8 buf; + RThread thread; + buf.AppendFormat(_L8("%S\t%S\t%LX\t"), &KSubsystem(), &aCmpt, thread.Id().Id()); + buf.AppendFormatList(aFmt, list, &objFlogBody8); + buf.Append(_L8("\r\n")); + RDebug::RawPrint(buf); +#endif // __USB_DEBUG_RDEBUG + + if (__logger) + { + __logger->SetLogTags(aCmpt); + __logger->iLogEngine.WriteFormat(aFmt, list); + } + else + { + RFileLogger::WriteFormat(KSubsystem, aCmpt, aFmt, list); + } +#endif + } + + +EXPORT_C /*static*/ void CUsbLog::WriteFormat(const TDesC8& IF_FLOGGING(aCmpt), TRefByValue IF_FLOGGING(aFmt), VA_LIST& IF_FLOGGING(aList)) + { +#ifdef __FLOG_ACTIVE + GETLOG; + +#ifdef __USB_DEBUG_RDEBUG__ + TUSBFlogOverflow8 objFlogBody8; + TBuf8 buf; + RThread thread; + buf.AppendFormat(_L8("%S\t%S\t%LX\t"), &KSubsystem(), &aCmpt, thread.Id().Id()); + buf.AppendFormatList(aFmt, aList, &objFlogBody8); + buf.Append(_L8("\r\n")); + RDebug::RawPrint(buf); +#endif // __USB_DEBUG_RDEBUG + + if (__logger) + { + __logger->SetLogTags(aCmpt); + __logger->iLogEngine.WriteFormat(aFmt, aList); + } + else + { + RFileLogger::WriteFormat(KSubsystem, aCmpt, aFmt, aList); + } +#endif + } + + +EXPORT_C /*static*/ void CUsbLog::Write(const TDesC8& IF_FLOGGING(aCmpt), const TDesC16& IF_FLOGGING(aText)) + { +#ifdef __FLOG_ACTIVE + GETLOG; + +#ifdef __USB_DEBUG_RDEBUG__ + TBuf16 buf; + buf.AppendFormat(_L16("(TDesC16): %S\r\n"), &aText); + RDebug::RawPrint(buf); +#endif // __USB_DEBUG_RDEBUG + + if (__logger) + { + __logger->SetLogTags(aCmpt); + __logger->iLogEngine.Write(aText); + } + else + { + RFileLogger::WriteFormat(KSubsystem, aCmpt, aText); + } +#endif + } + + +EXPORT_C /*static*/ void CUsbLog::WriteFormat(const TDesC8& IF_FLOGGING(aCmpt), TRefByValue IF_FLOGGING(aFmt), ...) + { +#ifdef __FLOG_ACTIVE + VA_LIST list; + VA_START(list, aFmt); + + GETLOG; + +#ifdef __USB_DEBUG_RDEBUG__ + TUSBFlogOverflow16 objFlogBody16; + TBuf16 wideBuf; + wideBuf.Append(_L16("(TDesC16): ")); + wideBuf.AppendFormatList(aFmt, list, &objFlogBody16); + wideBuf.Append(_L16("\r\n")); + RDebug::RawPrint(wideBuf); +#endif // __USB_DEBUG_RDEBUG + + if (__logger) + { + __logger->SetLogTags(aCmpt); + __logger->iLogEngine.WriteFormat(aFmt, list); + } + else + { + RFileLogger::WriteFormat(KSubsystem, aCmpt, aFmt, list); + } +#endif + } + + +EXPORT_C /*static*/ void CUsbLog::WriteFormat(const TDesC8& IF_FLOGGING(aCmpt), TRefByValue IF_FLOGGING(aFmt), VA_LIST& IF_FLOGGING(aList)) + { +#ifdef __FLOG_ACTIVE + GETLOG; + +#ifdef __USB_DEBUG_RDEBUG__ + TUSBFlogOverflow16 objFlogBody16; + TBuf16 wideBuf; + wideBuf.Append(_L16("(TDesC16): ")); + wideBuf.AppendFormatList(aFmt, aList, &objFlogBody16); + wideBuf.Append(_L16("\r\n")); + RDebug::RawPrint(wideBuf); +#endif // __USB_DEBUG_RDEBUG + + if (__logger) + { + __logger->SetLogTags(aCmpt); + __logger->iLogEngine.WriteFormat(aFmt, aList); + } + else + { + RFileLogger::WriteFormat(KSubsystem, aCmpt, aFmt, aList); + } +#endif + } + + +EXPORT_C /*static*/ void CUsbLog::HexDump(const TDesC8& IF_FLOGGING(aCmpt), const TText* IF_FLOGGING(aHeader), const TText* IF_FLOGGING(aMargin), const TUint8* IF_FLOGGING(aPtr), TInt IF_FLOGGING(aLen)) + { +#ifdef __FLOG_ACTIVE + GETLOG; + +#ifdef __USB_DEBUG_RDEBUG__ + __CUsbLog_DoHexDump(aCmpt, TPtrC8(aPtr, aLen), TPtrC8(NULL,0), TPtrC8(NULL,0)); +#endif // __USB_DEBUG_RDEBUG + + if (__logger) + { + __logger->SetLogTags(aCmpt); + __logger->iLogEngine.HexDump(aHeader, aMargin, aPtr, aLen); + } + else + { + RFileLogger::HexDump(KSubsystem, aCmpt, TPtrC8(aPtr, aLen), KNullDesC8); + } +#endif + } + + +#ifdef __USB_DEBUG_RDEBUG__ + +#define BLANK _S("") +const TInt KHexDumpWidth=16; ///< Number of bytes written per line when formatting as hex. +const TInt KLowestPrintableCharacter = 32; ///< In Hex output, replace chars below space with a dot. +const TInt KHighestPrintableCharacter = 126; ///< In Hex output, replace chars above 7-bits with a dot. + +_LIT8(KFirstFormatString8,"%04x : "); ///< Format string used in Hexdump to format first part: header and byte numbers. +_LIT8(KSecondFormatString8,"%02x "); ///< Format string used in Hexdump to format mid part: each of the 16 bytes as hex +_LIT8(KThirdFormatString8,"%c"); ///< Format string used in Hexdump to format the last part: each of the 16 bytes as characters +_LIT8(KThreeSpaces8," "); ///< Format string used in Hexdump to define padding between first and mid parts +_LIT8(KTwoSpaces8," "); ///< Format string used in Hexdump to define padding between hex and char bytes. +const TText8 KFullStopChar8='.'; + +void __CUsbLog_DoHexDump(const TDesC8& aCmpt, const TDesC8& aData, const TDesC8& aHeader, const TDesC8& aMargin) + { +#ifdef __FLOG_ACTIVE + HBufC8* marginStr = NULL; + TBuf8 buf; + TInt aRemainingLen = aData.Length(); + TInt aHeaderLen = aHeader.Length(); + TUSBFlogOverflow8 objFlogBody8; + + if (aData.Length()==0) // nothing to do + { + return; + } + + + if (aHeaderLen > 0) + { + + if (aMargin.Length() == 0) + { + marginStr = HBufC8::New(aHeader.Length()); + if (marginStr == NULL) + { + return; // abort if No memory + } + TPtr8 marginStrPtr(marginStr->Des()); + marginStrPtr.AppendFill(' ',aHeader.Length()); + } + else + { + marginStr = aMargin.Alloc(); + } + } + + + + TUint blockStartPos = 0; + while (aRemainingLen>0) + { + RThread thread; + buf.AppendFormat(_L8("%S\t%S\t%LX\t"), &KSubsystem(), &aCmpt, thread.Id().Id()); + TInt blockLength = (aRemainingLen>KHexDumpWidth ? KHexDumpWidth : aRemainingLen); + + // write the header/margin and print in hex which bytes we are about to write + if (blockStartPos == 0) + { + if (aHeaderLen > 0) + { + buf.Append(aHeader); + } + buf.AppendFormat(KFirstFormatString8,&objFlogBody8, blockStartPos); + } + else + { + if (marginStr) + { + buf.Append(*marginStr); + } + buf.AppendFormat(KFirstFormatString8,&objFlogBody8,blockStartPos); + } + + TInt bytePos; + // write the bytes as hex + for (bytePos = 0; bytePos < blockLength; bytePos++) + { + buf.AppendFormat(KSecondFormatString8,aData[blockStartPos + bytePos]); + } + while (bytePos++ < KHexDumpWidth) + { + buf.Append(KThreeSpaces8); + } + buf.Append(KTwoSpaces8); + // print the bytes as characters, or full stops if outside printable range + for (bytePos = 0; bytePos < blockLength; bytePos++) + { + buf.AppendFormat(KThirdFormatString8,(aData[blockStartPos + bytePos] < KLowestPrintableCharacter || aData[blockStartPos + bytePos] > KHighestPrintableCharacter) ? KFullStopChar8 : aData[blockStartPos + bytePos]); + } + + buf.Append(_L8("\r\n")); + RDebug::RawPrint(buf); + + buf.SetLength(0); + aRemainingLen -= blockLength; + blockStartPos += blockLength; + } + delete marginStr; +#endif // __FLOG_ACTIVE + } + + + +#endif // __USB_DEBUG_RDEBUG + + +/** +Leave (if error) verbosely- log name of file and line number just before +leaving. +@param aFile The file we're leaving from. +@param aLine The line number we're leaving from. +@param aReason The leave code. +*/ +EXPORT_C void VerboseLeaveIfErrorL(const TDesC8& IF_FLOGGING(aCpt), + char* IF_FLOGGING(aFile), + TInt IF_FLOGGING(aLine), + TInt aReason) + { + // only leave negative value + if ( aReason >= 0 ) + { + return; + } + +#ifdef __FLOG_ACTIVE + _LIT8(KLeavePrefix, "LEAVE: "); + + TPtrC8 fullFileName((const TUint8*)aFile); + TPtrC8 fileName(fullFileName.Ptr()+fullFileName.LocateReverse('\\')+1); + + TBuf8<256> buf; + buf.Append(KLeavePrefix); + buf.AppendFormat(_L8("aReason = %d [file %S, line %d]"), aReason, &fileName, + aLine); + CUsbLog::Write(aCpt, buf); +#endif + + // finally + User::Leave(aReason); + } + +/** +Leave verbosely- log name of file and line number just before +leaving. +@param aFile The file we're leaving from. +@param aLine The line number we're leaving from. +@param aReason The leave code. +*/ +EXPORT_C void VerboseLeaveL(const TDesC8& IF_FLOGGING(aCpt), + char* IF_FLOGGING(aFile), + TInt IF_FLOGGING(aLine), + TInt aReason) + { +#ifdef __FLOG_ACTIVE + _LIT8(KLeavePrefix, "LEAVE: "); + + TPtrC8 fullFileName((const TUint8*)aFile); + TPtrC8 fileName(fullFileName.Ptr()+fullFileName.LocateReverse('\\')+1); + + TBuf8<256> buf; + buf.Append(KLeavePrefix); + buf.AppendFormat(_L8("aReason = %d [file %S, line %d]"), aReason, &fileName, + aLine); + CUsbLog::Write(aCpt, buf); +#endif + + // finally + User::Leave(aReason); + } + +/** +Panic verbosely- log name of file and line number just before panicking. +@param aFile The file that's panicking. +@param aLine The line number that's panicking. +@param aReason The panic code. +@param aPanicName The text of the panic code. +@param aPanicCategory The panic category. +*/ +EXPORT_C void VerbosePanic(const TDesC8& IF_FLOGGING(aCpt), + char* IF_FLOGGING(aFile), + TInt IF_FLOGGING(aLine), + TInt aPanicCode, + TText8* IF_FLOGGING(aPanicName), + const TDesC& aPanicCategory) + { +#ifdef __FLOG_ACTIVE + _LIT8(KPanicPrefix, "PANIC: code "); + + TPtrC8 fullFileName((const TUint8*)aFile); + TPtrC8 fileName(fullFileName.Ptr()+fullFileName.LocateReverse('\\')+1); + + TBuf8<256> buf; + buf.Append(KPanicPrefix); + buf.AppendFormat(_L8("%d = %s [file %S, line %d]"), + aPanicCode, + aPanicName, + &fileName, + aLine); + CUsbLog::Write(aCpt, buf); +#endif + + // finally + User::Panic(aPanicCategory, aPanicCode); + } + + +/** +Panic the given message verbosely- log name of file and line number just +before panicking. +@param aMsg Message to panic. +@param aFile The file that's panicking. +@param aLine The line number that's panicking. +@param aReason The panic code. +@param aPanicName The text of the panic code. +@param aPanicCategory The panic category. +*/ +EXPORT_C void VerboseMsgPanic(const TDesC8& IF_FLOGGING(aCpt), + char* IF_FLOGGING(aFile), + TInt IF_FLOGGING(aLine), + const RMessage2& aMsg, + const TDesC& aCat, + TInt aPanicCode) + { +#ifdef __FLOG_ACTIVE + _LIT8(KPanicPrefix, "PANICKING CLIENT: code "); + + TPtrC8 fullFileName((const TUint8*)aFile); + TPtrC8 fileName(fullFileName.Ptr()+fullFileName.LocateReverse('\\')+1); + + TBuf8<256> buf; + buf.Append(KPanicPrefix); + buf.AppendFormat(_L8("%d [file %S, line %d]"), + aPanicCode, + &fileName, + aLine); + CUsbLog::Write(aCpt, buf); +#endif + // finally + aMsg.Panic(aCat, aPanicCode); + } + +#ifdef __FLOG_ACTIVE +_LIT8(KInstrumentIn, ">>%S this = [0x%08x]"); +_LIT8(KInstrumentOut, "<<%S"); +#endif + +EXPORT_C TFunctionLogger::TFunctionLogger(const TDesC8& IF_FLOGGING(aCpt), const TDesC8& IF_FLOGGING(aString), TAny* IF_FLOGGING(aThis)) + { +#ifdef __FLOG_ACTIVE + iCpt.Set(aCpt); + iString.Set(aString); + CUsbLog::WriteFormat(iCpt, KInstrumentIn, &iString, aThis); +#endif + } + +EXPORT_C TFunctionLogger::~TFunctionLogger() + { +#ifdef __FLOG_ACTIVE + CUsbLog::WriteFormat(iCpt, KInstrumentOut, &iString); +#endif + } + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/group/bld.inf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/group/bld.inf Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,37 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +PRJ_TESTEXPORTS + +// TEF ini file. +..\testdata\UsbRomConfig.ini \epoc32\winscw\c\testdata\usbromconfig\UsbRomConfig.ini + +// TEF scripts files. +..\scripts\USB_ROMCONFIG_001.script \epoc32\winscw\c\scripts\usbromconfig\USB_ROMCONFIG_001.script +..\scripts\USB_ROMCONFIG_002.script \epoc32\winscw\c\scripts\usbromconfig\USB_ROMCONFIG_002.script +..\scripts\USB_ROMCONFIG_003.script \epoc32\winscw\c\scripts\usbromconfig\USB_ROMCONFIG_003.script +..\scripts\USB_ROMCONFIG_004.script \epoc32\winscw\c\scripts\usbromconfig\USB_ROMCONFIG_004.script +..\scripts\USB_INC_ROMCONFIG_001.script \epoc32\winscw\c\scripts\usbromconfig\USB_INC_ROMCONFIG_001.script +..\scripts\USB_INC_ROMCONFIG_002.script \epoc32\winscw\c\scripts\usbromconfig\USB_INC_ROMCONFIG_002.script +..\scripts\USB_INC_ROMCONFIG_003.script \epoc32\winscw\c\scripts\usbromconfig\USB_INC_ROMCONFIG_003.script +..\scripts\USB_INC_ROMCONFIG_004.script \epoc32\winscw\c\scripts\usbromconfig\USB_INC_ROMCONFIG_004.script + +// Rom iby files. + +PRJ_TESTMMPFILES +testserversymbianexcludeusb.mmp + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/group/testserversymbianexcludeusb.mmp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/group/testserversymbianexcludeusb.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,43 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* ObexTITest.mmp +* +*/ + +TARGET testserversymbianexcludeusb.exe +TARGETTYPE exe +UID 0x1000008d 0x0F1F777D + +VENDORID 0x70000001 +CAPABILITY All -TCB + +SOURCEPATH ../src +SOURCE testserversymbianexcludeusb.cpp +SOURCE cteststepusbromconfigbase.cpp +SOURCE cteststepusbromconfig001.cpp +SOURCE cteststepusbromconfig002.cpp +SOURCE cteststepusbromconfig003.cpp +SOURCE cteststepusbromconfig004.cpp + +USERINCLUDE ../inc + +OS_LAYER_SYSTEMINCLUDE_SYMBIAN + +LIBRARY euser.lib +LIBRARY c32.lib +LIBRARY testexecuteutils.lib +LIBRARY testexecutelogclient.lib +LIBRARY esock.lib +LIBRARY usbman.lib diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/inc/cteststepusbromconfig001.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/inc/cteststepusbromconfig001.h Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,37 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef CTESTSTEPUSBROMCONFIG001_H +#define CTESTSTEPUSBROMCONFIG001_H + +#include "cteststepusbromconfigbase.h" + +class CTestStepUsbRomConfig001 : public CTestStepUsbRomConfigBase + { +public: + static CTestStepUsbRomConfig001* New(CTestServer& aParent); + ~CTestStepUsbRomConfig001(); + TVerdict doTestStepL(); + +private: + CTestStepUsbRomConfig001(CTestServer& aParent); + }; + +_LIT(KTestName001, "USB_ROMCONFIG_001"); +#endif // CTESTSTEPUSBROMCONFIG001_H + +// EOF diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/inc/cteststepusbromconfig002.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/inc/cteststepusbromconfig002.h Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,37 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef CTESTSTEPUSBROMCONFIG002_H +#define CTESTSTEPUSBROMCONFIG002_H + +#include "cteststepusbromconfigbase.h" + +class CTestStepUsbRomConfig002 : public CTestStepUsbRomConfigBase + { +public: + static CTestStepUsbRomConfig002* New(CTestServer& aParent); + ~CTestStepUsbRomConfig002(); + TVerdict doTestStepL(); + +private: + CTestStepUsbRomConfig002(CTestServer& aParent); + }; + +_LIT(KTestName002, "USB_ROMCONFIG_002"); +#endif // CTESTSTEPUSBROMCONFIG002_H + +// EOF diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/inc/cteststepusbromconfig003.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/inc/cteststepusbromconfig003.h Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,37 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef CTESTSTEPUSBROMCONFIG003_H +#define CTESTSTEPUSBROMCONFIG003_H + +#include "cteststepusbromconfigbase.h" + +class CTestStepUsbRomConfig003 : public CTestStepUsbRomConfigBase + { +public: + static CTestStepUsbRomConfig003* New(CTestServer& aParent); + ~CTestStepUsbRomConfig003(); + TVerdict doTestStepL(); + +private: + CTestStepUsbRomConfig003(CTestServer& aParent); + }; + +_LIT(KTestName003, "USB_ROMCONFIG_003"); +#endif // CTESTSTEPUSBROMCONFIG003_H + +// EOF diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/inc/cteststepusbromconfig004.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/inc/cteststepusbromconfig004.h Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,37 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef CTESTSTEPUSBROMCONFIG004_H +#define CTESTSTEPUSBROMCONFIG004_H + +#include "cteststepusbromconfigbase.h" + +class CTestStepUsbRomConfig004 : public CTestStepUsbRomConfigBase + { +public: + static CTestStepUsbRomConfig004* New(CTestServer& aParent); + ~CTestStepUsbRomConfig004(); + TVerdict doTestStepL(); + +private: + CTestStepUsbRomConfig004(CTestServer& aParent); + }; + +_LIT(KTestName004, "USB_ROMCONFIG_004"); +#endif // CTESTSTEPUSBROMCONFIG004_H + +// EOF diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/inc/cteststepusbromconfigbase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/inc/cteststepusbromconfigbase.h Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,48 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef CTESTSTEPUSBROMCONFIGBASE_H +#define CTESTSTEPUSBROMCONFIGBASE_H + +#include +#include + +// constants used for logging +_LIT(KErrNotFoundLit, "KErrNotFound"); +_LIT(KErrNoneLit, "KErrNone"); +_LIT(KErrBadNameLit, "KErrBadName"); +_LIT(KErrNotSupportedLit, "KErrNotSupported"); + +class CTestStepUsbRomConfigBase : public CTestStep + { +public: + ~CTestStepUsbRomConfigBase(); + TVerdict doTestStepL()=0; + TVerdict doTestStepPreambleL(); + +protected: + CTestStepUsbRomConfigBase(CTestServer& aParent); + void CheckAndSetTestResult(); + // ideally this should be const, but we need to get the value out of an ini file + // and there's no easy way to do this inside the initialization list + TBool iUsbExcluded; + const CTestServer& iParent; + }; + +#endif // CTESTSTEPUSBROMCONFIGBASE_H + +// EOF diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/inc/testserversymbianexcludeusb.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/inc/testserversymbianexcludeusb.h Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,35 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef TESTSERVERSYMBIANEXCLUDEUSB_H +#define TESTSERVERSYMBIANEXCLUDEUSB_H + +#include + +/** +Test Server for the USB tests for PREQ 581: Enable features to be ommitted from a ROM + +Nothing more than a wrapper to load the TestExecute steps +*/ +class CTestServerSymbianExcludeUsb : public CTestServer + { +public: + static CTestServerSymbianExcludeUsb* NewL(); + virtual CTestStep* CreateTestStep(const TDesC& aStepName); + }; +#endif // TESTSERVERSYMBIANEXCLUDEUSB_H +// End of File diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_CIT_P581_UsbExcluded.script --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_CIT_P581_UsbExcluded.script Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,28 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +// Run all the USB_ROMCONFIG_* tests +// Expects a ROM to be built without USB i.e. SYMBIAN_EXCLUDE_USB has been specified + +RUN_SCRIPT c:\scripts\usbromconfig\USB_ROMCONFIG_001.script + +RUN_SCRIPT c:\scripts\usbromconfig\USB_ROMCONFIG_002.script + +RUN_SCRIPT c:\scripts\usbromconfig\USB_ROMCONFIG_003.script + +RUN_SCRIPT c:\scripts\usbromconfig\USB_ROMCONFIG_004.script + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_CIT_P581_UsbIncluded.script --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_CIT_P581_UsbIncluded.script Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,27 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +// Run all the USB_INC_ROMCONFIG_* tests +// Expects a standard ROM to be built i.e. SYMBIAN_EXCLUDE_USB has NOT been specified + +RUN_SCRIPT c:\scripts\usbromconfig\USB_INC_ROMCONFIG_001.script + +RUN_SCRIPT c:\scripts\usbromconfig\USB_INC_ROMCONFIG_002.script + +RUN_SCRIPT c:\scripts\usbromconfig\USB_INC_ROMCONFIG_003.script + +RUN_SCRIPT c:\scripts\usbromconfig\USB_INC_ROMCONFIG_004.script diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_INC_ROMCONFIG_001.script --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_INC_ROMCONFIG_001.script Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,30 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +LOAD_SERVER TestServerSymbianExcludeUsb + +START_TESTCASE USB-INC-ROMCONFIG-001 +//! @SYMTestCaseID USB-INC-ROMCONFIG-001 +//! @SYMTestCaseDesc RUsb::Connect should succeed on a standard Techview ROM +//! @SYMREQ 5414 +//! @SYMTestType CIT +//! @SYMTestPriority 3 +//! @SYMTestStatus Implemented +//! @SYMTestActions Call RUsb::Connect +//! @SYMTestExpectedResults Returns KErrNone +RUN_TEST_STEP 10 TestServerSymbianExcludeUsb USB_ROMCONFIG_001 c:\testdata\usbromconfig\UsbRomConfig.ini UsbIncluded +END_TESTCASE USB-INC-ROMCONFIG-001 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_INC_ROMCONFIG_002.script --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_INC_ROMCONFIG_002.script Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,30 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +LOAD_SERVER TestServerSymbianExcludeUsb + +START_TESTCASE USB-INC-ROMCONFIG-002 +//! @SYMTestCaseID USB-INC-ROMCONFIG-002 +//! @SYMTestCaseDesc User::LoadLogicalDevice("EUSBC") should succeed on a standard Techview ROM +//! @SYMREQ 5414 +//! @SYMTestType CIT +//! @SYMTestPriority 3 +//! @SYMTestStatus Implemented +//! @SYMTestActions Call User::LoadLogicalDevice("EUSBC") +//! @SYMTestExpectedResults Returns KErrNone (or KErrAlreadyExists) +RUN_TEST_STEP 10 TestServerSymbianExcludeUsb USB_ROMCONFIG_002 c:\testdata\usbromconfig\UsbRomConfig.ini UsbIncluded +END_TESTCASE USB-INC-ROMCONFIG-002 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_INC_ROMCONFIG_003.script --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_INC_ROMCONFIG_003.script Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,30 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +LOAD_SERVER TestServerSymbianExcludeUsb + +START_TESTCASE USB-INC-ROMCONFIG-003 +//! @SYMTestCaseID USB-INC-ROMCONFIG-003 +//! @SYMTestCaseDesc RCommServ::LoadCommModule should succeed for ACM csy on a standard Techview ROM +//! @SYMREQ 5414 +//! @SYMTestType CIT +//! @SYMTestPriority 3 +//! @SYMTestStatus Implemented +//! @SYMTestActions Call RCommServ::LoadCommModule("ECACM") +//! @SYMTestExpectedResults Returns KErrNone +RUN_TEST_STEP 10 TestServerSymbianExcludeUsb USB_ROMCONFIG_003 c:\testdata\usbromconfig\UsbRomConfig.ini UsbIncluded +END_TESTCASE USB-INC-ROMCONFIG-003 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_INC_ROMCONFIG_004.script --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_INC_ROMCONFIG_004.script Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,30 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +LOAD_SERVER TestServerSymbianExcludeUsb + +START_TESTCASE USB-INC-ROMCONFIG-004 +//! @SYMTestCaseID USB-INC-ROMCONFIG-004 +//! @SYMTestCaseDesc RDevUsbcClient::Open should succeed on a standard Techview ROM +//! @SYMREQ 5414 +//! @SYMTestType CIT +//! @SYMTestPriority 3 +//! @SYMTestStatus Implemented +//! @SYMTestActions Call RDevUsbcClient::Open(0) +//! @SYMTestExpectedResults Returns KErrNone +RUN_TEST_STEP 10 TestServerSymbianExcludeUsb USB_ROMCONFIG_004 c:\testdata\usbromconfig\UsbRomConfig.ini UsbIncluded +END_TESTCASE USB-INC-ROMCONFIG-004 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_ROMCONFIG_001.script --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_ROMCONFIG_001.script Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,30 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +LOAD_SERVER TestServerSymbianExcludeUsb + +START_TESTCASE USB-ROMCONFIG-001 +//! @SYMTestCaseID USB-ROMCONFIG-001 +//! @SYMTestCaseDesc RUsb::Connect should fail on a SYMBIAN_EXCLUDE_USB ROM +//! @SYMREQ 5414 +//! @SYMTestType CIT +//! @SYMTestPriority 1 +//! @SYMTestStatus Implemented +//! @SYMTestActions Call RUsb::Connect +//! @SYMTestExpectedResults Returns KErrNotFound, as USB support has been removed from ROM +RUN_TEST_STEP 10 TestServerSymbianExcludeUsb USB_ROMCONFIG_001 c:\testdata\usbromconfig\UsbRomConfig.ini UsbExcluded +END_TESTCASE USB-ROMCONFIG-001 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_ROMCONFIG_002.script --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_ROMCONFIG_002.script Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,30 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +LOAD_SERVER TestServerSymbianExcludeUsb + +START_TESTCASE USB-ROMCONFIG-002 +//! @SYMTestCaseID USB-ROMCONFIG-002 +//! @SYMTestCaseDesc User::LoadLogicalDevice("EUSBC") should fail on a SYMBIAN_EXCLUDE_USB ROM +//! @SYMREQ 5414 +//! @SYMTestType CIT +//! @SYMTestPriority 1 +//! @SYMTestStatus Implemented +//! @SYMTestActions Call User::LoadLogicalDevice("EUSBC") +//! @SYMTestExpectedResults Returns KErrNotFound, as usb.ldd has been removed from ROM +RUN_TEST_STEP 10 TestServerSymbianExcludeUsb USB_ROMCONFIG_002 c:\testdata\usbromconfig\UsbRomConfig.ini UsbExcluded +END_TESTCASE USB-ROMCONFIG-002 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_ROMCONFIG_003.script --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_ROMCONFIG_003.script Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,30 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +LOAD_SERVER TestServerSymbianExcludeUsb + +START_TESTCASE USB-ROMCONFIG-003 +//! @SYMTestCaseID USB-ROMCONFIG-003 +//! @SYMTestCaseDesc RCommServ::LoadCommModule should fail for ACM csy on a SYMBIAN_EXCLUDE_USB ROM +//! @SYMREQ 5414 +//! @SYMTestType CIT +//! @SYMTestPriority 1 +//! @SYMTestStatus Implemented +//! @SYMTestActions Call RCommServ::LoadCommModule("ECACM") +//! @SYMTestExpectedResults Returns KErrNotFound, as ecacm.csy has been removed from ROM +RUN_TEST_STEP 10 TestServerSymbianExcludeUsb USB_ROMCONFIG_003 c:\testdata\usbromconfig\UsbRomConfig.ini UsbExcluded +END_TESTCASE USB-ROMCONFIG-003 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_ROMCONFIG_004.script --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/scripts/USB_ROMCONFIG_004.script Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,30 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +LOAD_SERVER TestServerSymbianExcludeUsb + +START_TESTCASE USB-ROMCONFIG-004 +//! @SYMTestCaseID USB-ROMCONFIG-004 +//! @SYMTestCaseDesc RDevUsbcClient::Open should fail on a SYMBIAN_EXCLUDE_USB ROM +//! @SYMREQ 5414 +//! @SYMTestType CIT +//! @SYMTestPriority 1 +//! @SYMTestStatus Implemented +//! @SYMTestActions Call RDevUsbcClient::Open(0) +//! @SYMTestExpectedResults Returns KErrNotFound, as USB not on ROM +RUN_TEST_STEP 10 TestServerSymbianExcludeUsb USB_ROMCONFIG_004 c:\testdata\usbromconfig\UsbRomConfig.ini UsbExcluded +END_TESTCASE USB-ROMCONFIG-004 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/src/cteststepusbromconfig001.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/src/cteststepusbromconfig001.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,70 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include "cteststepusbromconfig001.h" +#include + +CTestStepUsbRomConfig001::~CTestStepUsbRomConfig001() + { + } + +CTestStepUsbRomConfig001::CTestStepUsbRomConfig001(CTestServer& aParent) + : CTestStepUsbRomConfigBase(aParent) + { + SetTestStepName(KTestName001); + } + +/** +Static Constructor +Note the lack of ELeave. This means that having insufficient memory will return NULL; +*/ +CTestStepUsbRomConfig001* CTestStepUsbRomConfig001::New(CTestServer& aParent) + { + return new CTestStepUsbRomConfig001(aParent); + } + +/** +See USB_ROMCONFIG_001.script +*/ +TVerdict CTestStepUsbRomConfig001::doTestStepL() + { + INFO_PRINTF1(\ + _L(">>CTestStepUsbRomConfig001::doTestStepL()")); + + const TInt expectedError = ( iUsbExcluded ? KErrNotFound : KErrNone ); + const TDesC* expectedErrorDesPtr = ( iUsbExcluded ? &KErrNotFoundLit : &KErrNoneLit ); + RUsb usb; + TInt err = usb.Connect(); + if ( err!=expectedError ) + { + INFO_PRINTF4(\ + _L("Failed: Expected %S(%d) and got %d when calling RUsb::Connect()"),\ + expectedErrorDesPtr, expectedError, err); + SetTestStepResult(EFail); + } + if ( usb.Handle() ) + { + usb.Close(); + } + + INFO_PRINTF1(\ + _L("<<CTestStepUsbRomConfig001::doTestStepL()")); + CheckAndSetTestResult(); + return TestStepResult(); + } + +// EOF diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/src/cteststepusbromconfig002.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/src/cteststepusbromconfig002.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,74 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include "cteststepusbromconfig002.h" + +#ifndef __WINS__ +_LIT(KUsbLddName, "EUSBC"); +#else +_LIT(KUsbLddName, "TESTUSBC"); +#endif + +CTestStepUsbRomConfig002::~CTestStepUsbRomConfig002() + { + } + +CTestStepUsbRomConfig002::CTestStepUsbRomConfig002 + (CTestServer& aParent) + : CTestStepUsbRomConfigBase(aParent) + { + SetTestStepName(KTestName002); + } + +/** +Static Constructor +Note the lack of ELeave. This means that having insufficient memory will return NULL; +*/ +CTestStepUsbRomConfig002* CTestStepUsbRomConfig002::New + (CTestServer& aParent) + { + return new CTestStepUsbRomConfig002(aParent); + } + +/** +See USB_ROMCONFIG_002.script +*/ +TVerdict CTestStepUsbRomConfig002::doTestStepL() + { + INFO_PRINTF1(\ + _L(">>CTestStepUsbRomConfig002::doTestStepL()")); + + const TInt expectedError = ( iUsbExcluded ? KErrNotFound : KErrNone ); + const TDesC* expectedErrorDesPtr = ( iUsbExcluded ? &KErrNotFoundLit : &KErrNoneLit ); + + TInt err = User::LoadLogicalDevice(KUsbLddName); + if ( (expectedError==KErrNone && err!=KErrNone && err!=KErrAlreadyExists) || + (expectedError!=KErrNone && err!=expectedError) ) + { + INFO_PRINTF5(\ + _L("Failed: Expected %S(%d) and got %d when calling LoadLogicalDevice(%S)"),\ + expectedErrorDesPtr, expectedError, err, &KUsbLddName); + SetTestStepResult(EFail); + } + + INFO_PRINTF1(\ + _L("<<CTestStepUsbRomConfig002::doTestStepL()")); + CheckAndSetTestResult(); + return TestStepResult(); + } + +// EOF diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/src/cteststepusbromconfig003.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/src/cteststepusbromconfig003.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,72 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include "cteststepusbromconfig003.h" +#include +#include + +CTestStepUsbRomConfig003::~CTestStepUsbRomConfig003() + { + } + +CTestStepUsbRomConfig003::CTestStepUsbRomConfig003 + (CTestServer& aParent) + : CTestStepUsbRomConfigBase(aParent) + { + SetTestStepName(KTestName003); + } + +/** +Static Constructor +Note the lack of ELeave. This means that having insufficient memory will return NULL; +*/ +CTestStepUsbRomConfig003* CTestStepUsbRomConfig003::New + (CTestServer& aParent) + { + return new CTestStepUsbRomConfig003(aParent); + } + +/** +See USB_ROMCONFIG_003.script +*/ +TVerdict CTestStepUsbRomConfig003::doTestStepL() + { + INFO_PRINTF1(\ + _L(">>CTestStepUsbRomConfig003::doTestStepL()")); + + const TInt expectedError = ( iUsbExcluded ? KErrNotFound : KErrNone ); + const TDesC* expectedErrorDesPtr = ( iUsbExcluded ? &KErrNotFoundLit : &KErrNoneLit ); + + RCommServ commServ; + commServ.Connect(); + TInt err = commServ.LoadCommModule(KAcmCsyName); + if ( err!=expectedError ) + { + INFO_PRINTF5(\ + _L("Failed: Expected %S(%d) and got %d when calling LoadCommModule(%S)"),\ + expectedErrorDesPtr, expectedError, err, &KAcmCsyName); + SetTestStepResult(EFail); + } + commServ.Close(); + + INFO_PRINTF1(\ + _L("<<CTestStepUsbRomConfig003::doTestStepL()")); + CheckAndSetTestResult(); + return TestStepResult(); + } + +// EOF diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/src/cteststepusbromconfig004.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/src/cteststepusbromconfig004.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,73 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include "cteststepusbromconfig004.h" +#include + +CTestStepUsbRomConfig004::~CTestStepUsbRomConfig004() + { + } + +CTestStepUsbRomConfig004::CTestStepUsbRomConfig004 + (CTestServer& aParent) + : CTestStepUsbRomConfigBase(aParent) + { + SetTestStepName(KTestName004); + } + +/** +Static Constructor +Note the lack of ELeave. This means that having insufficient memory will return NULL; +*/ +CTestStepUsbRomConfig004* CTestStepUsbRomConfig004::New + (CTestServer& aParent) + { + return new CTestStepUsbRomConfig004(aParent); + } + +/** +See USB_ROMCONFIG_004.script +*/ +TVerdict CTestStepUsbRomConfig004::doTestStepL() + { + INFO_PRINTF1(\ + _L(">>CTestStepUsbRomConfig004::doTestStepL()")); + + const TInt expectedError = ( iUsbExcluded ? KErrNotFound : KErrNone ); + const TDesC* expectedErrorDesPtr = ( iUsbExcluded ? &KErrNotFoundLit : &KErrNoneLit ); + + RDevUsbcClient usbClient; + TInt err = usbClient.Open(0); + if ( err!=expectedError ) + { + INFO_PRINTF4(\ + _L("Failed: Expected %S(%d) and got %d when calling RDevUsbcClient::Open(0)"),\ + expectedErrorDesPtr, expectedError, err); + SetTestStepResult(EFail); + } + if ( usbClient.Handle() ) + { + usbClient.Close(); + } + + INFO_PRINTF1(\ + _L("<<CTestStepUsbRomConfig004::doTestStepL()")); + CheckAndSetTestResult(); + return TestStepResult(); + } + +// EOF diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/src/cteststepusbromconfigbase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/src/cteststepusbromconfigbase.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,66 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include "cteststepusbromconfigbase.h" + +_LIT(KUsbExcludedKeyName, "UsbExcluded"); + +CTestStepUsbRomConfigBase::~CTestStepUsbRomConfigBase() + { + } + +/** +Constructor sets the default test result to inconclusive +Up to the test to either explicitly fail the test or to +explicitly pass +*/ +CTestStepUsbRomConfigBase::CTestStepUsbRomConfigBase(CTestServer& aParent) + : iParent(aParent) + { + SetTestStepResult(EInconclusive); + } + +/** +The ROMConfig tests run in two configurations: +ROM with component included +ROM with component excluded +By specifying the appropriate ini section, the test behaviour can be altered +*/ +TVerdict CTestStepUsbRomConfigBase::doTestStepPreambleL() + { + if ( GetBoolFromConfig(ConfigSection(),KUsbExcludedKeyName, iUsbExcluded) ) + { + return EPass; + } + return EFail; + } + +/** +Should be called at the end of every test +Checks if the default (EInconclusive) result is still set +i.e. test has NOT set the result to EFail +If still EInconclusive, then sets the result to EPass. +*/ +void CTestStepUsbRomConfigBase::CheckAndSetTestResult() + { + if ( TestStepResult()==EInconclusive ) + { + SetTestStepResult(EPass); + } + } + +// EOF diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/src/testserversymbianexcludeusb.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/src/testserversymbianexcludeusb.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,148 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include "testserversymbianexcludeusb.h" +#include +#include + +// Put all of the test step header files here... +#include "cteststepusbromconfig001.h" +#include "cteststepusbromconfig002.h" +#include "cteststepusbromconfig003.h" +#include "cteststepusbromconfig004.h" + +_LIT(KServerName,"TestServerSymbianExcludeUsb"); + +TInt LoadDrivers() + { +#ifdef __WINS__ + #define KPDDName _L("ECDRV") + #define KLDDName _L("ECOMM") +#else + #define KPDDName _L("EUART1") + #define KLDDName _L("ECOMM") +#endif + TInt rerr = KErrNone; + + rerr = StartC32(); + if ( rerr!=KErrNone && rerr!=KErrAlreadyExists ) + { + return rerr; + } + + rerr = User::LoadPhysicalDevice(KPDDName); + if (rerr != KErrNone && rerr != KErrAlreadyExists) + { + return rerr; + } + + rerr = User::LoadLogicalDevice(KLDDName); + if (rerr != KErrNone && rerr != KErrAlreadyExists) + { + return rerr; + } + return KErrNone; + } + + +/** +Called inside the MainL() function to create and start the test +@return Instance of the test server +*/ +CTestServerSymbianExcludeUsb* CTestServerSymbianExcludeUsb::NewL() + + { + CTestServerSymbianExcludeUsb* server = new (ELeave) CTestServerSymbianExcludeUsb; + CleanupStack::PushL(server); + server->ConstructL(KServerName); + CleanupStack::Pop(server); + return server; + } + +LOCAL_C void MainL() + { + CActiveScheduler* sched = new (ELeave) CActiveScheduler; + CleanupStack::PushL(sched); + CActiveScheduler::Install(sched); + + // this registers the server with the active scheduler and calls SetActive + CTestServerSymbianExcludeUsb* server = CTestServerSymbianExcludeUsb::NewL(); + + // signal to the client that we are ready by + // rendevousing process + RProcess::Rendezvous(KErrNone); + + // run the active scheduler + sched->Start(); + + // clean up + delete server; + CleanupStack::PopAndDestroy(sched); + } + +/** +@return Standard Epoc error code on exit +*/ +GLDEF_C TInt E32Main() + { + TInt rerr = LoadDrivers(); + if (rerr!=KErrNone) + { + return rerr; + } + + __UHEAP_MARK; + CTrapCleanup* cleanup = CTrapCleanup::New(); + + if (cleanup == NULL) + { + return KErrNoMemory; + } + + TRAPD(err,MainL()); + + delete cleanup; + __UHEAP_MARKEND; + return err; + } + +/** +Implementation of CTestServer pure virtual +@return A CTestStep derived instance +*/ +CTestStep* CTestServerSymbianExcludeUsb::CreateTestStep(const TDesC& aStepName) + { + if ( aStepName==KTestName001 ) + { + return CTestStepUsbRomConfig001::New(*this); + } + if ( aStepName==KTestName002 ) + { + return CTestStepUsbRomConfig002::New(*this); + } + if ( aStepName==KTestName003 ) + { + return CTestStepUsbRomConfig003::New(*this); + } + if ( aStepName==KTestName004 ) + { + return CTestStepUsbRomConfig004::New(*this); + } + return NULL; + } + +// EOF diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/testdata/UsbRomConfig.ini --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/testdata/UsbRomConfig.ini Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,21 @@ +; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +; All rights reserved. +; This component and the accompanying materials are made available +; under the terms of "Eclipse Public License v1.0" +; which accompanies this distribution, and is available +; at the URL "http://www.eclipse.org/legal/epl-v10.html". +; +; Initial Contributors: +; Nokia Corporation - initial contribution. +; +; Contributors: +; +; Description: +; +; +[UsbIncluded] +UsbExcluded = False + +[UsbExcluded] +UsbExcluded = True + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite.xml Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,17 @@ + + + + + + UsbRomConfigSuite + + + UsbExcSuite + UsbIncSuite + + + + TestServerSymbianExcludeUsb + + + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/TestExecuteServers/TestServerSymbianExcludeUsb.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/TestExecuteServers/TestServerSymbianExcludeUsb.xml Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,12 @@ + + + + + + TestServerSymbianExcludeUsb + + testserversymbianexcludeusb.mmp + + group\bld.inf + + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbExcSuite.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbExcSuite.xml Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,15 @@ + + + + + + UsbExcSuite + + + UsbRomConfig001 + UsbRomConfig002 + UsbRomConfig003 + UsbRomConfig004 + + + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbExcSuite/UsbRomConfig001.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbExcSuite/UsbRomConfig001.xml Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,28 @@ + + + + + + UsbRomConfig001 + + 30 + + + + + + + TestServerSymbianExcludeUsb + + + + + testdata\UsbRomConfig.ini + c:\testdata\usbromconfig\UsbRomConfig.ini + + + + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbExcSuite/UsbRomConfig002.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbExcSuite/UsbRomConfig002.xml Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,28 @@ + + + + + + UsbRomConfig002 + + 30 + + + + + + + TestServerSymbianExcludeUsb + + + + + testdata\UsbRomConfig.ini + c:\testdata\usbromconfig\UsbRomConfig.ini + + + + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbExcSuite/UsbRomConfig003.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbExcSuite/UsbRomConfig003.xml Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,28 @@ + + + + + + UsbRomConfig003 + + 30 + + + + + + + TestServerSymbianExcludeUsb + + + + + testdata\UsbRomConfig.ini + c:\testdata\usbromconfig\UsbRomConfig.ini + + + + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbExcSuite/UsbRomConfig004.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbExcSuite/UsbRomConfig004.xml Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,28 @@ + + + + + + UsbRomConfig004 + + 30 + + + + + + + TestServerSymbianExcludeUsb + + + + + testdata\UsbRomConfig.ini + c:\testdata\usbromconfig\UsbRomConfig.ini + + + + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbIncSuite.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbIncSuite.xml Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,15 @@ + + + + + + UsbIncSuite + + + UsbIncRomConfig001 + UsbIncRomConfig002 + UsbIncRomConfig003 + UsbIncRomConfig004 + + + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbIncSuite/UsbIncRomConfig001.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbIncSuite/UsbIncRomConfig001.xml Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,28 @@ + + + + + + UsbIncRomConfig001 + + 30 + + + + + + + TestServerSymbianExcludeUsb + + + + + testdata\UsbRomConfig.ini + c:\testdata\usbromconfig\UsbRomConfig.ini + + + + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbIncSuite/UsbIncRomConfig002.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbIncSuite/UsbIncRomConfig002.xml Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,28 @@ + + + + + + UsbIncRomConfig002 + + 30 + + + + + + + TestServerSymbianExcludeUsb + + + + + testdata\UsbRomConfig.ini + c:\testdata\usbromconfig\UsbRomConfig.ini + + + + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbIncSuite/UsbIncRomConfig003.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbIncSuite/UsbIncRomConfig003.xml Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,28 @@ + + + + + + UsbIncRomConfig003 + + 30 + + + + + + + TestServerSymbianExcludeUsb + + + + + testdata\UsbRomConfig.ini + c:\testdata\usbromconfig\UsbRomConfig.ini + + + + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbIncSuite/UsbIncRomConfig004.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/test/cit/ROMConfig/xml/UsbRomConfigSuite/UsbIncSuite/UsbIncRomConfig004.xml Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,28 @@ + + + + + + UsbIncRomConfig004 + + 30 + + + + + + + TestServerSymbianExcludeUsb + + + + + testdata\UsbRomConfig.ini + c:\testdata\usbromconfig\UsbRomConfig.ini + + + + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/chargingplugin/group/UsbBatteryChargingPluginBase.mmp --- a/usbmgmt/usbmgr/usbman/chargingplugin/group/UsbBatteryChargingPluginBase.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/chargingplugin/group/UsbBatteryChargingPluginBase.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -44,12 +44,15 @@ OS_LAYER_SYSTEMINCLUDE_SYMBIAN // use this line for default implementation -USERINCLUDE ../inc/default -USERINCLUDE ../traces +USERINCLUDE ../inc/default LIBRARY euser.lib LIBRARY usbmanextensionplugin.lib LIBRARY centralrepository.lib +#include + + +//library flogger.lib NOEXPORTLIBRARY diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/chargingplugin/group/bld.inf --- a/usbmgmt/usbmgr/usbman/chargingplugin/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/chargingplugin/group/bld.inf Wed Sep 01 12:35:00 2010 +0100 @@ -20,7 +20,6 @@ 10208DD7.txt /epoc32/data/z/private/10202be9/10208dd7.txt 10208DD7.txt /epoc32/release/winscw/udeb/z/private/10202be9/10208dd7.txt 10208DD7.txt /epoc32/release/winscw/urel/z/private/10202be9/10208dd7.txt -../public/usbchargingpublishedinfo.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(/) // ConfML Files ../conf/usbmanager_10208dd7.crml OS_LAYER_EXPORTS_CRML(usbmanager_10208dd7.crml) diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/chargingplugin/public/usbchargingpublishedinfo.h --- a/usbmgmt/usbmgr/usbman/chargingplugin/public/usbchargingpublishedinfo.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,195 +0,0 @@ -/* -* 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 charging information header - @version 0.2.0 - - This header specifies the published information of USB charging plug-in. - @publishedPartner -*/ - -#ifndef USBCHARGINGPUBLISHEDINFO_H -#define USBCHARGINGPUBLISHEDINFO_H - -#include - - -/** this is only applicable when charging port is a Standard Downstream Port -*/ -enum TUsbConnectionStatus - { - /** this is the initial value. */ - EUsbConnectionStatusNone, - - /** This status means that this USB device is in suspend state. */ - EUsbConnectionStatusSuspend, - - /** This status means that this USB device is in configured state. */ - EUsbConnectionStatusConfigured - }; - -enum TUsbChargingPortType - { - /** - * This device is no longer connected to a powered port. - * iMinAvailableVbusCurrent, iMaxVbusCurrent and iMinVbusVoltage are 0. - * iUsbConnStatus is EUsbConnectionStatusNone. - */ - EUsbChargingPortTypeNone = 0, - - /** - * This device is connected to a port that can't be recognized. - * iMinAvailableVbusCurrent, iMaxVbusCurrent and iMinVbusVoltage are 0. - * iUsbConnStatus is EUsbConnectionStatusNone. - */ - EUsbChargingPortTypeUnsupported, - - /** - * This device is connected to a charging port. - * This is not an exact port type and the port may be a dedicated charging port or a charging downstream port. - * For there is more constraint on charging downstream port output, current and voltage are computed according - * to charging downstream port. - * See below for detail. - */ - EUsbChargingPortTypeChargingPort, - - /** - * This device is connected to a dedicated charging port. - * iMinAvailableVbusCurrent is 500mA (refer to min IDCHG in table 5-2 of BC1.1). - * iMaxVbusCurrent is 1800mA (refer to IDEV_DCHG in table 5-2 of BC1.1). - * iMinVbusVoltage is 2000mV ( refer to VCHG_SHT_DWN in table 5-1 of BC1.1). - * iUsbConnStatus is EUsbConnectionStatusNone. - */ - EUsbChargingPortTypeDedicatedChargingPort, - - /** - * This device is connected to a charging downstream port. - * - If this device works at low speed or full speed mode. - * - iMinAvailableVbusCurrent is 500mA (refer to min IDCHG in table 5-2 of BC1.1). - * - iMaxVbusCurrent is 1500mA (refer to IDEV_HCHG_LFS in table 5-2 of BC1.1). - * - iMinVbusVoltage is 2000mV (refer to VCHG_SHT_DWN in table 5-1 of BC1.1). - * - iUsbConnStatus is EUsbConnectionStatusNone. - * - * - If this device works at high speed. - * - if USB hardware supports current limit when chirping. - * - iMinAvailableVbusCurrent is 500mA (refer to min IDCHG in table 5-2 of BC1.1). - * - iMaxVbusCurrent is 900mA (refer to IDEV_HCHG_HS in table 5-2 of BC1.1). - * - iMinVbusVoltage is 2000mV (refer to VCHG_SHT_DWN in table 5-1 of BC1.1). - * - iUsbConnStatus is EUsbConnectionStatusNone - * - if USB hardware does not support current limit when chirping - * - iMinAvailableVbusCurrent is 500mA (refer to min IDCHG in table 5-2 of BC1.1). - * - iMaxVbusCurrent is 560mA (refer to IDEV_HCHG_CHRP in table 5-2 of BC1.1). - * - iMinVbusVoltage is 2000mV (refer to VCHG_SHT_DWN in table 5-1 of BC1.1). - * - iUsbConnStatus is EUsbConnectionStatusNone. - */ - EUsbChargingPortTypeChargingDownstreamPort, - - /** This device is connected to a standard downstream port. - * This device negoiates the charging current with standard host by configuration descriptor. There are three numbers of - * milliamps that can be negoiated, 500mA, 100mA and 8mA. - * - if any of the three numbers is acceptted by host. - * - if this device is in configured state. - * - iMinAvailableVbusCurrent and iMaxVbusCurrent are 500mA or 100mA or 8mA. - * - iUsbConnStatus is EUsbConnectionStatusConfigured. - * - if this device is in suspend state. - * - iMinAvailableVbusCurrent and iMaxVbusCurrent are 2mA (refer to ISUSP in table 5-2 of BC1.1). - * - iUsbConnStatus is EUsbConnectionStatusSuspend. - * - iMinVbusVoltage is 4500mV in both cases. 4.5 V comes from the port supply requirement 4.75 V with the worst case - * voltage drops for 500 mA current taken into account. That is: 4.75 V - VGNDD - VBUSD = 4.75 V - 0.125 V - 0.125 V = 4.5 V. - * See Section 7.2.2 Voltage Drop Budget in USB 2.0 spec. - * - * - if none of the three numbers is acceptted by host. - * - iMinAvailableVbusCurrent, iMaxVbusCurrent and iMinVbusVoltage are 0 and iUsbConnStatus is EUsbConnectionStatusNone. - */ - EUsbChargingPortTypeStandardDownstreamPort, - - /** This device is connected to an ACA and ID pin status is RidA. - * When ID pin status is RidA, this device works as A-device and is connected to an ACA. The ACA is connected with a charger - * or a charging downstream port on ACA's charging port and may be connected to a B-device on ACA's accessory port. - * The B-device can draw current from the charger. - * iMinAvailableVbusCurrent is not more than 500mA. This value comes from 500mA (min IDCHG refer to in table 5-2 of BC1.1) minus the current that B-device - * can draw. This value is maxpower field of B-device configuration descriptor. If there is no connected B-device, minus 0 from 500mA. - * iMaxVbusCurrent is 1500mA (refer to max IDCHG in table 5-2 of BC1.1). For ACA can't distinguish a charger and a charging downstream - * port so we select more contraint output. - * iMinVbusVoltage is 2000mV (refer to VCHG_SHT_DWN in table 5-1 of BC1.1). - * iUsbConnStatus is EUsbConnectionStatusNone. - */ - EUsbChargingPortTypeAcaRidA, - - /** This device is connected to an ACA and ID pin status is RidB - * When ID pin status is RidB, this device works as a B-device and is connected to an ACA. The ACA is connected with a charger or a - * charging downstream port on ACA's charging port. ACA may also be connected to A-device on accessory port but A-device VBUS - * powers off. A-device shall not draw current from the accessory port. - * iMinAvailableVbusCurrent is 500mA (refer to min IDCHG in table 5-2 of BC1.1). - * iMaxVbusCurrent is 1500mA (refer to max IDCHG in table 5-2 of BC1.1). - * iMinVbusVoltage is 2000mV (refer to VCHG_SHT_DWN in table 5-1 of BC1.1). - * iUsbConnStatus is EUsbConnectionStatusNone. - */ - EUsbChargingPortTypeAcaRidB, - - /** This device is connected to an ACA and ID pin status is RidC - * When ID pin status is RidC, this device work as a B-device and is connected to an ACA. The ACA is connected with a charger or - * a charging downstream port on ACA's charging port and a A-device on accessory port. The A-device VBus powers on. A-device - * shall not draw current from accessory port. - * iMinAvailableVbusCurrent is 500mA (refer to min IDCHG in table 5-2 of BC1.1). - * iMaxVbusCurrent is 1500mA (refer to max IDCHG in table 5-2 of BC1.1). - * iMinVbusVoltage is 2000mV (refer to VCHG_SHT_DWN in table 5-1 of BC1.1). - * iUsbConnStatus is EUsbConnectionStatusNone. - */ - EUsbChargingPortTypeAcaRidC - }; - -/** -* the P&S key category of published charing information. -*/ -const TUid KPropertyUidUsbBatteryChargingCategory = {0x101fe1db}; - -/** -* the P&S key ID of published charing information. -*/ -const TUint KPropertyUidUsbBatteryChargingInfo = 1; - -/** -* the structure of published charing information, data in P&S is a TPckgBuf wrappering this structure -*/ -NONSHARABLE_STRUCT(TPublishedUsbChargingInfo) - { - /** the port type this device connects to. */ - TUsbChargingPortType iChargingPortType; - - /** this field is only appliable when this device connects to a standard downstream port. */ - TUsbConnectionStatus iUsbConnStatus; - - /** - * This is the number of milliamps in unit 1 mA that can safely be drawn from VBUS - * without needing to observe the VBUS level. - */ - TUint16 iMinAvailableVbusCurrent; - - /** - * This is the number of milliamps that can be drawn from VBus in unit 1 mA. VBUS Level may drop down and must be monitored - * to prevent VBUS Level drop below iMaxVbusCurrent. - */ - TUint16 iMaxVbusCurrent; - - /** VBUS Level must be above this number when charging and this number is in unit 1 mV. */ - TUint16 iMinVbusVoltage; - }; - - -#endif // USBCHARGINGPUBLISHEDINFO_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/chargingplugin/src/CUsbBatteryChargingPlugin.cpp --- a/usbmgmt/usbmgr/usbman/chargingplugin/src/CUsbBatteryChargingPlugin.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/chargingplugin/src/CUsbBatteryChargingPlugin.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -18,19 +18,16 @@ /** @file @internalComponent */ + #include "CUsbBatteryChargingPlugin.h" -#include -#include +#include "chargingstates.h" +#include +#include "cusbbatterycharginglicenseehooks.h" +#include "reenumerator.h" #include #include #include #include -#include - - -#include "chargingstates.h" -#include "cusbbatterycharginglicenseehooks.h" -#include "reenumerator.h" #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV // For host OTG enabled charging plug-in #include "idpinwatcher.h" @@ -38,15 +35,15 @@ #endif #include "vbuswatcher.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbBatteryChargingPluginTraces.h" -#endif - +#include +#include static const TInt KUsbBatteryChargingConfigurationDescriptorCurrentOffset = 8; // see bMaxPower in section 9.6.3 of USB Spec 2.0 static const TInt KUsbBatteryChargingCurrentRequestTimeout = 3000000; // 3 seconds +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "USBCHARGE"); +#endif /** Factory function. @@ -66,7 +63,8 @@ */ CUsbBatteryChargingPlugin::~CUsbBatteryChargingPlugin() { - OstTraceFunctionEntry1( REF_CUSBBATTERYCHARGINGPLUGIN_CUSBBATTERYCHARGINGPLUGIN_DES_ENTRY, this ); + LOGTEXT(KNullDesC8); + LOGTEXT2(_L8(">>CUsbBatteryChargingPlugin::~CUsbBatteryChargingPlugin this = [0x%08x]"), this); iCurrentValues.Close(); delete iDeviceReEnumerator; @@ -101,7 +99,7 @@ */ void CUsbBatteryChargingPlugin::ConstructL() { - OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_ENTRY ); + LOGTEXT(_L8(">>CUsbBatteryChargingPlugin::ConstructL")); // Create state objects iPluginStates[EPluginStateIdle] = @@ -139,8 +137,7 @@ } else { - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL, "CUsbBatteryChargingPlugin::ConstructL;leave with error=%d", err ); - User::Leave(err ); + LEAVEL(err); } if(err == KErrNone || err == KErrAlreadyExists) @@ -154,8 +151,7 @@ static_cast (RProperty::Delete ( KPropertyUidUsbBatteryChargingCategory, KPropertyUidUsbBatteryChargingAvailableCurrent )); - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP1, "CUsbBatteryChargingPlugin::ConstructL;leave with error=%d", err ); - User::Leave(err); + LEAVEL(err); } err = RProperty::Set(KPropertyUidUsbBatteryChargingCategory, @@ -170,8 +166,7 @@ static_cast (RProperty::Delete ( KPropertyUidUsbBatteryChargingCategory, KPropertyUidUsbBatteryChargingChargingCurrent )); - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP2, "CUsbBatteryChargingPlugin::ConstructL;leave with error=%d", err ); - User::Leave(err ); + LEAVEL(err); } iRepositoryNotifier = CUsbChargingRepositoryNotifier::NewL (*this, @@ -206,18 +201,18 @@ else { iPluginState = EPluginStateBEndedCableNotPresent; - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP3, "CUsbBatteryChargingPlugin::ConstructL;PluginState => EPluginStateADevice(%d)", iPluginState ); + LOGTEXT2(_L8("PluginState => EPluginStateADevice(%d)"), iPluginState); } Observer().RegisterStateObserverL(*this); iLicenseeHooks = CUsbBatteryChargingLicenseeHooks::NewL(); - OstTrace0( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP4, "CUsbBatteryChargingPlugin::ConstructL;Created licensee specific hooks" ); + LOGTEXT(_L8("Created licensee specific hooks")); // Set initial recovery state to idle PushRecoverState(EPluginStateIdle); - OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_EXIT ); + LOGTEXT(_L8("< 0) { - TInt err; TInt configDescriptorSize = 0; - err = iLdd.GetConfigurationDescriptorSize(configDescriptorSize); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP1, "CUsbBatteryChargingPlugin::SetInitialConfigurationL;iLdd.GetConfigurationDescriptorSize(configDescriptorSize) with error=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(iLdd.GetConfigurationDescriptorSize(configDescriptorSize)); HBufC8* configDescriptor = HBufC8::NewLC(configDescriptorSize); TPtr8 ptr(configDescriptor->Des()); - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP2, "CUsbBatteryChargingPlugin::SetInitialConfigurationL;Getting Configuration Descriptor (size = %d)", configDescriptorSize ); - err = iLdd.GetConfigurationDescriptor(ptr); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP3, "CUsbBatteryChargingPlugin::SetInitialConfigurationL;iLdd.GetConfigurationDescriptor(ptr) with error=%d", err ); - User::Leave(err); - } + LOGTEXT2(_L8("Getting Configuration Descriptor (size = %d)"),configDescriptorSize); + LEAVEIFERRORL(iLdd.GetConfigurationDescriptor(ptr)); // For host OTG enabled charging plug-in #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV // Get first power to put in configurator - OstTrace0( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP4, "CUsbBatteryChargingPlugin::SetInitialConfigurationL;Checking IdPin state:" ); + LOGTEXT(_L8("Checking IdPin state:")); if(iIdPinState == EUsbBatteryChargingIdPinBRole) #else if (ETrue) @@ -287,29 +271,24 @@ { iCurrentIndexRequested = 0; iRequestedCurrentValue = iCurrentValues[iCurrentIndexRequested]; - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP5, "CUsbBatteryChargingPlugin::SetInitialConfigurationL;IdPin state is 0, current set to: %d", iRequestedCurrentValue ); + LOGTEXT2(_L8("IdPin state is 0, current set to: %d"), iRequestedCurrentValue); } else { - OstTrace0( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP6, "CUsbBatteryChargingPlugin::SetInitialConfigurationL;No vailable current found !" ); + LOGTEXT(_L8("No vailable current found !")); } } else { iRequestedCurrentValue = 0; - OstTrace0( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP7, "CUsbBatteryChargingPlugin::SetInitialConfigurationL;IdPin state is 1, current set to 0" ); + LOGTEXT(_L8("IdPin state is 1, current set to 0")); } TUint oldCurrentValue = ptr[KUsbBatteryChargingConfigurationDescriptorCurrentOffset] << 1; ptr[KUsbBatteryChargingConfigurationDescriptorCurrentOffset] = (iRequestedCurrentValue >> 1); - OstTrace0( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP8, "CUsbBatteryChargingPlugin::SetInitialConfigurationL;Setting Updated Configuration Descriptor" ); - err = iLdd.SetConfigurationDescriptor(ptr); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP9, "CUsbBatteryChargingPlugin::SetInitialConfigurationL;iLdd.SetConfigurationDescriptor(ptr) with error=%d", err ); - User::Leave(err); - } + LOGTEXT(_L8("Setting Updated Configuration Descriptor")); + LEAVEIFERRORL(iLdd.SetConfigurationDescriptor(ptr)); CleanupStack::PopAndDestroy(configDescriptor); } @@ -318,19 +297,19 @@ TAny* CUsbBatteryChargingPlugin::GetInterface(TUid aUid) { - OstTrace1( TRACE_FLOW, REF_CUSBBATTERYCHARGINGPLUGIN_GETINTERFACE, "CUsbBatteryChargingPlugin::GetInterface;this = [0x%08x]", this ); - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_GETINTERFACE_DUP1, "CUsbBatteryChargingPlugin::GetInterface;aUid = 0x%08x", aUid.iUid ); + LOGTEXT(KNullDesC8); + LOGTEXT3(_L8(">>CUsbBatteryChargingPlugin::GetInterface this = [0x%08x], aUid = 0x%08x"), this, aUid); (void)aUid; TAny* ret = NULL; - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_GETINTERFACE_DUP2, "CUsbBatteryChargingPlugin::GetInterface;ret = [0x%08x]", ret ); + LOGTEXT2(_L8("<>CUsbBatteryChargingPlugin::SetState: Invalid new state: aState = %d"), aState); Panic(EUsbBatteryChargingPanicUnexpectedPluginState); } iPluginState = aState; - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_SETSTATE_DUP1, "CUsbBatteryChargingPlugin::SetState;New state: aState=%d", aState ); + LOGTEXT2(_L8(">>CUsbBatteryChargingPlugin::SetState, New state: aState = %d"), aState); - OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_SETSTATE_EXIT ); return iPluginState; } void CUsbBatteryChargingPlugin::NegotiateChargingCurrent() { - OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_NEGOTIATECHARGINGCURRENT_ENTRY ); + LOG_FUNC - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_NEGOTIATECHARGINGCURRENT, "CUsbBatteryChargingPlugin::NegotiateChargingCurrent;iDeviceState=%d", iDeviceState ); + LOGTEXT2(_L8(">>CUsbBatteryChargingPlugin::StartNegotiation, iDeviceState = %d"), iDeviceState); TRAPD(result, NegotiateNextCurrentValueL()); if(result == KErrNone) { @@ -418,39 +394,35 @@ } else { - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_NEGOTIATECHARGINGCURRENT_DUP1, "CUsbBatteryChargingPlugin::NegotiateChargingCurrent;Negotiation call failed, iVBusState = 1: result = %d", result ); + LOGTEXT2(_L8("Negotiation call failed, iVBusState = 1: result = %d"), result); } - OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_NEGOTIATECHARGINGCURRENT_EXIT ); } void CUsbBatteryChargingPlugin::UsbDeviceStateChange(TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState) { - OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_USBDEVICESTATECHANGE_ENTRY ); + LOG_FUNC iCurrentState->UsbDeviceStateChange(aLastError, aOldState, aNewState); - OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_USBDEVICESTATECHANGE_EXIT ); } void CUsbBatteryChargingPlugin::HandleRepositoryValueChangedL(const TUid& aRepository, TUint aId, TInt aVal) { - OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_HANDLEREPOSITORYVALUECHANGEDL_ENTRY ); + LOG_FUNC iCurrentState->HandleRepositoryValueChangedL(aRepository, aId, aVal); - OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_HANDLEREPOSITORYVALUECHANGEDL_EXIT ); } void CUsbBatteryChargingPlugin::DeviceStateTimeout() { - OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_DEVICESTATETIMEOUT_ENTRY ); + LOG_FUNC iCurrentState->DeviceStateTimeout(); - OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_DEVICESTATETIMEOUT_EXIT ); } void CUsbBatteryChargingPlugin::NegotiateNextCurrentValueL() { - OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_NEGOTIATENEXTCURRENTVALUEL_ENTRY ); + LOG_FUNC iDeviceStateTimer->Cancel(); TUint newCurrent = 0; @@ -482,19 +454,18 @@ RequestCurrentL(newCurrent); iRequestedCurrentValue = newCurrent; iPluginState = EPluginStateCurrentNegotiating; - OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_NEGOTIATENEXTCURRENTVALUEL_EXIT ); } void CUsbBatteryChargingPlugin::ResetPlugin() { - OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_RESETPLUGIN_ENTRY ); + LOG_FUNC if((iPluginState != EPluginStateIdle)) { iDeviceStateTimer->Cancel(); // doesn't matter if not running iPluginState = EPluginStateIdle; iPluginStateToRecovery = EPluginStateIdle; - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_RESETPLUGIN, "CUsbBatteryChargingPlugin::ResetPlugin;PluginState => EPluginStateIdle(%d)", iPluginState ); + LOGTEXT2(_L8("PluginState => EPluginStateIdle(%d)"),iPluginState); iRequestedCurrentValue = 0; iCurrentIndexRequested = 0; @@ -502,70 +473,52 @@ SetNegotiatedCurrent(0); TRAP_IGNORE(SetInitialConfigurationL()); } - OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_RESETPLUGIN_EXIT ); } void CUsbBatteryChargingPlugin::RequestCurrentL(TUint aMilliAmps) { - OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_ENTRY ); + LOG_FUNC - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL, "CUsbBatteryChargingPlugin::RequestCurrentL;aMilliAmps=%u", aMilliAmps ); + LOGTEXT2(_L8(">>CUsbBatteryChargingPlugin::RequestCurrent aMilliAmps = %d"), aMilliAmps); if((EPluginStateCurrentNegotiating == iPluginState) && (iRequestedCurrentValue != aMilliAmps)) { - TInt err; TInt configDescriptorSize = 0; - err = iLdd.GetConfigurationDescriptorSize(configDescriptorSize); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP1, "CUsbBatteryChargingPlugin::RequestCurrentL;iLdd.GetConfigurationDescriptorSize(configDescriptorSize) with error=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(iLdd.GetConfigurationDescriptorSize(configDescriptorSize)); HBufC8* configDescriptor = HBufC8::NewLC(configDescriptorSize); TPtr8 ptr(configDescriptor->Des()); - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP2, "CUsbBatteryChargingPlugin::RequestCurrentL;Getting Configuration Descriptor (size = %d)", configDescriptorSize ); - err = iLdd.GetConfigurationDescriptor(ptr); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP3, "CUsbBatteryChargingPlugin::RequestCurrentL;iLdd.GetConfigurationDescriptor(ptr) with error=%d", err ); - User::Leave(err); - } + LOGTEXT2(_L8("Getting Configuration Descriptor (size = %d)"),configDescriptorSize); + LEAVEIFERRORL(iLdd.GetConfigurationDescriptor(ptr)); // set bMaxPower field. One unit = 2mA, so need to halve aMilliAmps. - OstTraceExt2( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP4, "CUsbBatteryChargingPlugin::RequestCurrentL;Setting bMaxPower to %u mA ( = %u x 2mA units)", aMilliAmps, aMilliAmps >> 1 ); + LOGTEXT3(_L8("Setting bMaxPower to %d mA ( = %d x 2mA units)"),aMilliAmps, (aMilliAmps >> 1)); TUint oldCurrentValue = ptr[KUsbBatteryChargingConfigurationDescriptorCurrentOffset] << 1; - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP5, "CUsbBatteryChargingPlugin::RequestCurrentL;(old value was %u mA)", oldCurrentValue ); + LOGTEXT2(_L8("(old value was %d mA)"), oldCurrentValue); //since the device will force reEnumeration if the value is odd aMilliAmps = aMilliAmps & 0xFFFE; // to negotiate a new current value, ReEnumerate is needed - OstTrace0( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP6, "CUsbBatteryChargingPlugin::RequestCurrentL;Forcing ReEnumeration" ); + LOGTEXT(_L8("Forcing ReEnumeration")); ptr[KUsbBatteryChargingConfigurationDescriptorCurrentOffset] = (aMilliAmps >> 1); - OstTrace0( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP7, "CUsbBatteryChargingPlugin::RequestCurrentL;Setting Updated Configuration Descriptor" ); - err = iLdd.SetConfigurationDescriptor(ptr); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP8, "CUsbBatteryChargingPlugin::RequestCurrentL;iLdd.SetConfigurationDescriptor(ptr) with err=%d", err ); - User::Leave(err); - } - OstTrace0( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP9, "CUsbBatteryChargingPlugin::RequestCurrentL;Triggering Re-enumeration" ); + LOGTEXT(_L8("Setting Updated Configuration Descriptor")); + LEAVEIFERRORL(iLdd.SetConfigurationDescriptor(ptr)); + LOGTEXT(_L8("Triggering Re-enumeration")); iDeviceReEnumerator->ReEnumerate(); CleanupStack::PopAndDestroy(configDescriptor); // configDescriptor } // Always issue a timer as a watchdog to monitor the request progress - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP10, "CUsbBatteryChargingPlugin::RequestCurrentL;Starting timer: %d", User::NTickCount() ); + LOGTEXT2(_L8("Starting timer: %d"), User::NTickCount()); iDeviceStateTimer->Cancel(); iDeviceStateTimer->Start(TTimeIntervalMicroSeconds32(KUsbBatteryChargingCurrentRequestTimeout)); - OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_EXIT ); } void CUsbBatteryChargingPlugin::ReadCurrentRequestValuesL() { - OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_READCURRENTREQUESTVALUESL_ENTRY ); + LOG_FUNC CRepository* repository = CRepository::NewLC(KUsbBatteryChargingCentralRepositoryUid); @@ -578,27 +531,26 @@ TInt value; repository->Get(KUsbBatteryChargingCurrentValuesOffset + i, value); iCurrentValues.Append(static_cast(value)); - OstTraceExt2( TRACE_FLOW, REF_CUSBBATTERYCHARGINGPLUGIN_READCURRENTREQUESTVALUESL, "CUsbBatteryChargingPlugin::ReadCurrentRequestValuesL;CurrentValue %d = %dmA", i, value ); + LOGTEXT3(_L8("CurrentValue %d = %dmA"),i,value); } CleanupStack::PopAndDestroy(repository); - OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_READCURRENTREQUESTVALUESL_EXIT ); } void CUsbBatteryChargingPlugin::StartCharging(TUint aMilliAmps) { - OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING_ENTRY ); + LOG_FUNC - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING, "CUsbBatteryChargingPlugin::StartCharging;aMilliAmps=%u", aMilliAmps ); + LOGTEXT2(_L8(">>CUsbBatteryChargingPlugin::StartCharging aMilliAmps = %d"), aMilliAmps); // do licensee specific functionality (if any) iLicenseeHooks->StartCharging(aMilliAmps); -#ifdef _DEBUG +#ifdef __FLOG_ACTIVE TInt err = RProperty::Set(KPropertyUidUsbBatteryChargingCategory, KPropertyUidUsbBatteryChargingChargingCurrent, aMilliAmps); - OstTraceExt2( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING_DUP1, "CUsbBatteryChargingPlugin::StartCharging;Set P&S current = %umA - err = %d", aMilliAmps, err ); + LOGTEXT3(_L8("Set P&S current = %dmA - err = %d"),aMilliAmps,err); #else (void)RProperty::Set(KPropertyUidUsbBatteryChargingCategory, KPropertyUidUsbBatteryChargingChargingCurrent, @@ -606,95 +558,91 @@ #endif SetState(EPluginStateCharging); - OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING_EXIT ); } void CUsbBatteryChargingPlugin::StopCharging() { - OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_STOPCHARGING_ENTRY ); + LOG_FUNC // do licensee specific functionality (if any) iLicenseeHooks->StopCharging(); -#ifdef _DEBUG +#ifdef __FLOG_ACTIVE TInt err = RProperty::Set(KPropertyUidUsbBatteryChargingCategory, KPropertyUidUsbBatteryChargingChargingCurrent, 0); - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_STOPCHARGING, "CUsbBatteryChargingPlugin::StopCharging;Set P&S current = 0mA - err = %d", err ); + LOGTEXT2(_L8("Set P&S current = 0mA - err = %d"),err); #else (void)RProperty::Set(KPropertyUidUsbBatteryChargingCategory, KPropertyUidUsbBatteryChargingChargingCurrent, 0); #endif - OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_STOPCHARGING_EXIT ); } void CUsbBatteryChargingPlugin::SetNegotiatedCurrent(TUint aMilliAmps) { - OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT_ENTRY ); + LOG_FUNC - OstTrace1( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT, "CUsbBatteryChargingPlugin::SetNegotiatedCurrent;aMilliAmps=%u", aMilliAmps ); + LOGTEXT2(_L8(">>CUsbBatteryChargingPlugin::SetNegotiatedCurrent aMilliAmps = %d"), aMilliAmps); // Ignore errors - not much we can do if it fails -#ifdef _DEBUG +#ifdef __FLOG_ACTIVE TInt err = RProperty::Set(KPropertyUidUsbBatteryChargingCategory, KPropertyUidUsbBatteryChargingAvailableCurrent, aMilliAmps); - OstTraceExt2( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT_DUP1, "CUsbBatteryChargingPlugin::SetNegotiatedCurrent;Set P&S current = %umA - err = %d", aMilliAmps, err ); + LOGTEXT3(_L8("Set P&S current = %dmA - err = %d"),aMilliAmps,err); #else (void)RProperty::Set(KPropertyUidUsbBatteryChargingCategory, KPropertyUidUsbBatteryChargingAvailableCurrent, aMilliAmps); #endif - OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT_EXIT ); } -#ifndef _DEBUG +#ifndef __FLOG_ACTIVE void CUsbBatteryChargingPlugin::LogStateText(TUsbDeviceState /*aState*/) { + LOG_FUNC } #else void CUsbBatteryChargingPlugin::LogStateText(TUsbDeviceState aState) { - OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_ENTRY ); + LOG_FUNC switch (aState) { case EUsbDeviceStateUndefined: - OstTrace0( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT, "CUsbBatteryChargingPlugin::LogStateText; ***** UNDEFINED *****" ); + LOGTEXT(_L8(" ***** UNDEFINED *****")); break; case EUsbDeviceStateDefault: - OstTrace0( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_DUP1, "CUsbBatteryChargingPlugin::LogStateText; ***** DEFAULT *****" ); + LOGTEXT(_L8(" ***** DEFAULT *****")); break; case EUsbDeviceStateAttached: - OstTrace0( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_DUP2, "CUsbBatteryChargingPlugin::LogStateText; ***** ATTACHED *****" ); + LOGTEXT(_L8(" ***** ATTACHED *****")); break; case EUsbDeviceStatePowered: - OstTrace0( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_DUP3, "CUsbBatteryChargingPlugin::LogStateText; ***** POWERED *****" ); + LOGTEXT(_L8(" ***** POWERED *****")); break; case EUsbDeviceStateConfigured: - OstTrace0( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_DUP4, "CUsbBatteryChargingPlugin::LogStateText; ***** CONFIGURED *****" ); + LOGTEXT(_L8(" ***** CONFIGURED *****")); break; case EUsbDeviceStateAddress: - OstTrace0( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_DUP5, "CUsbBatteryChargingPlugin::LogStateText; ***** ADDRESS *****" ); + LOGTEXT(_L8(" ***** ADDRESS *****")); break; case EUsbDeviceStateSuspended: - OstTrace0( TRACE_NORMAL, REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_DUP6, "CUsbBatteryChargingPlugin::LogStateText; ***** SUSPENDED *****" ); + LOGTEXT(_L8(" ***** SUSPENDED *****")); break; default: break; } - OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_EXIT ); } #endif void CUsbBatteryChargingPlugin::MpsoVBusStateChanged(TInt aNewState) { - OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_MPSOVBUSSTATECHANGED_ENTRY ); + LOG_FUNC iCurrentState->MpsoVBusStateChanged(aNewState); - OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_MPSOVBUSSTATECHANGED_EXIT ); } @@ -702,17 +650,15 @@ #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV void CUsbBatteryChargingPlugin::MpsoIdPinStateChanged(TInt aValue) { - OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_MPSOIDPINSTATECHANGED_ENTRY ); + LOG_FUNC iCurrentState->MpsoIdPinStateChanged(aValue); - OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_MPSOIDPINSTATECHANGED_EXIT ); } void CUsbBatteryChargingPlugin::MpsoOtgStateChangedL(TUsbOtgState aNewState) { - OstTraceFunctionEntry0( REF_CUSBBATTERYCHARGINGPLUGIN_MPSOOTGSTATECHANGEDL_ENTRY ); + LOG_FUNC iCurrentState->MpsoOtgStateChangedL(aNewState); - OstTraceFunctionExit0( REF_CUSBBATTERYCHARGINGPLUGIN_MPSOOTGSTATECHANGEDL_EXIT ); } #endif diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/chargingplugin/src/chargingstates.cpp --- a/usbmgmt/usbmgr/usbman/chargingplugin/src/chargingstates.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/chargingplugin/src/chargingstates.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -20,16 +20,14 @@ @internalComponent */ +#include "chargingstates.h" #include -#include "chargingstates.h" #include "reenumerator.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "chargingstatesTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "USBCHARGEStates"); #endif - - // Charging plugin base state // Empty virtual function implement to give a base of each state class. @@ -37,38 +35,32 @@ void TUsbBatteryChargingPluginStateBase::UsbServiceStateChange(TInt aLastError, TUsbServiceState aOldState, TUsbServiceState aNewState) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBSERVICESTATECHANGE_ENTRY ); + LOG_FUNC (void)aLastError; (void)aOldState; (void)aNewState; // Not use - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBSERVICESTATECHANGE_EXIT ); } void TUsbBatteryChargingPluginStateBase::UsbDeviceStateChange(TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBDEVICESTATECHANGE_ENTRY ); + LOG_FUNC (void)aLastError; (void)aOldState; (void)aNewState; - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBDEVICESTATECHANGE_EXIT ); } void TUsbBatteryChargingPluginStateBase::HandleRepositoryValueChangedL( const TUid& aRepository, TUint aId, TInt aVal) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_ENTRY ); + LOG_FUNC - OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL, - "TUsbBatteryChargingPluginStateBase::HandleRepositoryValueChangedL;aRepository = 0x%08x;aId=%d;aVal=%d", - aRepository.iUid, aId, (TInt32)aVal ); - OstTraceExt2( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_DUP1, - "TUsbBatteryChargingPluginStateBase::HandleRepositoryValueChangedL;Plugin State = %d, Device State = %d", - iParent.iPluginState, iParent.iDeviceState ); + LOGTEXT4(_L8(">>TUsbBatteryChargingPluginStateBase::HandleRepositoryValueChangedL aRepository = 0x%08x, aId = %d, aVal = %d"), aRepository, aId, aVal); + LOGTEXT3(_L8("Plugin State = %d, Device State = %d"), iParent.iPluginState, iParent.iDeviceState); if ((aRepository == KUsbBatteryChargingCentralRepositoryUid) && (aId == KUsbBatteryChargingKeyEnabledUserSetting)) @@ -93,13 +85,12 @@ iParent.SetState(EPluginStateUserDisabled); } } - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_EXIT ); } void TUsbBatteryChargingPluginStateBase::DeviceStateTimeout() { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_DEVICESTATETIMEOUT_ENTRY ); - OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_DEVICESTATETIMEOUT, "TUsbBatteryChargingPluginStateBase::DeviceStateTimeout;Time: %u Plugin State = %d, Device State = %d", User::NTickCount(), (TInt32)iParent.iPluginState, (TInt32)iParent.iDeviceState ); + LOG_FUNC + LOGTEXT4(_L8("Time: %d Plugin State = %d, Device State = %d"), User::NTickCount(), iParent.iPluginState, iParent.iDeviceState); iParent.iDeviceReEnumerator->Cancel(); // cancel re-enumeration AO @@ -108,16 +99,15 @@ // Should not happen !!! Otherwise, something wrong!!! iParent.SetState(EPluginStateIdle); } - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_DEVICESTATETIMEOUT_EXIT ); } // For host OTG enabled charging plug-in #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV void TUsbBatteryChargingPluginStateBase::MpsoIdPinStateChanged(TInt aValue) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED_ENTRY ); - - OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED, "TUsbBatteryChargingPluginStateBase::MpsoIdPinStateChanged;IdPinState changed => %d", aValue ); + LOG_FUNC + + LOGTEXT2(_L8("IdPinState changed => %d"), aValue); // Disable charging here when IdPin is present // When IdPin disappears (i.e. the phone becomes B-Device), all necessary step are performed @@ -137,7 +127,6 @@ TRAP_IGNORE(iParent.SetInitialConfigurationL()); iParent.SetState(EPluginStateBEndedCableNotPresent); - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED_EXIT ); return; case EUsbBatteryChargingIdPinBRole: @@ -152,32 +141,29 @@ iParent.SetState(EPluginStateIdle); break; } - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED_EXIT_DUP1 ); } void TUsbBatteryChargingPluginStateBase::MpsoOtgStateChangedL(TUsbOtgState aNewState) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOOTGSTATECHANGEDL_ENTRY ); + LOG_FUNC iParent.iOtgState = aNewState; // Not use currently - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOOTGSTATECHANGEDL_EXIT ); } #endif void TUsbBatteryChargingPluginStateBase::MpsoVBusStateChanged(TInt aNewState) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED_ENTRY ); + LOG_FUNC if (aNewState == iParent.iVBusState) { - OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED, "TUsbBatteryChargingPluginStateBase::MpsoVBusStateChanged;Receive VBus State Change notification without any state change: aNewState = %d", aNewState ); - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED_EXIT ); + LOGTEXT2(_L8("Receive VBus State Change notification without any state change: aNewState = %d"), aNewState); return;//should not happen?? } - OstTraceExt2( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED_DUP1, "TUsbBatteryChargingPluginStateBase::MpsoVBusStateChanged;VBusState changed from %d to %d", iParent.iVBusState, aNewState ); + LOGTEXT3(_L8("VBusState changed from %d to %d"), iParent.iVBusState, aNewState); iParent.iVBusState = aNewState; if (aNewState == 0) // VBus drop down - we have disconnected from host @@ -190,7 +176,6 @@ } // The handling of VBus on will be down in DeviceStateChanged implicitly - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED_EXIT_DUP1 ); } @@ -198,8 +183,7 @@ CUsbBatteryChargingPlugin& aParentStateMachine ): iParent(aParentStateMachine) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_TUSBBATTERYCHARGINGPLUGINSTATEBASE_CONS_ENTRY ); - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_TUSBBATTERYCHARGINGPLUGINSTATEBASE_CONS_EXIT ); + LOG_FUNC } @@ -209,16 +193,15 @@ CUsbBatteryChargingPlugin& aParentStateMachine ) : TUsbBatteryChargingPluginStateBase(aParentStateMachine) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_CONS_ENTRY ); - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_CONS_EXIT ); + LOG_FUNC }; void TUsbBatteryChargingPluginStateIdle::UsbDeviceStateChange( TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_USBDEVICESTATECHANGE_ENTRY ); + LOG_FUNC - OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_USBDEVICESTATECHANGE, "TUsbBatteryChargingPluginStateIdle::UsbDeviceStateChange;aLastError=%d;aOldState=%d;aNewState=%d", aLastError, aOldState, aNewState ); + LOGTEXT4(_L8(">>TUsbBatteryChargingPluginStateIdle::UsbDeviceStateChange LastError = %d, aOldState = %d, aNewState = %d"), aLastError, aOldState, aNewState); (void)aLastError; (void)aOldState; iParent.iDeviceState = aNewState; @@ -242,7 +225,6 @@ } break; } - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_USBDEVICESTATECHANGE_EXIT ); } @@ -252,16 +234,15 @@ CUsbBatteryChargingPlugin& aParentStateMachine ) : TUsbBatteryChargingPluginStateBase(aParentStateMachine) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_CONS_ENTRY ); - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_CONS_EXIT ); + LOG_FUNC }; void TUsbBatteryChargingPluginStateCurrentNegotiating::UsbDeviceStateChange( TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_ENTRY ); + LOG_FUNC - OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE, "TUsbBatteryChargingPluginStateCurrentNegotiating::UsbDeviceStateChange;aLastError=%d;aOldState=%d;aNewState=%d", aLastError, aOldState, aNewState ); + LOGTEXT4(_L8(">>TUsbBatteryChargingPluginStateCurrentNegotiating::UsbDeviceStateChange LastError = %d, aOldState = %d, aNewState = %d"), aLastError, aOldState, aNewState); (void)aLastError; (void)aOldState; iParent.iDeviceState = aNewState; @@ -274,7 +255,7 @@ { iParent.iDeviceStateTimer->Cancel(); - OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_DUP1, "TUsbBatteryChargingPluginStateCurrentNegotiating::UsbDeviceStateChange;iParent.iAvailableMilliAmps=%d", iParent.iAvailableMilliAmps ); + LOGTEXT2(_L8("iParent.iAvailableMilliAmps = %d"),iParent.iAvailableMilliAmps); iParent.iAvailableMilliAmps = iParent.iRequestedCurrentValue; if(0 != iParent.iRequestedCurrentValue) @@ -282,7 +263,7 @@ // A non-zero value was accepted by host, charging // can be performed now. iParent.StartCharging(iParent.iAvailableMilliAmps); - OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_DUP2, "TUsbBatteryChargingPluginStateCurrentNegotiating::UsbDeviceStateChange;PluginState => EPluginStateCharging(%d)", iParent.iPluginState ); + LOGTEXT2(_L8("PluginState => EPluginStateCharging(%d)"),iParent.iPluginState); iParent.SetNegotiatedCurrent(iParent.iAvailableMilliAmps); } else @@ -290,7 +271,7 @@ // Host can only accept 0 charging current // No way to do charging iParent.SetState(EPluginStateNoValidCurrent); - OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_DUP3, "TUsbBatteryChargingPluginStateCurrentNegotiating::UsbDeviceStateChange;No more current value to try, iPluginState turned to %d", iParent.iPluginState ); + LOGTEXT2(_L8("No more current value to try, iPluginState turned to %d"), iParent.iPluginState); } } @@ -304,13 +285,12 @@ default: break; } - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_EXIT ); } void TUsbBatteryChargingPluginStateCurrentNegotiating::DeviceStateTimeout() { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_DEVICESTATETIMEOUT_ENTRY ); - OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_DEVICESTATETIMEOUT, "TUsbBatteryChargingPluginStateCurrentNegotiating::DeviceStateTimeout;Time: %d Plugin State = %d, Device State = %d", User::NTickCount(), (TInt32)iParent.iPluginState, (TInt32)iParent.iDeviceState ); + LOG_FUNC + LOGTEXT4(_L8("Time: %d Plugin State = %d, Device State = %d"), User::NTickCount(), iParent.iPluginState, iParent.iDeviceState); iParent.iDeviceReEnumerator->Cancel(); // cancel re-enumeration AO @@ -325,7 +305,6 @@ // Assume it will never happens. iParent.SetState(EPluginStateNoValidCurrent); } - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_DEVICESTATETIMEOUT_EXIT ); } @@ -336,16 +315,15 @@ CUsbBatteryChargingPlugin& aParentStateMachine ) : TUsbBatteryChargingPluginStateBase(aParentStateMachine) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_CONS_ENTRY ); - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_CONS_EXIT ); + LOG_FUNC } void TUsbBatteryChargingPluginStateCharging::UsbDeviceStateChange( TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE_ENTRY ); + LOG_FUNC - OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE, "TUsbBatteryChargingPluginStateCharging::UsbDeviceStateChange;aLastError=%d;aOldState=%d;aNewState=%d", aLastError, aOldState, aNewState ); + LOGTEXT4(_L8(">>TUsbBatteryChargingPluginStateCharging::UsbDeviceStateChange LastError = %d, aOldState = %d, aNewState = %d"), aLastError, aOldState, aNewState); (void)aLastError; (void)aOldState; iParent.iDeviceState = aNewState; @@ -371,7 +349,6 @@ default: break; } - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE_EXIT ); } // Charging plugin negotiated fail state @@ -381,8 +358,7 @@ CUsbBatteryChargingPlugin& aParentStateMachine ) : TUsbBatteryChargingPluginStateBase(aParentStateMachine) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_CONS_ENTRY ); - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_CONS_EXIT ); + LOG_FUNC }; @@ -392,16 +368,15 @@ CUsbBatteryChargingPlugin& aParentStateMachine ) : TUsbBatteryChargingPluginStateBase(aParentStateMachine) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_CONS_ENTRY ); - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_CONS_EXIT ); + LOG_FUNC }; void TUsbBatteryChargingPluginStateIdleNegotiated::UsbDeviceStateChange( TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_USBDEVICESTATECHANGE_ENTRY ); + LOG_FUNC - OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_USBDEVICESTATECHANGE, "TUsbBatteryChargingPluginStateIdleNegotiated::UsbDeviceStateChange;aLastError=%d;aOldState=%d;aNewState=%d", aLastError, aOldState, aNewState ); + LOGTEXT4(_L8(">>TUsbBatteryChargingPluginStateIdleNegotiated::UsbDeviceStateChange LastError = %d, aOldState = %d, aNewState = %d"), aLastError, aOldState, aNewState); (void)aLastError; (void)aOldState; iParent.iDeviceState = aNewState; @@ -422,7 +397,6 @@ default: break; } - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_USBDEVICESTATECHANGE_EXIT ); } // Charging plugin user disabled state @@ -431,32 +405,29 @@ CUsbBatteryChargingPlugin& aParentStateMachine ) : TUsbBatteryChargingPluginStateBase(aParentStateMachine) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_CONS_ENTRY ); - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_CONS_EXIT ); + LOG_FUNC }; void TUsbBatteryChargingPluginStateUserDisabled::UsbDeviceStateChange( TInt aLastError, TUsbDeviceState aOldState, TUsbDeviceState aNewState) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE_ENTRY ); + LOG_FUNC - OstTraceExt3( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE, "TUsbBatteryChargingPluginStateUserDisabled::UsbDeviceStateChange;aLastError=%d;aOldState=%d;aNewState=%d", aLastError, aOldState, aNewState ); + LOGTEXT4(_L8(">>TUsbBatteryChargingPluginStateUserDisabled::UsbDeviceStateChange LastError = %d, aOldState = %d, aNewState = %d"), aLastError, aOldState, aNewState); (void)aLastError; (void)aOldState; iParent.iDeviceState = aNewState; iParent.LogStateText(aNewState); - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE_EXIT ); } void TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL( const TUid& aRepository, TUint aId, TInt aVal) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_ENTRY ); + LOG_FUNC - OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL, "TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL;aRepository = 0x%08x", aRepository.iUid ); - OstTraceExt2( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP1, "TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL;aId=%d;aVal=%d", aId, aVal ); - OstTraceExt2( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP2, "TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL;iParent.iPluginState=%d;iParent.iDeviceState=%d", iParent.iPluginState, iParent.iDeviceState ); + LOGTEXT4(_L8(">>TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL aRepository = 0x%08x, aId = %d, aVal = %d"), aRepository, aId, aVal); + LOGTEXT3(_L8("Plugin State = %d, Device State = %d"), iParent.iPluginState, iParent.iDeviceState); if ((aRepository == KUsbBatteryChargingCentralRepositoryUid) && (aId == KUsbBatteryChargingKeyEnabledUserSetting)) @@ -472,19 +443,18 @@ { iParent.StartCharging(iParent.iAvailableMilliAmps); // Go to charing state implicitly } - OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP3, "TUsbBatteryChargingPluginStateUserDisabled::HandleRepositoryValueChangedL;PluginState => %d", iParent.iPluginState ); + LOGTEXT2(_L8("PluginState => %d"), iParent.iPluginState); } } - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_EXIT ); } // For host OTG enabled charging plug-in #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV void TUsbBatteryChargingPluginStateUserDisabled::MpsoIdPinStateChanged(TInt aValue) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_ENTRY ); + LOG_FUNC - OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED, "TUsbBatteryChargingPluginStateUserDisabled::MpsoIdPinStateChanged;IdPinState changed => %d", aValue ); + LOGTEXT2(_L8("IdPinState changed => %d"), aValue); // Disable charging here when IdPin is present // When IdPin disappears (i.e. the phone becomes B-Device), all necessary step are performed @@ -498,7 +468,6 @@ TRAP_IGNORE(iParent.SetInitialConfigurationL()); iParent.PushRecoverState(EPluginStateBEndedCableNotPresent); - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_EXIT ); return; case EUsbBatteryChargingIdPinBRole: @@ -509,23 +478,21 @@ iParent.SetState(EPluginStateIdle); break; } - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_EXIT_DUP1 ); } #endif void TUsbBatteryChargingPluginStateUserDisabled::MpsoVBusStateChanged(TInt aNewState) { - OstTraceFunctionEntry0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_ENTRY ); + LOG_FUNC if (aNewState == iParent.iVBusState) { - OstTrace1( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED, "TUsbBatteryChargingPluginStateUserDisabled::MpsoVBusStateChanged;Receive VBus State Change notification without any state change: aNewState = %d", aNewState ); - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_EXIT ); + LOGTEXT2(_L8("Receive VBus State Change notification without any state change: aNewState = %d"), aNewState); return; } - OstTraceExt2( TRACE_NORMAL, REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_DUP1, "TUsbBatteryChargingPluginStateUserDisabled::MpsoVBusStateChanged;VBusState changed from %d to %d", iParent.iVBusState, aNewState ); + LOGTEXT3(_L8("VBusState changed from %d to %d"), iParent.iVBusState, aNewState); iParent.iVBusState = aNewState; if (aNewState == 0) // VBus drop down - we have disconnected from host @@ -538,7 +505,6 @@ } // The handling of VBus on will be down in DeviceStateChanged implicitly - OstTraceFunctionExit0( REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_EXIT_DUP1 ); } @@ -548,8 +514,7 @@ CUsbBatteryChargingPlugin& aParentStateMachine ) : TUsbBatteryChargingPluginStateBase(aParentStateMachine) { - OstTraceFunctionEntry0( RES_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_CONS_ENTRY ); - OstTraceFunctionExit0( RES_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_CONS_EXIT ); + LOG_FUNC }; diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/chargingplugin/src/idpinwatcher.cpp --- a/usbmgmt/usbmgr/usbman/chargingplugin/src/idpinwatcher.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/chargingplugin/src/idpinwatcher.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -48,13 +48,7 @@ void CIdPinWatcher::ConstructL() { -#ifdef __CHARGING_PLUGIN_TEST_CODE__ - const TInt8 KPropertyOffsetForChargingTest = 100; - User::LeaveIfError(iIdPinProp.Attach(KUidUsbManCategory, KUsbOtgIdPinPresentProperty + KPropertyOffsetForChargingTest)); -#else - User::LeaveIfError(iIdPinProp.Attach(KUidUsbManCategory, KUsbOtgIdPinPresentProperty)); -#endif - + User::LeaveIfError(iIdPinProp.Attach(KUidUsbManCategory, KUsbOtgIdPinPresentProperty)); iIdPinProp.Subscribe(iStatus); SetActive(); diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/chargingplugin/src/otgstatewatcher.cpp --- a/usbmgmt/usbmgr/usbman/chargingplugin/src/otgstatewatcher.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/chargingplugin/src/otgstatewatcher.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -48,13 +48,7 @@ void COtgStateWatcher::ConstructL() { -#ifdef __CHARGING_PLUGIN_TEST_CODE__ - const TInt8 KPropertyOffsetForChargingTest = 100; - User::LeaveIfError(iOtgStateProp.Attach(KUidUsbManCategory, KUsbOtgStateProperty + KPropertyOffsetForChargingTest)); -#else - User::LeaveIfError(iOtgStateProp.Attach(KUidUsbManCategory, KUsbOtgStateProperty)); -#endif - + User::LeaveIfError(iOtgStateProp.Attach(KUidUsbManCategory, KUsbOtgStateProperty)); iOtgStateProp.Subscribe(iStatus); SetActive(); diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/chargingplugin/src/vbuswatcher.cpp --- a/usbmgmt/usbmgr/usbman/chargingplugin/src/vbuswatcher.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/chargingplugin/src/vbuswatcher.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -48,13 +48,7 @@ void CVBusWatcher::ConstructL() { -#ifdef __CHARGING_PLUGIN_TEST_CODE__ - const TInt8 KPropertyOffsetForChargingTest = 100; - User::LeaveIfError(iVBusProp.Attach(KUidUsbManCategory, KUsbOtgVBusPoweredProperty + KPropertyOffsetForChargingTest)); -#else - User::LeaveIfError(iVBusProp.Attach(KUidUsbManCategory, KUsbOtgVBusPoweredProperty)); -#endif - + User::LeaveIfError(iVBusProp.Attach(KUidUsbManCategory, KUsbOtgVBusPoweredProperty)); iVBusProp.Subscribe(iStatus); SetActive(); diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/chargingplugin/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/usbman/chargingplugin/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/chargingplugin/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/usbman/chargingplugin/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,192 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_FATAL=0x81 -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_FATAL[0x81]_REF_CUSBBATTERYCHARGINGPLUGIN_PANIC=0x1 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_ENTRY=0x6a -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_EXIT=0x6b -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_CUSBBATTERYCHARGINGPLUGIN_DES_ENTRY=0x69 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_DEVICESTATETIMEOUT_ENTRY=0x41 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_DEVICESTATETIMEOUT_EXIT=0x42 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_GETINTERFACE=0x72 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_HANDLEREPOSITORYVALUECHANGEDL_ENTRY=0x3f -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_HANDLEREPOSITORYVALUECHANGEDL_EXIT=0x40 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_ENTRY=0x51 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_EXIT=0x52 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_MPSOIDPINSTATECHANGED_ENTRY=0x55 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_MPSOIDPINSTATECHANGED_EXIT=0x56 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_MPSOOTGSTATECHANGEDL_ENTRY=0x57 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_MPSOOTGSTATECHANGEDL_EXIT=0x58 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_MPSOVBUSSTATECHANGED_ENTRY=0x53 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_MPSOVBUSSTATECHANGED_EXIT=0x54 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_NEGOTIATECHARGINGCURRENT_ENTRY=0x3b -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_NEGOTIATECHARGINGCURRENT_EXIT=0x3c -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_NEGOTIATENEXTCURRENTVALUEL_ENTRY=0x43 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_NEGOTIATENEXTCURRENTVALUEL_EXIT=0x44 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_POPRECOVERSTATE_ENTRY=0x37 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_POPRECOVERSTATE_EXIT=0x38 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_PUSHRECOVERSTATE_ENTRY=0x35 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_PUSHRECOVERSTATE_EXIT=0x36 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_READCURRENTREQUESTVALUESL=0x6c -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_READCURRENTREQUESTVALUESL_ENTRY=0x49 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_READCURRENTREQUESTVALUESL_EXIT=0x4a -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_ENTRY=0x47 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_EXIT=0x48 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_RESETPLUGIN_ENTRY=0x45 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_RESETPLUGIN_EXIT=0x46 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT_ENTRY=0x4f -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT_EXIT=0x50 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_SETSTATE_ENTRY=0x39 -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_SETSTATE_EXIT=0x3a -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING_ENTRY=0x4b -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING_EXIT=0x4c -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STOPCHARGING_ENTRY=0x4d -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STOPCHARGING_EXIT=0x4e -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_USBDEVICESTATECHANGE_ENTRY=0x3d -[TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_USBDEVICESTATECHANGE_EXIT=0x3e -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_DEVICESTATETIMEOUT_ENTRY=0x7 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_DEVICESTATETIMEOUT_EXIT=0x8 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_EXIT=0x6 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED_ENTRY=0x9 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED_EXIT=0xa -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED_EXIT_DUP1=0xb -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOOTGSTATECHANGEDL_ENTRY=0xc -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOOTGSTATECHANGEDL_EXIT=0xd -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED_ENTRY=0xe -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED_EXIT=0xf -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED_EXIT_DUP1=0x10 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_TUSBBATTERYCHARGINGPLUGINSTATEBASE_CONS_ENTRY=0x59 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_TUSBBATTERYCHARGINGPLUGINSTATEBASE_CONS_EXIT=0x5a -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBDEVICESTATECHANGE_ENTRY=0x3 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBDEVICESTATECHANGE_EXIT=0x4 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBSERVICESTATECHANGE_ENTRY=0x1 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_USBSERVICESTATECHANGE_EXIT=0x2 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_CONS_ENTRY=0x5f -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_CONS_EXIT=0x60 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE_ENTRY=0x1f -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE_EXIT=0x20 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_DEVICESTATETIMEOUT_ENTRY=0x1b -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_DEVICESTATETIMEOUT_EXIT=0x1c -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_CONS_ENTRY=0x5d -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_CONS_EXIT=0x5e -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_ENTRY=0x19 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_EXIT=0x1a -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_CONS_ENTRY=0x63 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_CONS_EXIT=0x64 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_USBDEVICESTATECHANGE_ENTRY=0x25 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_USBDEVICESTATECHANGE_EXIT=0x26 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_CONS_ENTRY=0x5b -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_CONS_EXIT=0x5c -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_USBDEVICESTATECHANGE_ENTRY=0x15 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_USBDEVICESTATECHANGE_EXIT=0x16 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_CONS_ENTRY=0x61 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_CONS_EXIT=0x62 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_ENTRY=0x2b -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_EXIT=0x2c -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_ENTRY=0x2d -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_EXIT=0x2e -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED_EXIT_DUP1=0x2f -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_ENTRY=0x30 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_EXIT=0x31 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_EXIT_DUP1=0x32 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_CONS_ENTRY=0x65 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_CONS_EXIT=0x66 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE_ENTRY=0x29 -[TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE_EXIT=0x2a -[TRACE]TRACE_FLOW[0x8A]_RES_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_CONS_ENTRY=0x67 -[TRACE]TRACE_FLOW[0x8A]_RES_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_CONS_EXIT=0x68 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL=0x18 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP1=0x19 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP2=0x1a -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP3=0x1d -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP4=0x1e -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_GETINTERFACE_DUP1=0x41 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_GETINTERFACE_DUP2=0x42 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT=0x29 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_DUP1=0x2a -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_DUP2=0x2b -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_DUP3=0x2c -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_DUP4=0x2d -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_DUP5=0x2e -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_LOGSTATETEXT_DUP6=0x2f -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_NEGOTIATECHARGINGCURRENT=0x33 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_NEGOTIATECHARGINGCURRENT_DUP1=0x34 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL=0x36 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP1=0x37 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP10=0x40 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP2=0x38 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP3=0x39 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP4=0x3a -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP5=0x3b -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP6=0x3c -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP7=0x3d -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP8=0x3e -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_REQUESTCURRENTL_DUP9=0x3f -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_RESETPLUGIN=0x35 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL=0x1f -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP1=0x20 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP2=0x21 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP3=0x22 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP4=0x23 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP5=0x24 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP6=0x25 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP7=0x26 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP8=0x27 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETINITIALCONFIGURATIONL_DUP9=0x28 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT=0x43 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT_DUP1=0x44 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETSTATE=0x31 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_SETSTATE_DUP1=0x32 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING=0x45 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING_DUP1=0x46 -[TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_STOPCHARGING=0x47 -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_DEVICESTATETIMEOUT=0x3 -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL=0x1 -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_DUP1=0x2 -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOIDPINSTATECHANGED=0x4 -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED=0x5 -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_MPSOVBUSSTATECHANGED_DUP1=0x6 -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_USBDEVICESTATECHANGE=0xe -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_DEVICESTATETIMEOUT=0xd -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE=0x8 -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_DUP1=0x9 -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_DUP2=0xa -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_USBDEVICESTATECHANGE_DUP3=0xb -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_USBDEVICESTATECHANGE=0xf -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_USBDEVICESTATECHANGE=0x7 -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL=0x11 -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP1=0x12 -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP2=0x13 -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_HANDLEREPOSITORYVALUECHANGEDL_DUP3=0x14 -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOIDPINSTATECHANGED=0x15 -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED=0x16 -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_MPSOVBUSSTATECHANGED_DUP1=0x17 -[TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_USBDEVICESTATECHANGE=0x10 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_GETINTERFACE_DUP1=0x73 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_GETINTERFACE_DUP2=0x74 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT=0x70 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_SETNEGOTIATEDCURRENT_DUP1=0x71 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING=0x6d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STARTCHARGING_DUP1=0x6e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_CUSBBATTERYCHARGINGPLUGIN_STOPCHARGING=0x6f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_TUSBBATTERYCHARGINGPLUGINSTATEBASE_ENTRY=0x11 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_TUSBBATTERYCHARGINGPLUGINSTATEBASE_EXIT=0x12 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_ENTRY=0x1d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_TUSBBATTERYCHARGINGPLUGINSTATECHARGING_EXIT=0x1e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_ENTRY=0x17 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_TUSBBATTERYCHARGINGPLUGINSTATECURRENTNEGOTIATING_EXIT=0x18 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_ENTRY=0x23 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_TUSBBATTERYCHARGINGPLUGINSTATEIDLENEGOTIATED_EXIT=0x24 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_ENTRY=0x13 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_TUSBBATTERYCHARGINGPLUGINSTATEIDLE_EXIT=0x14 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_ENTRY=0x21 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_TUSBBATTERYCHARGINGPLUGINSTATENOVALIDCURRENT_EXIT=0x22 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_ENTRY=0x27 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_REF_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_TUSBBATTERYCHARGINGPLUGINSTATEUSERDISABLED_EXIT=0x28 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RES_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_ENTRY=0x33 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RES_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_TUSBBATTERYCHARGINGPLUGINSTATEBENDEDCABLENOTPRESENT_EXIT=0x34 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_CUSBBATTERYCHARGINGPLUGIN_PANIC=0x30 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_REF_TUSBBATTERYCHARGINGPLUGINSTATEBASE_HANDLEREPOSITORYVALUECHANGEDL_DUP2=0xc -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]__REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP3=0x1b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]__REF_CUSBBATTERYCHARGINGPLUGIN_CONSTRUCTL_DUP4=0x1c diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/client/SRC/RUsb.cpp --- a/usbmgmt/usbmgr/usbman/client/SRC/RUsb.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/client/SRC/RUsb.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2003-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" @@ -19,20 +19,17 @@ #include #include #include +#include "rusb.h" +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "USBMAN"); +#endif #ifdef __USBMAN_NO_PROCESSES__ #include #endif -#include - -#include "rusb.h" - -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "RUsbTraces.h" -#endif - static TInt StartServer() // @@ -112,8 +109,7 @@ server.Close(); - OstTrace1( TRACE_NORMAL, RUSB_STARTSERVER, "::StartServer;USB server started successfully: err=%d", err ); - + LOGTEXT2(_L8("USB server started successfully: err = %d\n"),err); return err; } @@ -125,14 +121,14 @@ : iDeviceStatePkg(0), iServiceStatePkg(0), iMessagePkg(0), iHostPkg(TDeviceEventInformation()) { - OstTraceFunctionEntry0( RUSB_RUSB_CONS_ENTRY ); - OstTraceFunctionExit0( RUSB_RUSB_CONS_EXIT ); + LOG_LINE + LOG_FUNC } EXPORT_C RUsb::~RUsb() { - OstTraceFunctionEntry0( RUSB_RUSB_DES_ENTRY ); - OstTraceFunctionExit0( RUSB_RUSB_DES_EXIT ); + LOG_LINE + LOG_FUNC } EXPORT_C TVersion RUsb::Version() const @@ -142,7 +138,9 @@ EXPORT_C TInt RUsb::Connect() { - OstTraceFunctionEntry0( RUSB_CONNECT_ENTRY ); + LOG_LINE + LOG_FUNC + TInt retry = 2; FOREVER @@ -152,13 +150,11 @@ if ((err != KErrNotFound) && (err != KErrServerTerminated)) { - OstTraceFunctionExit0( RUSB_CONNECT_EXIT ); return err; } if (--retry == 0) { - OstTraceFunctionExit0( RUSB_CONNECT_EXIT_DUP1 ); return err; } @@ -166,7 +162,6 @@ if ((err != KErrNone) && (err != KErrAlreadyExists)) { - OstTraceFunctionExit0( RUSB_CONNECT_EXIT_DUP2 ); return err; } } @@ -174,134 +169,149 @@ EXPORT_C void RUsb::Start(TRequestStatus& aStatus) { - OstTraceFunctionEntry0( RUSB_START_ENTRY ); - + LOG_LINE + LOG_FUNC + SendReceive(EUsbStart, aStatus); - OstTraceFunctionExit0( RUSB_START_EXIT ); } EXPORT_C void RUsb::StartCancel() { - OstTraceFunctionEntry0( RUSB_STARTCANCEL_ENTRY ); + LOG_LINE + LOG_FUNC + SendReceive(EUsbStartCancel); - OstTraceFunctionExit0( RUSB_STARTCANCEL_EXIT ); } EXPORT_C void RUsb::Stop() { - OstTraceFunctionEntry0( RUSB_STOP_ENTRY ); + LOG_LINE + LOG_FUNC + SendReceive(EUsbStop); - OstTraceFunctionExit0( RUSB_STOP_EXIT ); } EXPORT_C void RUsb::Stop(TRequestStatus& aStatus) { - OstTraceFunctionEntry0( RUSB_STOP_TREQUESTSTATUS_ENTRY ); + LOG_LINE + LOG_FUNC + SendReceive(EUsbStop, aStatus); - OstTraceFunctionExit0( RUSB_STOP_TREQUESTSTATUS_EXIT ); } EXPORT_C void RUsb::StopCancel() { - OstTraceFunctionEntry0( RUSB_STOPCANCEL_ENTRY ); + LOG_LINE + LOG_FUNC + SendReceive(EUsbStopCancel); - OstTraceFunctionExit0( RUSB_STOPCANCEL_EXIT ); } EXPORT_C TInt RUsb::GetServiceState(TUsbServiceState& aState) { - OstTraceFunctionEntry0( RUSB_GETSERVICESTATE_ENTRY ); + LOG_LINE + LOG_FUNC + TPckg pkg(aState); TInt ret=SendReceive(EUsbGetCurrentState, TIpcArgs(&pkg)); aState=(TUsbServiceState)pkg(); - OstTraceFunctionExit0( RUSB_GETSERVICESTATE_EXIT ); return ret; } EXPORT_C TInt RUsb::GetCurrentState(TUsbServiceState& aState) { - OstTraceFunctionEntry0( RUSB_GETCURRENTSTATE_ENTRY ); + LOG_LINE + LOG_FUNC + return GetServiceState(aState); } EXPORT_C void RUsb::ServiceStateNotification(TUsbServiceState& aState, TRequestStatus& aStatus) { - OstTraceFunctionEntry0( RUSB_SERVICESTATENOTIFICATION_ENTRY ); + LOG_LINE + LOG_FUNC iServiceStatePkg.Set((TUint8*)&aState, sizeof(TUint32), sizeof(TUint32)); SendReceive(EUsbRegisterServiceObserver, TIpcArgs(&iServiceStatePkg), aStatus); - OstTraceFunctionExit0( RUSB_SERVICESTATENOTIFICATION_EXIT ); } EXPORT_C void RUsb::ServiceStateNotificationCancel() { - OstTraceFunctionEntry0( RUSB_SERVICESTATENOTIFICATIONCANCEL_ENTRY ); + LOG_LINE + LOG_FUNC + SendReceive(EUsbCancelServiceObserver); - OstTraceFunctionExit0( RUSB_SERVICESTATENOTIFICATIONCANCEL_EXIT ); } EXPORT_C TInt RUsb::GetDeviceState(TUsbDeviceState& aState) { - OstTraceFunctionEntry0( RUSB_GETDEVICESTATE_ENTRY ); + LOG_LINE + LOG_FUNC + TPckg pkg(aState); TInt ret=SendReceive(EUsbGetCurrentDeviceState, TIpcArgs(&pkg)); aState=(TUsbDeviceState)pkg(); - OstTraceFunctionExit0( RUSB_GETDEVICESTATE_EXIT ); return ret; } EXPORT_C void RUsb::DeviceStateNotification(TUint aEventMask, TUsbDeviceState& aState, TRequestStatus& aStatus) { - OstTraceFunctionEntry0( RUSB_DEVICESTATENOTIFICATION_ENTRY ); + LOG_LINE + LOG_FUNC + iDeviceStatePkg.Set((TUint8*)&aState, sizeof(TUint32), sizeof(TUint32)); SendReceive(EUsbRegisterObserver, TIpcArgs(aEventMask, &iDeviceStatePkg), aStatus); - OstTraceFunctionExit0( RUSB_DEVICESTATENOTIFICATION_EXIT ); } EXPORT_C void RUsb::DeviceStateNotificationCancel() { - OstTraceFunctionEntry0( RUSB_DEVICESTATENOTIFICATIONCANCEL_ENTRY ); + LOG_LINE + LOG_FUNC + SendReceive(EUsbCancelObserver); - OstTraceFunctionExit0( RUSB_DEVICESTATENOTIFICATIONCANCEL_EXIT ); } EXPORT_C void RUsb::StateNotification(TUint aEventMask, TUsbDeviceState& aState, TRequestStatus& aStatus) { - OstTraceFunctionEntry0( RUSB_STATENOTIFICATION_ENTRY ); + LOG_LINE + LOG_FUNC + DeviceStateNotification(aEventMask, aState, aStatus); - OstTraceFunctionExit0( RUSB_STATENOTIFICATION_EXIT ); } EXPORT_C void RUsb::StateNotificationCancel() { - OstTraceFunctionEntry0( RUSB_STATENOTIFICATIONCANCEL_ENTRY ); + LOG_LINE + LOG_FUNC + DeviceStateNotificationCancel(); - OstTraceFunctionExit0( RUSB_STATENOTIFICATIONCANCEL_EXIT ); } EXPORT_C void RUsb::TryStart(TInt aPersonalityId, TRequestStatus& aStatus) { - OstTraceFunctionEntry0( RUSB_TRYSTART_ENTRY ); + LOG_LINE + LOG_FUNC TIpcArgs ipcArgs(aPersonalityId); SendReceive(EUsbTryStart, ipcArgs, aStatus); - OstTraceFunctionExit0( RUSB_TRYSTART_EXIT ); } EXPORT_C void RUsb::TryStop(TRequestStatus& aStatus) { - OstTraceFunctionEntry0( RUSB_TRYSTOP_ENTRY ); + LOG_LINE + LOG_FUNC + SendReceive(EUsbTryStop, aStatus); - OstTraceFunctionExit0( RUSB_TRYSTOP_EXIT ); } EXPORT_C TInt RUsb::CancelInterest(TUsbReqType aMessageId) { - OstTraceFunctionEntry0( RUSB_CANCELINTEREST_ENTRY ); + LOG_LINE + LOG_FUNC TInt messageId; switch (aMessageId) @@ -328,7 +338,9 @@ EXPORT_C TInt RUsb::GetDescription(TInt aPersonalityId, HBufC*& aLocalizedPersonalityDescriptor) { - OstTraceFunctionEntry0( RUSB_GETDESCRIPTION_ENTRY ); + LOG_LINE + LOG_FUNC + TInt ret = KErrNone; // caller is responsible for freeing up memory allocatd for aLocalizedPersonalityDescriptor TRAP(ret, aLocalizedPersonalityDescriptor = HBufC::NewL(KUsbStringDescStringMaxSize)); @@ -345,31 +357,31 @@ aLocalizedPersonalityDescriptor = NULL; } - OstTraceFunctionExit0( RUSB_GETDESCRIPTION_EXIT ); return ret; } EXPORT_C TInt RUsb::GetCurrentPersonalityId(TInt& aPersonalityId) { - OstTraceFunctionEntry0( RUSB_GETCURRENTPERSONALITYID_ENTRY ); + LOG_LINE + LOG_FUNC TPckg pkg0(aPersonalityId); TInt ret = SendReceive(EUsbGetCurrentPersonalityId, TIpcArgs(&pkg0)); aPersonalityId = static_cast(pkg0()); - OstTraceFunctionExit0( RUSB_GETCURRENTPERSONALITYID_EXIT ); return ret; } EXPORT_C TInt RUsb::GetSupportedClasses(TInt aPersonalityId, RArray& aClassUids) { - OstTraceFunctionEntry0( RUSB_GETSUPPORTEDCLASSES_ENTRY ); + LOG_LINE + LOG_FUNC + TInt ret = KErrNone; HBufC8* buf = NULL; // +1 for the actual count of personality ids TRAP(ret, buf = HBufC8::NewL((KUsbMaxSupportedClasses + 1)*sizeof (TInt32))); if (ret != KErrNone) { - OstTraceFunctionExit0( RUSB_GETSUPPORTEDCLASSES_EXIT ); return ret; } @@ -382,7 +394,6 @@ if (!recvedIds) { delete buf; - OstTraceFunctionExit0( RUSB_GETSUPPORTEDCLASSES_EXIT_DUP1 ); return KErrCorrupt; } @@ -421,13 +432,13 @@ } delete buf; - OstTraceFunctionExit0( RUSB_GETSUPPORTEDCLASSES_EXIT_DUP2 ); return ret; } EXPORT_C TInt RUsb::ClassSupported(TInt aPersonalityId, TUid aClassUid, TBool& aSupported) { - OstTraceFunctionEntry0( RUSB_CLASSSUPPORTED_ENTRY ); + LOG_LINE + LOG_FUNC TPckg pkg2(aSupported); TIpcArgs ipcArgs(aPersonalityId, aClassUid.iUid, &pkg2); @@ -439,20 +450,20 @@ aSupported = static_cast(pkg2()); } - OstTraceFunctionExit0( RUSB_CLASSSUPPORTED_EXIT ); return ret; } EXPORT_C TInt RUsb::GetPersonalityIds(RArray& aPersonalityIds) { - OstTraceFunctionEntry0( RUSB_GETPERSONALITYIDS_ENTRY ); + LOG_LINE + LOG_FUNC + TInt ret = KErrNone; HBufC8* buf = NULL; // +1 for the actual count of personality ids TRAP(ret, buf = HBufC8::NewL((KUsbMaxSupportedPersonalities + 1)*sizeof (TInt))); if (ret != KErrNone) { - OstTraceFunctionExit0( RUSB_GETPERSONALITYIDS_EXIT ); return ret; } @@ -465,7 +476,6 @@ if (!recvedIds) { delete buf; - OstTraceFunctionExit0( RUSB_GETPERSONALITYIDS_EXIT_DUP1 ); return KErrCorrupt; } @@ -505,7 +515,6 @@ } delete buf; - OstTraceFunctionExit0( RUSB_GETPERSONALITYIDS_EXIT_DUP2 ); return ret; } @@ -558,14 +567,14 @@ } EXPORT_C void panic() - { - OstTrace1( TRACE_FATAL, RUSB_PANIC, "::panic;Panic reason=%d", EUsbPanicRemovedExport ); - User::Panic(KUsbCliPncCat, EUsbPanicRemovedExport); + { + _USB_PANIC(KUsbCliPncCat, EUsbPanicRemovedExport); } EXPORT_C TInt RUsb::SetCtlSessionMode(TBool aValue) { - OstTraceFunctionEntry0( RUSB_SETCTLSESSIONMODE_ENTRY ); + LOG_LINE + LOG_FUNC TPckg pkg(aValue); return SendReceive(EUsbSetCtlSessionMode, TIpcArgs(&pkg)); @@ -573,82 +582,94 @@ EXPORT_C TInt RUsb::BusRequest() { - OstTraceFunctionEntry0( RUSB_BUSREQUEST_ENTRY ); + LOG_LINE + LOG_FUNC return SendReceive(EUsbBusRequest); } EXPORT_C TInt RUsb::BusRespondSrp() { - OstTraceFunctionEntry0( RUSB_BUSRESPONDSRP_ENTRY ); + LOG_LINE + LOG_FUNC return SendReceive(EUsbBusRespondSrp); } EXPORT_C TInt RUsb::BusClearError() { - OstTraceFunctionEntry0( RUSB_BUSCLEARERROR_ENTRY ); + LOG_LINE + LOG_FUNC + return SendReceive(EUsbBusClearError); } EXPORT_C TInt RUsb::BusDrop() { - OstTraceFunctionEntry0( RUSB_BUSDROP_ENTRY ); + LOG_LINE + LOG_FUNC + return SendReceive(EUsbBusDrop); } EXPORT_C void RUsb::MessageNotification(TRequestStatus& aStatus, TInt& aMessage) { - OstTraceFunctionEntry0( RUSB_MESSAGENOTIFICATION_ENTRY ); + LOG_LINE + LOG_FUNC + iMessagePkg.Set((TUint8*)&aMessage, sizeof(TInt), sizeof(TInt)); SendReceive(EUsbRegisterMessageObserver, TIpcArgs(&iMessagePkg), aStatus); - OstTraceFunctionExit0( RUSB_MESSAGENOTIFICATION_EXIT ); } EXPORT_C void RUsb::MessageNotificationCancel() { - OstTraceFunctionEntry0( RUSB_MESSAGENOTIFICATIONCANCEL_ENTRY ); + LOG_LINE + LOG_FUNC + SendReceive(EUsbCancelMessageObserver); - OstTraceFunctionExit0( RUSB_MESSAGENOTIFICATIONCANCEL_EXIT ); } EXPORT_C void RUsb::HostEventNotification(TRequestStatus& aStatus, TDeviceEventInformation& aDeviceInformation) { - OstTraceFunctionEntry0( RUSB_HOSTEVENTNOTIFICATION_ENTRY ); + LOG_LINE + LOG_FUNC iHostPkg.Set((TUint8*)&aDeviceInformation, sizeof(TDeviceEventInformation), sizeof(TDeviceEventInformation)); SendReceive(EUsbRegisterHostObserver, TIpcArgs(&iHostPkg), aStatus); - OstTraceFunctionExit0( RUSB_HOSTEVENTNOTIFICATION_EXIT ); } EXPORT_C void RUsb::HostEventNotificationCancel() { - OstTraceFunctionEntry0( RUSB_HOSTEVENTNOTIFICATIONCANCEL_ENTRY ); + LOG_LINE + LOG_FUNC + SendReceive(EUsbCancelHostObserver); - OstTraceFunctionExit0( RUSB_HOSTEVENTNOTIFICATIONCANCEL_EXIT ); } EXPORT_C TInt RUsb::EnableFunctionDriverLoading() { - OstTraceFunctionEntry0( RUSB_ENABLEFUNCTIONDRIVERLOADING_ENTRY ); + LOG_LINE + LOG_FUNC return SendReceive(EUsbEnableFunctionDriverLoading); } EXPORT_C void RUsb::DisableFunctionDriverLoading() { - OstTraceFunctionEntry0( RUSB_DISABLEFUNCTIONDRIVERLOADING_ENTRY ); + LOG_LINE + LOG_FUNC + SendReceive(EUsbDisableFunctionDriverLoading); - OstTraceFunctionExit0( RUSB_DISABLEFUNCTIONDRIVERLOADING_EXIT ); } EXPORT_C TInt RUsb::GetSupportedLanguages(TUint aDeviceId, RArray& aLangIds) { - OstTraceFunctionEntry0( RUSB_GETSUPPORTEDLANGUAGES_ENTRY ); + LOG_LINE + LOG_FUNC aLangIds.Reset(); @@ -658,7 +679,6 @@ TRAP(ret, buf = HBufC8::NewL((KUsbMaxSupportedLanguageIds + 1)*sizeof (TUint))); if (ret != KErrNone) { - OstTraceFunctionExit0( RUSB_GETSUPPORTEDLANGUAGES_EXIT ); return ret; } @@ -671,7 +691,6 @@ if (!recvedIds) { delete buf; - OstTraceFunctionExit0( RUSB_GETSUPPORTEDLANGUAGES_EXIT_DUP1 ); return KErrCorrupt; } @@ -689,26 +708,30 @@ } delete buf; - OstTraceFunctionExit0( RUSB_GETSUPPORTEDLANGUAGES_EXIT_DUP2 ); return ret; } EXPORT_C TInt RUsb::GetManufacturerStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString) { - OstTraceFunctionEntry0( RUSB_GETMANUFACTURERSTRINGDESCRIPTOR_ENTRY ); + LOG_LINE + LOG_FUNC return SendReceive(EUsbGetManufacturerStringDescriptor, TIpcArgs(aDeviceId, aLangId, &aString)); } EXPORT_C TInt RUsb::GetProductStringDescriptor(TUint aDeviceId, TUint aLangId, TName& aString) { - OstTraceFunctionEntry0( RUSB_GETPRODUCTSTRINGDESCRIPTOR_ENTRY ); + LOG_LINE + LOG_FUNC + return SendReceive(EUsbGetProductStringDescriptor, TIpcArgs(aDeviceId, aLangId, &aString)); } EXPORT_C TInt RUsb::GetOtgDescriptor(TUint aDeviceId, TOtgDescriptor& aDescriptor) { - OstTraceFunctionEntry0( RUSB_GETOTGDESCRIPTOR_ENTRY ); + LOG_LINE + LOG_FUNC + TPckg otgDescPkg(aDescriptor); TIpcArgs args; @@ -721,22 +744,40 @@ EXPORT_C TInt RUsb::RequestSession() { - OstTraceFunctionEntry0( RUSB_REQUESTSESSION_ENTRY ); + LOG_LINE + LOG_FUNC return SendReceive(EUsbRequestSession); } -EXPORT_C TInt RUsb::GetDetailedDescription(TInt /*aPersonalityId*/, HBufC*& /*aLocalizedPersonalityDescriptor*/) +EXPORT_C TInt RUsb::GetDetailedDescription(TInt aPersonalityId, HBufC*& aLocalizedPersonalityDescriptor) { - OstTraceFunctionEntry0( RUSB_GETDETAILEDDESCRIPTION_ENTRY ); - //This API has been deprecated - OstTraceFunctionExit0( RUSB_GETDETAILEDDESCRIPTION_EXIT ); - return KErrNotSupported; + LOG_LINE + LOG_FUNC + + TInt ret = KErrNone; + // caller is responsible for freeing up memory allocated for aLocalizedPersonalityDescriptor + TRAP(ret, aLocalizedPersonalityDescriptor = HBufC::NewL(KUsbStringDescStringMaxSize)); + if (ret == KErrNone) + { + TPtr ptr = aLocalizedPersonalityDescriptor->Des(); + TIpcArgs ipcArgs(0, &ptr); + ipcArgs.Set(0, aPersonalityId); + ret = SendReceive(EUsbGetDetailedDescription, ipcArgs); + } + else + { + // just in case caller tries to free the memory before checking the return code + aLocalizedPersonalityDescriptor = NULL; + } + + return ret; } EXPORT_C TInt RUsb::GetPersonalityProperty(TInt aPersonalityId, TUint32& aProperty) { - OstTraceFunctionEntry0( RUSB_GETPERSONALITYPROPERTY_ENTRY ); + LOG_LINE + LOG_FUNC TPckg pkg(aProperty); TInt ret = SendReceive(EUsbGetPersonalityProperty, TIpcArgs(aPersonalityId, &pkg)); @@ -744,7 +785,6 @@ { aProperty = static_cast(pkg()); } - OstTraceFunctionExit0( RUSB_GETPERSONALITYPROPERTY_EXIT ); return ret; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/client/group/Usbman.mmp --- a/usbmgmt/usbmgr/usbman/client/group/Usbman.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/client/group/Usbman.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -34,14 +34,14 @@ sourcepath ../SRC source RUsb.cpp -userinclude ../../server/public -userinclude ../traces - +userinclude ../../server/public OS_LAYER_SYSTEMINCLUDE_SYMBIAN library euser.lib +#include + VENDORID 0x70000001 UNPAGED diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/client/group/Usbman_over_dummyusbdi.mmp --- a/usbmgmt/usbmgr/usbman/client/group/Usbman_over_dummyusbdi.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/client/group/Usbman_over_dummyusbdi.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -38,11 +38,12 @@ source RUsb.cpp OS_LAYER_SYSTEMINCLUDE_SYMBIAN -userinclude ../../server/public -userinclude ../traces +userinclude ../../server/public library euser.lib +#include + VENDORID 0x70000001 UNPAGED diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/client/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/usbman/client/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/client/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/usbman/client/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,107 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_FATAL=0x81 -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_FATAL[0x81]_RUSB_PANIC=0x1 -[TRACE]TRACE_FLOW[0x8A]_RUSB_BUSCLEARERROR_ENTRY=0x3a -[TRACE]TRACE_FLOW[0x8A]_RUSB_BUSDROP_ENTRY=0x3b -[TRACE]TRACE_FLOW[0x8A]_RUSB_BUSREQUEST_ENTRY=0x38 -[TRACE]TRACE_FLOW[0x8A]_RUSB_BUSRESPONDSRP_ENTRY=0x39 -[TRACE]TRACE_FLOW[0x8A]_RUSB_CANCELINTEREST_ENTRY=0x28 -[TRACE]TRACE_FLOW[0x8A]_RUSB_CLASSSUPPORTED_ENTRY=0x31 -[TRACE]TRACE_FLOW[0x8A]_RUSB_CLASSSUPPORTED_EXIT=0x32 -[TRACE]TRACE_FLOW[0x8A]_RUSB_CONNECT_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x8A]_RUSB_CONNECT_EXIT=0x6 -[TRACE]TRACE_FLOW[0x8A]_RUSB_CONNECT_EXIT_DUP1=0x7 -[TRACE]TRACE_FLOW[0x8A]_RUSB_CONNECT_EXIT_DUP2=0x8 -[TRACE]TRACE_FLOW[0x8A]_RUSB_DEVICESTATENOTIFICATIONCANCEL_ENTRY=0x1e -[TRACE]TRACE_FLOW[0x8A]_RUSB_DEVICESTATENOTIFICATIONCANCEL_EXIT=0x1f -[TRACE]TRACE_FLOW[0x8A]_RUSB_DEVICESTATENOTIFICATION_ENTRY=0x1c -[TRACE]TRACE_FLOW[0x8A]_RUSB_DEVICESTATENOTIFICATION_EXIT=0x1d -[TRACE]TRACE_FLOW[0x8A]_RUSB_DISABLEFUNCTIONDRIVERLOADING_ENTRY=0x45 -[TRACE]TRACE_FLOW[0x8A]_RUSB_DISABLEFUNCTIONDRIVERLOADING_EXIT=0x46 -[TRACE]TRACE_FLOW[0x8A]_RUSB_ENABLEFUNCTIONDRIVERLOADING_ENTRY=0x44 -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETCURRENTPERSONALITYID_ENTRY=0x2b -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETCURRENTPERSONALITYID_EXIT=0x2c -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETCURRENTSTATE_ENTRY=0x15 -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETDESCRIPTION_ENTRY=0x29 -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETDESCRIPTION_EXIT=0x2a -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETDETAILEDDESCRIPTION_ENTRY=0x4f -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETDETAILEDDESCRIPTION_EXIT=0x50 -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETDEVICESTATE_ENTRY=0x1a -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETDEVICESTATE_EXIT=0x1b -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETMANUFACTURERSTRINGDESCRIPTOR_ENTRY=0x4b -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETOTGDESCRIPTOR_ENTRY=0x4d -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETPERSONALITYIDS_ENTRY=0x33 -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETPERSONALITYIDS_EXIT=0x34 -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETPERSONALITYIDS_EXIT_DUP1=0x35 -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETPERSONALITYIDS_EXIT_DUP2=0x36 -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETPERSONALITYPROPERTY_ENTRY=0x51 -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETPERSONALITYPROPERTY_EXIT=0x52 -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETPRODUCTSTRINGDESCRIPTOR_ENTRY=0x4c -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETSERVICESTATE_ENTRY=0x13 -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETSERVICESTATE_EXIT=0x14 -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETSUPPORTEDCLASSES_ENTRY=0x2d -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETSUPPORTEDCLASSES_EXIT=0x2e -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETSUPPORTEDCLASSES_EXIT_DUP1=0x2f -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETSUPPORTEDCLASSES_EXIT_DUP2=0x30 -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETSUPPORTEDLANGUAGES_ENTRY=0x47 -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETSUPPORTEDLANGUAGES_EXIT=0x48 -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETSUPPORTEDLANGUAGES_EXIT_DUP1=0x49 -[TRACE]TRACE_FLOW[0x8A]_RUSB_GETSUPPORTEDLANGUAGES_EXIT_DUP2=0x4a -[TRACE]TRACE_FLOW[0x8A]_RUSB_HOSTEVENTNOTIFICATIONCANCEL_ENTRY=0x42 -[TRACE]TRACE_FLOW[0x8A]_RUSB_HOSTEVENTNOTIFICATIONCANCEL_EXIT=0x43 -[TRACE]TRACE_FLOW[0x8A]_RUSB_HOSTEVENTNOTIFICATION_ENTRY=0x40 -[TRACE]TRACE_FLOW[0x8A]_RUSB_HOSTEVENTNOTIFICATION_EXIT=0x41 -[TRACE]TRACE_FLOW[0x8A]_RUSB_MESSAGENOTIFICATIONCANCEL_ENTRY=0x3e -[TRACE]TRACE_FLOW[0x8A]_RUSB_MESSAGENOTIFICATIONCANCEL_EXIT=0x3f -[TRACE]TRACE_FLOW[0x8A]_RUSB_MESSAGENOTIFICATION_ENTRY=0x3c -[TRACE]TRACE_FLOW[0x8A]_RUSB_MESSAGENOTIFICATION_EXIT=0x3d -[TRACE]TRACE_FLOW[0x8A]_RUSB_REQUESTSESSION_ENTRY=0x4e -[TRACE]TRACE_FLOW[0x8A]_RUSB_RUSB_CONS_ENTRY=0x53 -[TRACE]TRACE_FLOW[0x8A]_RUSB_RUSB_CONS_EXIT=0x54 -[TRACE]TRACE_FLOW[0x8A]_RUSB_RUSB_DES_ENTRY=0x55 -[TRACE]TRACE_FLOW[0x8A]_RUSB_RUSB_DES_EXIT=0x56 -[TRACE]TRACE_FLOW[0x8A]_RUSB_SERVICESTATENOTIFICATIONCANCEL_ENTRY=0x18 -[TRACE]TRACE_FLOW[0x8A]_RUSB_SERVICESTATENOTIFICATIONCANCEL_EXIT=0x19 -[TRACE]TRACE_FLOW[0x8A]_RUSB_SERVICESTATENOTIFICATION_ENTRY=0x16 -[TRACE]TRACE_FLOW[0x8A]_RUSB_SERVICESTATENOTIFICATION_EXIT=0x17 -[TRACE]TRACE_FLOW[0x8A]_RUSB_SETCTLSESSIONMODE_ENTRY=0x37 -[TRACE]TRACE_FLOW[0x8A]_RUSB_STARTCANCEL_ENTRY=0xb -[TRACE]TRACE_FLOW[0x8A]_RUSB_STARTCANCEL_EXIT=0xc -[TRACE]TRACE_FLOW[0x8A]_RUSB_START_ENTRY=0x9 -[TRACE]TRACE_FLOW[0x8A]_RUSB_START_EXIT=0xa -[TRACE]TRACE_FLOW[0x8A]_RUSB_STATENOTIFICATIONCANCEL_ENTRY=0x22 -[TRACE]TRACE_FLOW[0x8A]_RUSB_STATENOTIFICATIONCANCEL_EXIT=0x23 -[TRACE]TRACE_FLOW[0x8A]_RUSB_STATENOTIFICATION_ENTRY=0x20 -[TRACE]TRACE_FLOW[0x8A]_RUSB_STATENOTIFICATION_EXIT=0x21 -[TRACE]TRACE_FLOW[0x8A]_RUSB_STOPCANCEL_ENTRY=0x11 -[TRACE]TRACE_FLOW[0x8A]_RUSB_STOPCANCEL_EXIT=0x12 -[TRACE]TRACE_FLOW[0x8A]_RUSB_STOP_ENTRY=0xd -[TRACE]TRACE_FLOW[0x8A]_RUSB_STOP_EXIT=0xe -[TRACE]TRACE_FLOW[0x8A]_RUSB_STOP_TREQUESTSTATUS_ENTRY=0x57 -[TRACE]TRACE_FLOW[0x8A]_RUSB_STOP_TREQUESTSTATUS_EXIT=0x58 -[TRACE]TRACE_FLOW[0x8A]_RUSB_TRYSTART_ENTRY=0x24 -[TRACE]TRACE_FLOW[0x8A]_RUSB_TRYSTART_EXIT=0x25 -[TRACE]TRACE_FLOW[0x8A]_RUSB_TRYSTOP_ENTRY=0x26 -[TRACE]TRACE_FLOW[0x8A]_RUSB_TRYSTOP_EXIT=0x27 -[TRACE]TRACE_NORMAL[0x86]_RUSB_STARTSERVER=0xd -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_RUSB_MESSAGENOTIFICATION_DUP6=0x1 -[[OBSOLETE]][TRACE]TRACE_ERROR[0x82]_RUSB_MESSAGENOTIFICATION_DUP9=0x2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RUSB_RUSB_ENTRY=0x1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RUSB_RUSB_ENTRY_DUP1=0x3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RUSB_RUSB_EXIT=0x2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RUSB_RUSB_EXIT_DUP1=0x4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RUSB_STOP_ENTRY_DUP1=0xf -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_RUSB_STOP_EXIT_DUP1=0x10 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_RUSB_MESSAGENOTIFICATION=0x2 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_RUSB_MESSAGENOTIFICATION_DUP1=0x9 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_RUSB_MESSAGENOTIFICATION_DUP11=0xb -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_RUSB_MESSAGENOTIFICATION_DUP2=0x3 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_RUSB_MESSAGENOTIFICATION_DUP3=0x5 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_RUSB_MESSAGENOTIFICATION_DUP4=0x7 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_RUSB_MESSAGENOTIFICATION_DUP5=0x8 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_RUSB_MESSAGENOTIFICATION_DUP7=0xa -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_RUSB_MESSAGENOTIFICATION_DUP8=0x6 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]__PANIC=0xc -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]__STARTSERVER=0x1 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/INC/CPersonality.h --- a/usbmgmt/usbmgr/usbman/server/INC/CPersonality.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/INC/CPersonality.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /** -* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-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" @@ -29,102 +29,60 @@ #include #include "CUsbDevice.h" - -/** - * The CPersonalityConfigurations class keep all information of the table - * "Configuration" of USB cenrep - */ - -NONSHARABLE_CLASS(CPersonalityConfigurations) : public CBase - { -public: - /*USB Classes*/ - class TUsbClasses - { - public: - TUid iClassUid; - TInt iFeatureId; // Indicates the class is configurable or not. - }; -public: - void SetPersonalityId(TInt aPersonalityId); - void SetConfigId(TInt aConfigId); - inline const RArray& Classes() const; - void AppendClassesL(const TUsbClasses& aClasses ); - ~CPersonalityConfigurations(); - -private: - TInt iPersonalityId; /*Personality Id*/ - TInt iConfigId; /*Configuration Id*/ - RArray iClasses; /*Class array*/ - }; - NONSHARABLE_CLASS(CPersonality) : public CBase { public: static CPersonality* NewL(); ~CPersonality(); - const RArray& SupportedClasses() const; - TBool ClassSupported(TUid aClassId) const; + TInt PersonalityId() const; + const RArray& SupportedClasses() const; + TInt ClassSupported(TUid aClassId) const; + const CUsbDevice::TUsbDeviceDescriptor& DeviceDescriptor() const; + CUsbDevice::TUsbDeviceDescriptor& DeviceDescriptor(); + const TDesC* Manufacturer() const; + const TDesC* Product() const; + const TDesC* Description() const; + TInt AddSupportedClasses(TUid aClassId); + void SetId(TInt aId); + void SetManufacturer(const TDesC* aManufacturer); + void SetProduct(const TDesC* aProduct); + void SetDescription(const TDesC* aDescription); static TInt Compare(const TUid& aFirst, const TUid& aSecond); - inline TInt Version() const; - void SetVersion(TInt version); - - inline TUint32 Property() const; - void SetProperty(TUint32 aProperty); - - inline TUint8 DeviceClass() const; - void SetDeviceClass(TUint8 aDeviceClass); - - inline TUint8 DeviceSubClass() const; - void SetDeviceSubClass(TUint8 aDeviceSubClass); + const TDesC* DetailedDescription() const; + void SetDetailedDescription(const TDesC* aDetailedDescription); - inline TUint8 DeviceProtocol() const; - void SetDeviceProtocol(TUint8 aDeviceProtocol); - - inline TUint8 NumConfigurations() const; - void SetNumConfigurations(TUint8 aNumConfigurations); - - inline TUint16 ProductId() const; - void SetProductId(TUint16 aProductId); - - inline TInt FeatureId() const; - void SetFeatureId(TInt aFeatureId); - - inline TUint16 BcdDevice() const; - void SetBcdDevice(TUint16 aBcdDevice); - - inline TInt PersonalityId() const; - void SetPersonalityId(TInt aPersonalityId); - - inline const TDesC* Description() const; - void SetDescription(const TDesC* aDescription); - - inline const RPointerArray& PersonalityConfigs() const; - void AppendPersonalityConfigsL(const CPersonalityConfigurations *aPersonalityConfig ); + TUint32 Property() const; + void SetProperty(TUint32 aProperty); + + TInt Version() const; + void SetVersion(TInt version); private: CPersonality(); void ConstructL(); - + private: - TInt iVersion; - TUint32 iProperty; - TUint8 iDeviceClass; - TUint8 iDeviceSubClass; - TUint8 iDeviceProtocol; - TUint8 iNumConfigurations; - TUint16 iProductId; - TInt iFeatureId; - TUint16 iBcdDevice; - TInt iPersonalityId; // personality id - HBufC* iDescription; // Own this Personality's description - RPointerArray iPersonalityConfigs; + // personality id + TInt iId; + // USB class ids + RArray iClassUids; + // textual description of manufacturer + HBufC* iManufacturer; + // textual description of product + HBufC* iProduct; + // textual description of personality + HBufC* iDescription; + // USB device descriptor struct + CUsbDevice::TUsbDeviceDescriptor iDeviceDescriptor; + // detailed textual description of personality + HBufC* iDetailedDescription; + + TInt iVersion; + TUint32 iProperty; }; - - #include "CPersonality.inl" #endif // __CPERSONALITY_H__ diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/INC/CPersonality.inl --- a/usbmgmt/usbmgr/usbman/server/INC/CPersonality.inl Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/INC/CPersonality.inl Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /** -* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-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" @@ -28,6 +28,79 @@ /** * @internalComponent + * @return personality id + */ +inline TInt CPersonality::PersonalityId() const + { + return iId; + } + +/** + * @internalComponent + * @return supported class uids + */ +inline const RArray& CPersonality::SupportedClasses() const + { + return iClassUids; + } + +/** + * @internalComponent + * @return a const reference to device descriptor + */ +inline const CUsbDevice::TUsbDeviceDescriptor& CPersonality::DeviceDescriptor() const + { + return iDeviceDescriptor; + } + +/** + * @internalComponent + * @return a const reference to device descriptor + */ +inline CUsbDevice::TUsbDeviceDescriptor& CPersonality::DeviceDescriptor() + { + return iDeviceDescriptor; + } + +/** + * @internalComponent + * @return a const pointer to manufacturer string + */ +inline const TDesC* CPersonality::Manufacturer() const + { + return iManufacturer; + } + +/** + * @internalComponent + * @return a const pointer to product string + */ +inline const TDesC* CPersonality::Product() const + { + return iProduct; + } + +/** + * @internalComponent + * @return a const pointer to description string + */ +inline const TDesC* CPersonality::Description() const + { + return iDescription; + } + +/** + * @internalComponent + * @return a const pointer to detailed description string + */ +inline const TDesC* CPersonality::DetailedDescription() const + { + return iDetailedDescription; + } + + +/** + * @internalComponent * @return version */ inline TInt CPersonality::Version() const @@ -43,106 +116,5 @@ { return iProperty; } - -/** - * @internalComponent - * @return the Device Class information - */ -inline TUint8 CPersonality::DeviceClass() const - { - return iDeviceClass; - } - -/** - * @internalComponent - * @return the Device Sub Class information - */ -inline TUint8 CPersonality::DeviceSubClass() const - { - return iDeviceSubClass; - } - -/** - * @internalComponent - * @return the Device Protocol information - */ -inline TUint8 CPersonality::DeviceProtocol() const - { - return iDeviceProtocol; - } - -/** - * @internalComponent - * @return the Configurations Number information - */ -inline TUint8 CPersonality::NumConfigurations() const - { - return iNumConfigurations; - } - -/** - * @internalComponent - * @return the Product Id information - */ -inline TUint16 CPersonality::ProductId() const - { - return iProductId; - } - -/** - * @internalComponent - * @return the Feature Id information - */ -inline TInt CPersonality::FeatureId() const - { - return iFeatureId; - } - -/** - * @internalComponent - * @return the Feature Id information - */ -inline TUint16 CPersonality::BcdDevice() const - { - return iBcdDevice; - } - -/** - * @internalComponent - * @return personality id - */ -inline TInt CPersonality::PersonalityId() const - { - return iPersonalityId; - } - -/** - * @internalComponent - * @return a const pointer to description string - */ -inline const TDesC* CPersonality::Description() const - { - return iDescription; - } - -/** - * @internalComponent - * @return a const pointer to Personality Configs - */ -inline const RPointerArray& CPersonality::PersonalityConfigs() const - { - return iPersonalityConfigs; - } - - -/** - * @internalComponent - * @return a const to Classes - */ -inline const RArray & CPersonalityConfigurations::Classes() const - { - return iClasses; - } - #endif // __PERSONALITY_INL__ diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/INC/CUsbDevice.h --- a/usbmgmt/usbmgr/usbman/server/INC/CUsbDevice.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/INC/CUsbDevice.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /** -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -35,16 +35,12 @@ #include #include - - class CUsbDeviceStateWatcher; class CUsbClassControllerBase; class CUsbServer; class MUsbDeviceNotify; class CPersonality; class CUsbmanExtensionPlugin; -class CUsbManCenRepManager; - const TUid KUidUsbPlugIns = {0x101fbf21}; @@ -78,24 +74,14 @@ TUint8 iDeviceProtocol; TUint8 iMaxPacketSize; TUint16 iIdVendor; - TUint16 iProductId; + TUint16 iIdProduct; TUint16 iBcdDevice; TUint8 iManufacturer; TUint8 iProduct; TUint8 iSerialNumber; TUint8 iNumConfigurations; }; - - /** - * See Central Repository - */ - class TUsbDeviceConfiguration - { - public: - TUint16 iVendorId; - HBufC* iManufacturerName; - HBufC* iProductName; - }; + public: static CUsbDevice* NewL(CUsbServer& aUsbServer); virtual ~CUsbDevice(); @@ -129,7 +115,6 @@ void ReadPersonalitiesL(); void SetDefaultPersonalityL(); void LoadFallbackClassControllersL(); - void ConvertUidsL(const TDesC& aStr, RArray& aUidArray); public: // From CActive void RunL(); @@ -152,20 +137,22 @@ private: void SetDeviceDescriptorL(); + void SetUsbDeviceSettingsL(TUsbDeviceDescriptor& aDeviceDescriptor); void SetUsbDeviceSettingsDefaultsL(TUsbDeviceDescriptor& aDeviceDescriptor); void SelectClassControllersL(); void SetCurrentPersonalityL(TInt aPersonalityId); void SetUsbDeviceSettingsFromPersonalityL(CUsbDevice::TUsbDeviceDescriptor& aDeviceDescriptor); void ResourceFileNameL(TFileName& aFileName); void CreateClassControllersL(const RArray& aClassUids); + void ConvertUidsL(const TDesC& aStr, RArray& aUidArray); TInt PowerUpAndConnect(); -#ifdef _DEBUG +#ifdef __FLOG_ACTIVE void PrintDescriptor(CUsbDevice::TUsbDeviceDescriptor& aDeviceDescriptor); #endif void InstantiateExtensionPluginsL(); private: RPointerArray iSupportedClasses; - RPointerArray iObservers; + RPointerArray iObservers; RPointerArray iExtensionPlugins; TUsbDeviceState iDeviceState; TUsbServiceState iServiceState; @@ -180,8 +167,6 @@ TBool iPersonalityCfged; TBool iUdcSupportsCableDetectWhenUnpowered; HBufC16* iDefaultSerialNumber; - CUsbManCenRepManager* iCenRepManager; // Own CenRepManager instance - TUsbDeviceConfiguration iDeviceConfiguration; REComSession* iEcom; // Not to be deleted, only closed! }; diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/INC/CUsbSession.h --- a/usbmgmt/usbmgr/usbman/server/INC/CUsbSession.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/INC/CUsbSession.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /** -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -97,6 +97,7 @@ TInt GetSupportedClasses(const RMessage2& aMessage); TInt GetPersonalityIds(const RMessage2& aMessage); TInt GetDescription(const RMessage2& aMessage); + TInt GetDetailedDescription(const RMessage2& aMessage); TInt ClassSupported(const RMessage2& aMessage); TInt GetPersonalityProperty(const RMessage2& aMessage); diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/INC/UsbSettings.h --- a/usbmgmt/usbmgr/usbman/server/INC/UsbSettings.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/INC/UsbSettings.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /** -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -50,11 +50,16 @@ _LIT(KUsbDefaultSerialNumber, "0123456789"); _LIT(KUsbDefaultConfig, "First and Last and Always"); -enum TUsbManagerSupportedVersion +const TInt KUsbManagerResourceVersion = 0; +const TInt KUsbManagerResourceVersionNew = 1; + +enum TUsbManagerResourceVersion { - TUsbManagerSupportedVersionMin = 4, - TUsbManagerSupportedVersionFour = 4, - TUsbManagerSupportedVersionMax = 4 + EUsbManagerResourceVersionOne = 1, + EUsbManagerResourceVersionTwo = 2, + EUsbManagerResourceVersionThree = 3 }; +_LIT(KUsbManagerResource, "z:\\private\\101fe1db\\usbman.rsc"); + #endif // __USBSETTINGS_H__ diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/INC/UsbmanServerSecurityPolicy.h --- a/usbmgmt/usbmgr/usbman/server/INC/UsbmanServerSecurityPolicy.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/INC/UsbmanServerSecurityPolicy.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-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" @@ -105,6 +105,7 @@ /** EUsbGetOtgDescriptor */ /** EUsbDbgAlloc */ /** EUsbRequestSession */ + /** EUsbGetDetailedDescription */ /** EUsbGetPersonalityProperty */ CPolicyServer::ENotSupported, /** EUsbGetPersonalityProperty + 1 to KMaxTInt */ diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/INC/usbmancenrepmanager.h --- a/usbmgmt/usbmgr/usbman/server/INC/usbmancenrepmanager.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,72 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** - @file -*/ - -#ifndef USBMANCENREPMANAGER_H -#define USBMANCENREPMANAGER_H - -#include - -class CRepository; -class CPersonality; -class TUsbDeviceDescriptor; -class CUsbDevice; - -/** Helper class for tasks related to central repository. It reads settings from - * appropriate cenrep keys */ -NONSHARABLE_CLASS( CUsbManCenRepManager ) : public CBase -{ - public: - - /** Two-phased constructor. */ - static CUsbManCenRepManager* NewL(CUsbDevice& aUsbDevice); - - /** Destructor. */ - virtual ~CUsbManCenRepManager(); - - void ReadPersonalitiesL(RPointerArray& aPersonalities); - - void ReadDeviceConfigurationL(CUsbDevice::TUsbDeviceConfiguration& aDeviceConfig); - - private: - CUsbManCenRepManager(CUsbDevice& aUsbDevice); - - void ConstructL(); - - void CheckSignatureL(); - - void ReadConfigurationsForPersonalityL(TInt aPersonalityId, CPersonality& aPersonality); - - HBufC* ReadStringKeyLC( TUint32 aKeyId ); - TInt ReadKeyL ( TUint32 aKeyId ); - - TBool IsClassConfigurableL(TUint aClassId, TInt& aFeatureId); - TBool IsFeatureSupportedL(TInt aFeatureId); - - private: - /** Own repository instance */ - CRepository* iRepository; - /**reference to CUsbDevice*/ - CUsbDevice& iUsbDevice; - /*the USB Configuratiron signature*/ - TInt iSignature; -}; - -#endif /*USBMANCENREPMANAGER_H*/ diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/INC/usbmanprivatecrkeys.h --- a/usbmgmt/usbmgr/usbman/server/INC/usbmanprivatecrkeys.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,73 +0,0 @@ -/* -* 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 USBMANPRIVATECRKEYS_H -#define USBMANPRIVATECRKEYS_H - -const TUid KCRUidUSBManagerConfiguration = { 0x101fe1db }; - -// Keys for USB configuration format -const TUint32 KUsbManConfigSign = 0; - -const TUint32 KUsbManDevicePartialKey = 0x00010000; -const TUint32 KUsbManDeviceCountIndexKey = 0x0001ff00; - -const TUint32 KUsbManDeviceConfigurationsPartialKey = 0x00020000; -const TUint32 KUsbManDeviceConfigurationsCountIndexKey = 0x0002ff00; - -const TUint32 KUsbManDevicePersonalitiesPartialKey = 0x00030000; -const TUint32 KUsbManDevicePersonalitiesCountIndexKey = 0x0003ff00; - -const TUint32 KUsbManDeviceConfigurableClassesPartialKey = 0x00040000; -const TUint32 KUsbManDeviceConfigurableClassesCountIndexKey = 0x0004ff00; - -const TUint32 KUsbManConfigKeyMask = 0x00FFFF00; -const TUint32 KUsbManConfigIndexMask = 0x0000FF00; -const TUint32 KUsbManConfigFieldMask = 0x000000FF; -const TUint32 KUsbManConfigFirstEntryMask = 0x00FF00FF; - -const TUint32 KUsbManPersonalitiesOffset = 8; - -const TInt KUsbManFeatureNotConfigurable = -1; - -//Device -const TUint32 KUsbManDeviceVendorIdKey = 0x00000000; -const TUint32 KUsbManDeviceManufacturerNameKey = 0x00000001; -const TUint32 KUsbManDeviceProductNameKey = 0x00000002; - -//Configurations -const TUint32 KUsbManDeviceConfigurationsPersonalityIdKey = 0x00000000; -const TUint32 KUsbManDeviceConfigurationsIdKey = 0x00000001; -const TUint32 KUsbManDeviceConfigurationsClassUidsKey = 0x00000002; -const TUint32 KUsbManDeviceConfigurationsKeyCountVersionFour = 3; //Key count of each configuration. - -//Personalities -const TUint32 KUsbManDevicePersonalitiesDeviceClassKey = 0x00000000; -const TUint32 KUsbManDevicePersonalitiesDeviceSubClassKey = 0x00000001; -const TUint32 KUsbManDevicePersonalitiesProtocolKey = 0x00000002; -const TUint32 KUsbManDevicePersonalitiesNumConfigKey = 0x00000003; -const TUint32 KUsbManDevicePersonalitiesProductIdKey = 0x00000004; -const TUint32 KUsbManDevicePersonalitiesBcdDeviceKey = 0x00000005; -const TUint32 KUsbManDevicePersonalitiesFeatureIdKey = 0x00000006; -const TUint32 KUsbManDevicePersonalitiesPersonalityIdKey = 0x00000007; -const TUint32 KUsbManDevicePersonalitiesPropertyKey = 0x00000008; -const TUint32 KUsbManDevicePersonalitiesDescriptionKey = 0x00000009; - -//Configurable Classes -const TUint32 KUsbManDeviceConfigurableClassesUidKey = 0x00000000; -const TUint32 KUsbManDeviceConfigurableClassesFeatureIdKey = 0x00000001; - -#endif // USBMANPRIVATECRKEYS_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/CPersonality.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/CPersonality.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/SRC/CPersonality.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-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" @@ -22,50 +22,43 @@ */ #include "CPersonality.h" - -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CPersonalityTraces.h" -#endif +#include -// Panic category only used in debug builds -#ifdef _DEBUG -_LIT(KUsbPersonalityPanicCategory, "CUsbPersonality"); +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "USBSVR"); #endif /** - * Panic codes for the USB Personality Class - */ -enum TUsbPersonalityPanic - { - EPersonalityConfigsArrayEmpty, - }; - -/** * Factory method. Constructs a CPersonality object. * * @return a pointer to CPersonality object. */ CPersonality* CPersonality::NewL() { - OstTraceFunctionEntry0( CPERSONALITY_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY CPersonality* self = new(ELeave) CPersonality; CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(self); - OstTraceFunctionExit0( CPERSONALITY_NEWL_EXIT ); return self; } /** - * Allocates max amount of memory for description string + * Allocates max amount of memory for each of 3 strings */ void CPersonality::ConstructL() { - OstTraceFunctionEntry0( CPERSONALITY_CONSTRUCTL_ENTRY ); - iDescription = HBufC::NewL(KUsbStringDescStringMaxSize); - OstTraceFunctionExit0( CPERSONALITY_CONSTRUCTL_EXIT ); + LOG_FUNC + + iManufacturer = HBufC::NewLC(KUsbStringDescStringMaxSize); + CleanupStack::Pop(); + iProduct = HBufC::NewLC(KUsbStringDescStringMaxSize); + CleanupStack::Pop(); + iDescription = HBufC::NewLC(KUsbStringDescStringMaxSize); + CleanupStack::Pop(); + iDetailedDescription = HBufC::NewLC(KUsbStringDescStringMaxSize); + CleanupStack::Pop(); } /** @@ -80,49 +73,62 @@ */ CPersonality::~CPersonality() { - OstTraceFunctionEntry0( CPERSONALITY_CPERSONALITY_DES_ENTRY ); - - iPersonalityConfigs.ResetAndDestroy(); + LOG_FUNC + + iClassUids.Close(); + delete iManufacturer; + delete iProduct; delete iDescription; - OstTraceFunctionExit0( CPERSONALITY_CPERSONALITY_DES_EXIT ); + delete iDetailedDescription; + } + +/** + * @return the index of the first match or KErrNotFound + */ +TInt CPersonality::ClassSupported(TUid aClassUid) const + { + TIdentityRelation relation(CPersonality::Compare); + return iClassUids.Find(aClassUid, relation); + } + +/** + * @return KErrNone or system wide error code + */ +TInt CPersonality::AddSupportedClasses(TUid aClassUid) + { + return iClassUids.Append(aClassUid); } /** - * @return supported class uids + * Sets personality id */ -const RArray& CPersonality::SupportedClasses() const - { - //we only support configuration 0 now - if(iPersonalityConfigs.Count() == 0) - { - OstTrace1( TRACE_FATAL, CPERSONALITY_SUPPORTEDCLASSES, "CPersonality::SupportedClasses;Panic error=%d", EPersonalityConfigsArrayEmpty ); - __ASSERT_DEBUG( EFalse, User::Panic(KUsbPersonalityPanicCategory, EPersonalityConfigsArrayEmpty) ); - } - return iPersonalityConfigs[0]->Classes(); - } +void CPersonality::SetId(TInt aId) + { + iId = aId; + } /** - * @return ETrue if this class is supported - * otherwise return EFalse - */ -TBool CPersonality::ClassSupported(TUid aClassUid) const + * Sets manufacturer textual description + */ +void CPersonality::SetManufacturer(const TDesC* aManufacturer) { - //we only support configuration 0 now - if(iPersonalityConfigs.Count() == 0) - { - OstTrace1( TRACE_FATAL, CPERSONALITY_CLASSSUPPORTED, "CPersonality::ClassSupported;Panic error=%d", EPersonalityConfigsArrayEmpty ); - __ASSERT_DEBUG( EFalse, User::Panic(KUsbPersonalityPanicCategory, EPersonalityConfigsArrayEmpty) ); - } - const RArray &classes = iPersonalityConfigs[0]->Classes(); - TInt classesCount = classes.Count(); - for(TInt classesIndex = 0; classesIndex < classesCount; ++classesIndex) - { - if(aClassUid == classes[classesIndex].iClassUid) - { - return ETrue; - } - } - return EFalse; + iManufacturer->Des().Copy(*aManufacturer); + } + +/** + * Sets product textual description + */ +void CPersonality::SetProduct(const TDesC* aProduct) + { + iProduct->Des().Copy(*aProduct); + } + +/** + * Sets personality textual description + */ +void CPersonality::SetDescription(const TDesC* aDescription) + { + iDescription->Des().Copy((*aDescription).Left(KUsbStringDescStringMaxSize-1)); } /** @@ -136,6 +142,14 @@ }; /** + * Sets detailed personality textual description + */ +void CPersonality::SetDetailedDescription(const TDesC* aDetailedDescription) + { + iDetailedDescription->Des().Copy((*aDetailedDescription).Left(KUsbStringDescStringMaxSize-1)); + } + +/** * Sets version */ void CPersonality::SetVersion(TInt aVersion) @@ -150,118 +164,3 @@ { iProperty = aProperty; } - -/** - * Sets DeviceClass - */ -void CPersonality::SetDeviceClass(TUint8 aDeviceClass) - { - iDeviceClass = aDeviceClass; - } - -/** - * Sets DeviceSubClass - */ -void CPersonality::SetDeviceSubClass(TUint8 aDeviceSubClass) - { - iDeviceSubClass = aDeviceSubClass; - } - -/** - * Sets DeviceProtocol - */ -void CPersonality::SetDeviceProtocol(TUint8 aDeviceProtocol) - { - iDeviceProtocol = aDeviceProtocol; - } - -/** - * Sets NumConfigurations - */ -void CPersonality::SetNumConfigurations(TUint8 aNumConfigurations) - { - iNumConfigurations = aNumConfigurations; - } - -/** - * Sets ProductId - */ -void CPersonality::SetProductId(TUint16 aProductId) - { - iProductId = aProductId; - } - -/** - * Sets FeatureId - */ -void CPersonality::SetFeatureId(TInt aFeatureId) - { - iFeatureId = aFeatureId; - } - -/** - * Sets BcdDevice - */ -void CPersonality::SetBcdDevice(TUint16 aBcdDevice) - { - iBcdDevice = aBcdDevice; - } - -/** - * Sets personality id - */ -void CPersonality::SetPersonalityId(TInt aPersonalityId) - { - iPersonalityId = aPersonalityId; - } - -/** - * Sets Description - */ -void CPersonality::SetDescription(const TDesC* aDescription) - { - iDescription->Des().Copy((*aDescription).Left(KUsbStringDescStringMaxSize-1)); - } - -/** - * Append PersonalityConfig - */ -void CPersonality::AppendPersonalityConfigsL(const CPersonalityConfigurations *aPersonalityConfig ) - { - iPersonalityConfigs.AppendL(aPersonalityConfig); - } - -/** - * Sets personality id - */ -void CPersonalityConfigurations::SetPersonalityId(TInt aPersonalityId) - { - iPersonalityId = aPersonalityId; - } - -/** - * Sets Config Id - */ -void CPersonalityConfigurations::SetConfigId(TInt aConfigId) - { - iConfigId = aConfigId; - } - - -/** - * Append PersonalityConfig - */ -void CPersonalityConfigurations::AppendClassesL(const TUsbClasses &aClasses ) - { - iClasses.AppendL(aClasses); - } - -/** - * De-Constructor - */ -CPersonalityConfigurations::~CPersonalityConfigurations() - { - OstTraceFunctionEntry0( CPERSONALITYCONFIGURATIONS_CPERSONALITYCONFIGURATIONS_DES_ENTRY ); - iClasses.Close(); - OstTraceFunctionExit0( CPERSONALITYCONFIGURATIONS_CPERSONALITYCONFIGURATIONS_DES_EXIT ); - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/CUsbDevice.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/CUsbDevice.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/SRC/CUsbDevice.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -20,42 +20,41 @@ /** @file */ + +#include "CUsbDevice.h" +#include "CUsbDeviceStateWatcher.h" #include +#include "MUsbDeviceNotify.h" +#include "UsbSettings.h" +#include "CUsbServer.h" #include #include +#include "UsbUtils.h" #include + +#ifdef USE_DUMMY_CLASS_CONTROLLER +#include "CUsbDummyClassController.h" +#endif + #include #include #include #include #include +#include #include #include #include #include #include //Publish & Subscribe header -#ifdef USE_DUMMY_CLASS_CONTROLLER -#include "CUsbDummyClassController.h" -#endif -#include "MUsbDeviceNotify.h" -#include "UsbSettings.h" -#include "CUsbServer.h" -#include "UsbUtils.h" -#include "CUsbDevice.h" -#include "CUsbDeviceStateWatcher.h" #include "CPersonality.h" -#include "usbmancenrepmanager.h" -#include "usbmanprivatecrkeys.h" - -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbDeviceTraces.h" -#endif - _LIT(KUsbLDDName, "eusbc"); //Name used in call to User::LoadLogicalDevice _LIT(KUsbLDDFreeName, "Usbc"); //Name used in call to User::FreeLogicalDevice +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "USBSVR"); +#endif // Panic category only used in debug builds #ifdef _DEBUG @@ -83,13 +82,12 @@ * @return A new CUsbDevice object */ { - OstTraceFunctionEntry0( CUSBDEVICE_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY CUsbDevice* r = new (ELeave) CUsbDevice(aUsbServer); CleanupStack::PushL(r); r->ConstructL(); CleanupStack::Pop(r); - OstTraceFunctionExit0( CUSBDEVICE_NEWL_EXIT ); return r; } @@ -99,7 +97,7 @@ * Destructor. */ { - OstTraceFunctionEntry0( CUSBDEVICE_CUSBDEVICE_DES_ENTRY ); + LOG_FUNC // Cancel any outstanding asynchronous operation. Cancel(); @@ -110,11 +108,6 @@ iSupportedClassUids.Close(); iExtensionPlugins.ResetAndDestroy(); - - delete iCenRepManager; - - delete iDeviceConfiguration.iManufacturerName; - delete iDeviceConfiguration.iProductName; if(iEcom) iEcom->Close(); @@ -125,29 +118,24 @@ // the observers themselves. iObservers.Reset(); -#ifndef __OVER_DUMMYUSBDI__ #ifndef __WINS__ - OstTrace1( TRACE_NORMAL, CUSBDEVICE_CUSBDEVICE, "CUsbDevice::~CUsbDevice;about to delete device state watcher @ %08x", (TUint32)iDeviceStateWatcher ); - + LOGTEXT2(_L8("about to delete device state watcher @ %08x"), (TUint32) iDeviceStateWatcher); delete iDeviceStateWatcher; - OstTrace0( TRACE_NORMAL, CUSBDEVICE_CUSBDEVICE_DUP1, "CUsbDevice::~CUsbDevice;deleted device state watcher" ); + LOGTEXT(_L8("deleted device state watcher")); iLdd.Close(); - OstTrace0( TRACE_NORMAL, CUSBDEVICE_CUSBDEVICE_DUP2, "CUsbDevice::~CUsbDevice;Freeing logical device" ); - + LOGTEXT(_L8("Freeing logical device")); TInt err = User::FreeLogicalDevice(KUsbLDDFreeName); //Putting the LOGTEXT2 inside the if statement prevents a compiler //warning about err being unused in UREL builds. if(err) { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_CUSBDEVICE_DUP3, "CUsbDevice::~CUsbDevice; User::FreeLogicalDevice returned err=%d", err ); + LOGTEXT2(_L8(" User::FreeLogicalDevice returned %d"),err); } -#endif #endif delete iDefaultSerialNumber; - OstTraceFunctionExit0( CUSBDEVICE_CUSBDEVICE_DES_EXIT ); } @@ -170,36 +158,24 @@ * Performs 2nd phase construction of the USB device. */ { - OstTraceFunctionEntry0( CUSBDEVICE_CONSTRUCTL_ENTRY ); + LOG_FUNC iEcom = &(REComSession::OpenL()); iUsbClassControllerIterator = new(ELeave) CUsbClassControllerIterator(iSupportedClasses); - iCenRepManager = CUsbManCenRepManager::NewL(*this); - iDeviceConfiguration.iManufacturerName = HBufC::NewL(KUsbStringDescStringMaxSize); - iDeviceConfiguration.iProductName = HBufC::NewL(KUsbStringDescStringMaxSize); -#ifndef __OVER_DUMMYUSBDI__ #ifndef __WINS__ - OstTrace0( TRACE_NORMAL, CUSBDEVICE_CONSTRUCTL, "CUsbDevice::ConstructL; About to load LDD" ); - + LOGTEXT(_L8("About to load LDD")); TInt err = User::LoadLogicalDevice(KUsbLDDName); if (err != KErrNone && err != KErrAlreadyExists) { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_CONSTRUCTL_DUP10, "CUsbDevice::ConstructL;err=%d", err ); - User::Leave(err); + LEAVEL(err); } - OstTrace0( TRACE_NORMAL, CUSBDEVICE_CONSTRUCTL_DUP1, "CUsbDevice::ConstructL; About to open LDD" ); - err = iLdd.Open(0); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_CONSTRUCTL_DUP9, "CUsbDevice::ConstructL;iLdd.Open(0) with error=%d", err ); - User::Leave(err); - } - OstTrace0( TRACE_NORMAL, CUSBDEVICE_CONSTRUCTL_DUP2, "CUsbDevice::ConstructL; LDD opened" ); - + LOGTEXT(_L8("About to open LDD")); + LEAVEIFERRORL(iLdd.Open(0)); + LOGTEXT(_L8("LDD opened")); // hide bus from host while interfaces are being set up iLdd.DeviceDisconnectFromHost(); @@ -210,33 +186,21 @@ // the device state is not undefined. This is to save power in the UDC // when there's no point it being powered. TUsbDeviceCaps devCapsBuf; - err = iLdd.DeviceCaps(devCapsBuf); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_CONSTRUCTL_DUP11, "CUsbDevice::ConstructL;iLdd.DeviceCaps(devCapsBuf) with error=%d", err ); - User::Leave(err); - } - + LEAVEIFERRORL(iLdd.DeviceCaps(devCapsBuf)); if ( devCapsBuf().iFeatureWord1 & KUsbDevCapsFeatureWord1_CableDetectWithoutPower ) { - OstTrace0( TRACE_NORMAL, CUSBDEVICE_CONSTRUCTL_DUP3, "CUsbDevice::ConstructL: UDC supports cable detect when unpowered" ); + LOGTEXT(_L8("\tUDC supports cable detect when unpowered")); iUdcSupportsCableDetectWhenUnpowered = ETrue; } else { - OstTrace0( TRACE_NORMAL, CUSBDEVICE_CONSTRUCTL_DUP4, "CUsbDevice::ConstructL; UDC does not support cable detect when unpowered" ); + LOGTEXT(_L8("\tUDC does not support cable detect when unpowered")); } TUsbcDeviceState deviceState; - err = iLdd.DeviceStatus(deviceState); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_CONSTRUCTL_DUP13, "CUsbDevice::ConstructL;iLdd.DeviceStatus(deviceState) with error=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(iLdd.DeviceStatus(deviceState)); SetDeviceState(deviceState); - OstTrace0( TRACE_NORMAL, CUSBDEVICE_CONSTRUCTL_DUP5, "CUsbDevice::ConstructL; Got device state" ); - + LOGTEXT(_L8("Got device state")); iDeviceStateWatcher = CUsbDeviceStateWatcher::NewL(*this, iLdd); iDeviceStateWatcher->Start(); @@ -251,43 +215,35 @@ { delete iDefaultSerialNumber; iDefaultSerialNumber = NULL; - OstTrace0( TRACE_NORMAL, CUSBDEVICE_CONSTRUCTL_DUP6, "CUsbDevice::ConstructL; No default serial number" ); - + LOGTEXT(_L8("No default serial number")); } else { - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_CONSTRUCTL_DUP12, "CUsbDevice::ConstructL;error=%d", err ); - User::Leave(err); - } -#ifdef _DEBUG - OstTraceExt1( TRACE_NORMAL, CUSBDEVICE_CONSTRUCTL_DUP7, "CUsbDevice::ConstructL;serNum=%S", serNum ); -#endif //_DEBUG + LEAVEIFERRORL(err); +#ifdef __FLOG_ACTIVE + TBuf8 narrowString; + narrowString.Copy(serNum); + LOGTEXT2(_L8("Got default serial number %S"), &narrowString); +#endif //__FLOG_ACTIVE } - OstTrace0( TRACE_NORMAL, CUSBDEVICE_CONSTRUCTL_DUP8, "CUsbDevice::ConstructL; UsbDevice::ConstructL() finished" ); - -#endif + LOGTEXT(_L8("UsbDevice::ConstructL() finished")); #endif #ifndef __OVER_DUMMYUSBDI__ InstantiateExtensionPluginsL(); #endif - OstTraceFunctionExit0( CUSBDEVICE_CONSTRUCTL_EXIT ); } void CUsbDevice::InstantiateExtensionPluginsL() { - OstTraceFunctionEntry0( CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_ENTRY ); - + LOGTEXT(_L8(">>CUsbDevice::InstantiateExtensionPluginsL")); const TUid KUidExtensionPluginInterface = TUid::Uid(KUsbmanExtensionPluginInterfaceUid); RImplInfoPtrArray implementations; const TEComResolverParams noResolverParams; REComSession::ListImplementationsL(KUidExtensionPluginInterface, noResolverParams, KRomOnlyResolverUid, implementations); CleanupResetAndDestroyPushL(implementations); - OstTrace1( TRACE_FLOW, CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL, "CUsbDevice::InstantiateExtensionPluginsL;Number of implementations of extension plugin interface: %d", implementations.Count() ); - + LOGTEXT2(_L8("Number of implementations of extension plugin interface: %d"), implementations.Count()); for (TInt i=0; iImplementationUid().iUid ); - + LOGTEXT2(_L8("Added extension plugin with UID 0x%08x"), + implementations[i]->ImplementationUid()); } CleanupStack::PopAndDestroy(&implementations); - OstTraceFunctionExit0( CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_EXIT ); + + LOGTEXT(_L8("<First(); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_DUP2, "CUsbDevice::EnumerateClassControllersL;iUsbClassControllerIterator->First() with error=%d", err ); - User::Leave(err); - } + + LEAVEIFERRORL(iUsbClassControllerIterator->First()); #else @@ -351,24 +302,19 @@ REComSession::ListImplementationsL(KUidUsbPlugIns, noResolverParams, KRomOnlyResolverUid, implementations); CleanupResetAndDestroyPushL(implementations); - OstTrace1( TRACE_NORMAL, CUSBDEVICE_ENUMERATECLASSCONTROLLERSL, "CUsbDevice::EnumerateClassControllersL;Number of implementations to load %d", implementations.Count() ); + LOGTEXT2(_L8("Number of implementations to load %d"), implementations.Count()); for (TInt i=0; iImplementationUid().iUid ); - const TUid uid = implementations[i]->ImplementationUid(); - TInt err = iSupportedClassUids.Append(uid); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_DUP3, "CUsbDevice::EnumerateClassControllersL;iSupportedClassUids.Append(uid) with error=%d", err ); - User::Leave(err); - } + LOGTEXT2(_L8("Adding class controller with UID %x"), + implementations[i]->ImplementationUid()); + const TUid uid = implementations[i]->ImplementationUid(); + LEAVEIFERRORL(iSupportedClassUids.Append(uid)); } CleanupStack::PopAndDestroy(&implementations); #endif // USE_DUMMY_CLASS_CONTROLLER - OstTraceFunctionExit0( CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_EXIT ); } void CUsbDevice::AddClassControllerL(CUsbClassControllerBase* aClassController, @@ -384,7 +330,7 @@ * added */ { - OstTraceFunctionEntry0( CUSBDEVICE_ADDCLASSCONTROLLERL_ENTRY ); + LOG_FUNC TInt rc = KErrNone; @@ -403,10 +349,8 @@ { // Avoid memory leak by deleting class controller if the append fails. delete aClassController; - OstTrace1( TRACE_NORMAL, CUSBDEVICE_ADDCLASSCONTROLLERL, "CUsbDevice::AddClassControllerL;Leave rc=%d", rc ); - User::Leave(rc); + LEAVEL(rc); } - OstTraceFunctionExit0( CUSBDEVICE_ADDCLASSCONTROLLERL_EXIT ); } void CUsbDevice::RegisterObserverL(MUsbDeviceNotify& aObserver) @@ -417,14 +361,9 @@ * @param aObserver New Observer of the device */ { - OstTraceFunctionEntry0( CUSBDEVICE_REGISTEROBSERVERL_ENTRY ); - TInt err = iObservers.Append(&aObserver); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_REGISTEROBSERVERL, "CUsbDevice::RegisterObserverL;iObservers.Append(&aObserver) with err=%d", err ); - User::Leave(err); - } - OstTraceFunctionExit0( CUSBDEVICE_REGISTEROBSERVERL_EXIT ); + LOG_FUNC + + LEAVEIFERRORL(iObservers.Append(&aObserver)); } @@ -435,13 +374,12 @@ * @param aObserver The existing device observer to be de-registered */ { - OstTraceFunctionEntry0( CUSBDEVICE_DEREGISTEROBSERVER_ENTRY ); + LOG_FUNC TInt index = iObservers.Find(&aObserver); if (index >= 0) iObservers.Remove(index); - OstTraceFunctionExit0( CUSBDEVICE_DEREGISTEROBSERVER_EXIT ); } @@ -451,7 +389,7 @@ * Reports errors and state changes via observer interface. */ { - OstTraceFunctionEntry0( CUSBDEVICE_STARTL_ENTRY ); + LOG_FUNC Cancel(); SetServiceState(EUsbServiceStarting); @@ -459,14 +397,12 @@ TRAPD(err, SetDeviceDescriptorL()); if ( err != KErrNone ) { - SetServiceState(EUsbServiceIdle); - OstTrace1( TRACE_NORMAL, CUSBDEVICE_STARTL, "CUsbDevice::StartL;Leave with error=%d", err ); - User::Leave(err); + SetServiceState(EUsbServiceIdle); + LEAVEL(err); } iLastError = KErrNone; StartCurrentClassController(); - OstTraceFunctionExit0( CUSBDEVICE_STARTL_EXIT ); } void CUsbDevice::Stop() @@ -474,14 +410,13 @@ * Stop the USB device and all its associated USB classes. */ { - OstTraceFunctionEntry0( CUSBDEVICE_STOP_ENTRY ); + LOG_FUNC Cancel(); SetServiceState(EUsbServiceStopping); iLastError = KErrNone; StopCurrentClassController(); - OstTraceFunctionExit0( CUSBDEVICE_STOP_EXIT ); } void CUsbDevice::SetServiceState(TUsbServiceState aState) @@ -491,11 +426,8 @@ * @param aState New state that the device is moving to */ { - OstTraceFunctionEntry0( CUSBDEVICE_SETSERVICESTATE_ENTRY ); - - OstTraceExt2( TRACE_NORMAL, CUSBDEVICE_SETSERVICESTATE, - "CUsbDevice::SetServiceState;iServiceState=%d;aState=%d", iServiceState, aState ); - + LOGTEXT3(_L8("Calling: CUsbDevice::SetServiceState [iServiceState=%d,aState=%d]"), + iServiceState, aState); if (iServiceState != aState) { @@ -513,7 +445,7 @@ if (iServiceState == EUsbServiceIdle) iUsbServer.LaunchShutdownTimerIfNoSessions(); } - OstTraceFunctionExit0( CUSBDEVICE_SETSERVICESTATE_EXIT ); + LOGTEXT(_L8("Exiting: CUsbDevice::SetServiceState")); } void CUsbDevice::SetDeviceState(TUsbcDeviceState aState) @@ -526,9 +458,8 @@ * @param aState New state that the device is moving to */ { - OstTraceFunctionEntry0( CUSBDEVICE_SETDEVICESTATE_ENTRY ); - OstTraceExt2( TRACE_NORMAL, CUSBDEVICE_SETDEVICESTATE, - "CUsbDevice::SetDeviceState;aState=%d;iDeviceState=%d", aState, iDeviceState ); + LOG_FUNC + LOGTEXT3(_L8("\taState = %d, iDeviceState = %d"), aState, iDeviceState); TUsbDeviceState state; switch (aState) @@ -560,7 +491,6 @@ if (iDeviceState != state) { -#ifndef __OVER_DUMMYUSBDI__ #ifndef __WINS__ if (iDeviceState == EUsbDeviceStateUndefined && iUdcSupportsCableDetectWhenUnpowered && @@ -572,8 +502,7 @@ // it up (so long as usbman is fully started). (void)PowerUpAndConnect(); // We don't care about any errors here. } -#endif -#endif // __OVER_DUMMYUSBDI__ +#endif // __WINS__ // Change state straight away in case any of the clients check it TUsbDeviceState oldState = iDeviceState; iDeviceState = state; @@ -584,7 +513,6 @@ iObservers[i]->UsbDeviceStateChange(LastError(), oldState, iDeviceState); } } - OstTraceFunctionExit0( CUSBDEVICE_SETDEVICESTATE_EXIT ); } /** @@ -593,7 +521,7 @@ */ void CUsbDevice::BusEnumerationCompleted() { - OstTraceFunctionEntry0( CUSBDEVICE_BUSENUMERATIONCOMPLETED_ENTRY ); + LOG_FUNC // Has the start been cancelled? if (iServiceState == EUsbServiceStarting) @@ -602,10 +530,8 @@ } else { - OstTrace0( TRACE_NORMAL, CUSBDEVICE_BUSENUMERATIONCOMPLETED, - "CUsbDevice::BusEnumerationCompleted; Start has been cancelled!" ); + LOGTEXT(_L8(" Start has been cancelled!")); } - OstTraceFunctionExit0( CUSBDEVICE_BUSENUMERATIONCOMPLETED_EXIT ); } void CUsbDevice::BusEnumerationFailed(TInt aError) @@ -616,8 +542,7 @@ * @param aError Error that has occurred during Re-enumeration */ { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_BUSENUMERATIONFAILED, "CUsbDevice::BusEnumerationFailed;aError=%d", aError ); - + LOGTEXT2(_L8("CUsbDevice::BusEnumerationFailed [aError=%d]"), aError); iLastError = aError; if (iServiceState == EUsbServiceStarting) @@ -627,8 +552,7 @@ } else { - OstTrace0( TRACE_NORMAL, CUSBDEVICE_BUSENUMERATIONFAILED_DUP1, - "CUsbDevice::BusEnumerationFailed; Start has been cancelled!" ); + LOGTEXT(_L8(" Start has been cancelled!")); } } @@ -638,11 +562,10 @@ * Called numerous times to start all the USB classes. */ { - OstTraceFunctionEntry0( CUSBDEVICE_STARTCURRENTCLASSCONTROLLER_ENTRY ); + LOG_FUNC iUsbClassControllerIterator->Current()->Start(iStatus); SetActive(); - OstTraceFunctionExit0( CUSBDEVICE_STARTCURRENTCLASSCONTROLLER_EXIT ); } void CUsbDevice::StopCurrentClassController() @@ -650,11 +573,10 @@ * Called numerous times to stop all the USB classes. */ { - OstTraceFunctionEntry0( CUSBDEVICE_STOPCURRENTCLASSCONTROLLER_ENTRY ); + LOG_FUNC iUsbClassControllerIterator->Current()->Stop(iStatus); SetActive(); - OstTraceFunctionExit0( CUSBDEVICE_STOPCURRENTCLASSCONTROLLER_EXIT ); } /** @@ -663,19 +585,12 @@ */ TInt CUsbDevice::PowerUpAndConnect() { - OstTraceFunctionEntry0( CUSBDEVICE_POWERUPANDCONNECT_ENTRY ); - - OstTrace0( TRACE_NORMAL, CUSBDEVICE_POWERUPANDCONNECT, "CUsbDevice::PowerUpAndConnect;Powering up UDC..." ); - + LOG_FUNC + LOGTEXT(_L8("\tPowering up UDC...")); TInt res = iLdd.PowerUpUdc(); - OstTrace1( TRACE_NORMAL, CUSBDEVICE_POWERUPANDCONNECT_DUP1, - "CUsbDevice::PowerUpAndConnect;PowerUpUdc res = %d", res ); - + LOGTEXT2(_L8("\tPowerUpUdc res = %d"), res); res = iLdd.DeviceConnectToHost(); - OstTrace1( TRACE_NORMAL, CUSBDEVICE_POWERUPANDCONNECT_DUP2, - "CUsbDevice::PowerUpAndConnect;DeviceConnectToHost res = %d", res ); - - OstTraceFunctionExit0( CUSBDEVICE_POWERUPANDCONNECT_EXIT ); + LOGTEXT2(_L8("\tDeviceConnectToHost res = %d"), res); return res; } @@ -686,37 +601,28 @@ * classes have been completed. */ { - OstTraceFunctionEntry0( CUSBDEVICE_RUNL_ENTRY ); - OstTrace1( TRACE_NORMAL, CUSBDEVICE_RUNL, "CUsbDevice::RunL;iStatus.Int()=%d", iStatus.Int() ); + LOGTEXT2(_L8(">>CUsbDevice::RunL [iStatus=%d]"), iStatus.Int()); - TInt err = iStatus.Int(); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_RUNL_DUP4, "CUsbDevice::RunL;iStatus.Int() with error=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(iStatus.Int()); switch (iServiceState) { case EUsbServiceStarting: if (iUsbClassControllerIterator->Next() == KErrNotFound) { -#ifndef __OVER_DUMMYUSBDI__ #ifndef __WINS__ if (!iUdcSupportsCableDetectWhenUnpowered || iDeviceState != EUsbDeviceStateUndefined) { // We've finished starting the classes. We can just power up the UDC // now: there's no need to re-enumerate, because we soft disconnected // earlier. This will also do a soft connect. - OstTrace0( TRACE_NORMAL, CUSBDEVICE_RUNL_DUP1, "CUsbDevice::RunL;Finished starting classes: powering up UDC" ); - + LOGTEXT(_L8("Finished starting classes: powering up UDC")); // It isn't an error if this call fails. This will happen, for example, // in the case where there are no USB classes defined. (void)PowerUpAndConnect(); } #endif -#endif // If we're not running on target, we can just go to "started". SetServiceState(EUsbServiceStarted); } @@ -730,7 +636,6 @@ if (iUsbClassControllerIterator->Previous() == KErrNotFound) { // if stopping classes, hide the USB interface from the host -#ifndef __OVER_DUMMYUSBDI__ #ifndef __WINS__ iLdd.DeviceDisconnectFromHost(); @@ -738,15 +643,14 @@ if (iDefaultSerialNumber) { TInt res = iLdd.SetSerialNumberStringDescriptor(*iDefaultSerialNumber); - OstTrace1( TRACE_NORMAL, CUSBDEVICE_RUNL_DUP2, "CUsbDevice::RunL;Restore default serial number res = %d", res ); + LOGTEXT2(_L8("Restore default serial number res = %d"), res); } else { TInt res = iLdd.RemoveSerialNumberStringDescriptor(); - OstTrace1( TRACE_NORMAL, CUSBDEVICE_RUNL_DUP3, "CUsbDevice::RunL;Remove serial number res = %d", res ); + LOGTEXT2(_L8("Remove serial number res = %d"), res); } - -#endif + #endif SetServiceState(EUsbServiceIdle); } @@ -757,13 +661,10 @@ break; default: - - OstTrace1( TRACE_FATAL, CUSBDEVICE_RUNL_DUP5, "CUsbDevice::RunL;Panic reason=%d", EBadAsynchronousCall ); - __ASSERT_DEBUG( EFalse, User::Panic(KUsbDevicePanicCategory, EBadAsynchronousCall) ); - + __ASSERT_DEBUG( EFalse, _USB_PANIC(KUsbDevicePanicCategory, EBadAsynchronousCall) ); break; } - OstTraceFunctionExit0( CUSBDEVICE_RUNL_EXIT ); + LOGTEXT(_L8("<Des(); devicePtr.SetLength(0); @@ -911,8 +806,8 @@ if (ret != KErrNone) { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_SETDEVICEDESCRIPTORL_DUP1, "CUsbDevice::SetDeviceDescriptorL;Unable to fetch device descriptor. Error: %d", ret ); - User::Leave(ret); + LOGTEXT2(_L8("Unable to fetch device descriptor. Error: %d"), ret); + LEAVEL(ret); } TUsbDeviceDescriptor* deviceDescriptor = reinterpret_cast( @@ -926,7 +821,7 @@ TUsbDeviceDescriptor descriptor; TUsbDeviceDescriptor* deviceDescriptor = &descriptor; -#endif // __OVER_DUMMYUSBDI__ && _WINS_ +#endif // __WINS__ if (iPersonalityCfged) { @@ -934,26 +829,21 @@ } else { - OstTrace0( TRACE_NORMAL, CUSBDEVICE_SETDEVICEDESCRIPTORL_DUP3, - "CUsbDevice::SetDeviceDescriptorL;USB configuration is not read" ); - User::Leave(KErrNotFound); + SetUsbDeviceSettingsL(*deviceDescriptor); } -#ifndef __OVER_DUMMYUSBDI__ #ifndef __WINS__ ret = iLdd.SetDeviceDescriptor(devicePtr); if (ret != KErrNone) { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_SETDEVICEDESCRIPTORL_DUP2, "CUsbDevice::SetDeviceDescriptorL;Unable to set device descriptor. Error: %d", ret ); - User::Leave(ret); + LOGTEXT2(_L8("Unable to set device descriptor. Error: %d"), ret); + LEAVEL(ret); } CleanupStack::PopAndDestroy(deviceBuf); -#endif -#endif // __OVER_DUMMYUSBDI__ - OstTraceFunctionExit0( CUSBDEVICE_SETDEVICEDESCRIPTORL_EXIT ); +#endif // __WINS__ } void CUsbDevice::SetUsbDeviceSettingsDefaultsL(CUsbDevice::TUsbDeviceDescriptor& aDeviceDescriptor) @@ -968,7 +858,134 @@ aDeviceDescriptor.iDeviceSubClass = KUsbDefaultDeviceSubClass; aDeviceDescriptor.iDeviceProtocol = KUsbDefaultDeviceProtocol; aDeviceDescriptor.iIdVendor = KUsbDefaultVendorId; - aDeviceDescriptor.iProductId = KUsbDefaultProductId; + aDeviceDescriptor.iIdProduct = KUsbDefaultProductId; + } + +void CUsbDevice::SetUsbDeviceSettingsL(CUsbDevice::TUsbDeviceDescriptor& aDeviceDescriptor) +/** + * Configure the USB device, reading in the settings from a + * resource file where possible. + * + * @param aDeviceDescriptor The device descriptor for the USB device + */ + { + LOG_FUNC + + // First, use the default values + LOGTEXT(_L8("Setting default values for the configuration")); + SetUsbDeviceSettingsDefaultsL(aDeviceDescriptor); + + // Now try to get the configuration from the resource file + RFs fs; + LEAVEIFERRORL(fs.Connect()); + CleanupClosePushL(fs); + + RResourceFile resource; + TRAPD(err, resource.OpenL(fs, KUsbManagerResource)); + LOGTEXT2(_L8("Opened resource file with error %d"), err); + + if (err != KErrNone) + { + LOGTEXT(_L8("Unable to open resource file: using default settings")); + CleanupStack::PopAndDestroy(&fs); + return; + } + + CleanupClosePushL(resource); + + resource.ConfirmSignatureL(KUsbManagerResourceVersion); + + HBufC8* id = resource.AllocReadLC(USB_CONFIG); + + // The format of the USB resource structure is: + // + // STRUCT usb_configuration + // { + // WORD vendorId = 0x0e22; + // WORD productId = 0x000b; + // WORD bcdDevice = 0x0000; + // LTEXT manufacturer = "Symbian Ltd."; + // LTEXT product = "Symbian OS"; + // } + // + // Note that the resource must be read in this order! + + TResourceReader reader; + reader.SetBuffer(id); + + aDeviceDescriptor.iIdVendor = static_cast(reader.ReadUint16()); + aDeviceDescriptor.iIdProduct = static_cast(reader.ReadUint16()); + aDeviceDescriptor.iBcdDevice = static_cast(reader.ReadUint16()); + + // Try to read device and manufacturer name from new SysUtil API + TPtrC16 sysUtilModelName; + TPtrC16 sysUtilManuName; + + // This method returns ownership. + CDeviceTypeInformation* deviceInfo = SysUtil::GetDeviceTypeInfoL(); + CleanupStack::PushL(deviceInfo); + TInt gotSysUtilModelName = deviceInfo->GetModelName(sysUtilModelName); + TInt gotSysUtilManuName = deviceInfo->GetManufacturerName(sysUtilManuName); + + TPtrC manufacturerString = reader.ReadTPtrC(); + TPtrC productString = reader.ReadTPtrC(); + + // If we succesfully read the manufacturer or device name from SysUtil API + // then set these results, otherwise use the values defined in resource file +#ifndef __WINS__ + if (gotSysUtilManuName == KErrNone) + { + LEAVEIFERRORL(iLdd.SetManufacturerStringDescriptor(sysUtilManuName)); + } + else + { + LEAVEIFERRORL(iLdd.SetManufacturerStringDescriptor(manufacturerString)); + } + + if (gotSysUtilModelName == KErrNone) + { + LEAVEIFERRORL(iLdd.SetProductStringDescriptor(sysUtilModelName)); + } + else + { + LEAVEIFERRORL(iLdd.SetProductStringDescriptor(productString)); + } +#endif // __WINS__ + +#ifdef __FLOG_ACTIVE + PrintDescriptor(aDeviceDescriptor); + TBuf8 narrowString; + narrowString.Copy(manufacturerString); + LOGTEXT2(_L8("Manufacturer is: '%S'"), &narrowString); + narrowString.Copy(productString); + LOGTEXT2(_L8("Product is: '%S'"), &narrowString); +#endif // __FLOG_ACTIVE + +#ifndef __WINS__ + //Read the published serial number. The key is the UID KUidUsbmanServer = 0x101FE1DB + TBuf16 serNum; + TInt r = RProperty::Get(KUidSystemCategory,0x101FE1DB,serNum); + if(r==KErrNone) + { +#ifdef __FLOG_ACTIVE + TBuf8 narrowString; + narrowString.Copy(serNum); + LOGTEXT2(_L8("Setting published SerialNumber: %S"), &narrowString); +#endif // __FLOG_ACTIVE + //USB spec doesn't give any constraints on what constitutes a valid serial number. + //As long as it is a string descriptor it is valid. + LEAVEIFERRORL(iLdd.SetSerialNumberStringDescriptor(serNum)); + } +#ifdef __FLOG_ACTIVE + else + { + LOGTEXT(_L8("SerialNumber has not been published")); + } +#endif // __FLOG_ACTIVE +#endif // __WINS__ + + + CleanupStack::PopAndDestroy(4, &fs); // deviceInfo, id, resource, fs } void CUsbDevice::SetUsbDeviceSettingsFromPersonalityL(CUsbDevice::TUsbDeviceDescriptor& aDeviceDescriptor) @@ -978,83 +995,63 @@ * @param aDeviceDescriptor The device descriptor for the USB device */ { - OstTraceFunctionEntry0( CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_ENTRY ); + LOG_FUNC // First, use the default values - OstTrace0( TRACE_NORMAL, CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL, "CUsbDevice::SetUsbDeviceSettingsFromPersonalityL;Setting default values for the configuration" ); + LOGTEXT(_L8("Setting default values for the configuration")); SetUsbDeviceSettingsDefaultsL(aDeviceDescriptor); // Now try to get the configuration from the current personality - aDeviceDescriptor.iDeviceClass = iCurrentPersonality->DeviceClass(); - aDeviceDescriptor.iDeviceSubClass = iCurrentPersonality->DeviceSubClass(); - aDeviceDescriptor.iDeviceProtocol = iCurrentPersonality->DeviceProtocol(); - aDeviceDescriptor.iIdVendor = iDeviceConfiguration.iVendorId; - aDeviceDescriptor.iProductId = iCurrentPersonality->ProductId(); - aDeviceDescriptor.iBcdDevice = iCurrentPersonality->BcdDevice(); - aDeviceDescriptor.iNumConfigurations = iCurrentPersonality->NumConfigurations(); - + const CUsbDevice::TUsbDeviceDescriptor& deviceDes = iCurrentPersonality->DeviceDescriptor(); + aDeviceDescriptor.iDeviceClass = deviceDes.iDeviceClass; + aDeviceDescriptor.iDeviceSubClass = deviceDes.iDeviceSubClass; + aDeviceDescriptor.iDeviceProtocol = deviceDes.iDeviceProtocol; + aDeviceDescriptor.iIdVendor = deviceDes.iIdVendor; + aDeviceDescriptor.iIdProduct = deviceDes.iIdProduct; + aDeviceDescriptor.iBcdDevice = deviceDes.iBcdDevice; + aDeviceDescriptor.iSerialNumber = deviceDes.iSerialNumber; + aDeviceDescriptor.iNumConfigurations = deviceDes.iNumConfigurations; -#ifndef __OVER_DUMMYUSBDI__ #ifndef __WINS__ - TInt err = iLdd.SetManufacturerStringDescriptor(*(iDeviceConfiguration.iManufacturerName)); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP7, "CUsbDevice::SetUsbDeviceSettingsFromPersonalityL;iLdd.SetManufacturerStringDescriptor(*(iCurrentPersonality->Manufacturer())) with error=%d", err ); - User::Leave(err); - } - err = iLdd.SetProductStringDescriptor(*(iDeviceConfiguration.iProductName)); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP6, "CUsbDevice::SetUsbDeviceSettingsFromPersonalityL;iLdd.SetProductStringDescriptor(*(iCurrentPersonality->Product())) with error=%d", err ); - User::Leave(err); - } - + LEAVEIFERRORL(iLdd.SetManufacturerStringDescriptor(*(iCurrentPersonality->Manufacturer()))); + LEAVEIFERRORL(iLdd.SetProductStringDescriptor(*(iCurrentPersonality->Product()))); //Read the published serial number. The key is the UID KUidUsbmanServer = 0x101FE1DB TBuf16 serNum; TInt r = RProperty::Get(KUidSystemCategory,0x101FE1DB,serNum); if(r==KErrNone) { -#ifdef _DEBUG - OstTraceExt1( TRACE_NORMAL, CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP1, "CUsbDevice::SetUsbDeviceSettingsFromPersonalityL;Setting published SerialNumber: %S", serNum ); -#endif//_DEBUG +#ifdef __FLOG_ACTIVE + TBuf8 narrowString; + narrowString.Copy(serNum); + LOGTEXT2(_L8("Setting published SerialNumber: %S"), &narrowString); +#endif // __FLOG_ACTIVE //USB spec doesn't give any constraints on what constitutes a valid serial number. //As long as it is a string descriptor it is valid. - err = iLdd.SetSerialNumberStringDescriptor(serNum); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP3, "CUsbDevice::SetUsbDeviceSettingsFromPersonalityL;iLdd.SetSerialNumberStringDescriptor(serNum) with error=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(iLdd.SetSerialNumberStringDescriptor(serNum)); } -#ifdef _DEBUG +#ifdef __FLOG_ACTIVE else { - OstTrace0( TRACE_NORMAL, CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP2, "CUsbDevice::SetUsbDeviceSettingsFromPersonalityL;SerialNumber has not been published" ); + LOGTEXT(_L8("SerialNumber has not been published")); } -#endif // _DEBUG - -#endif -#endif // __OVER_DUMMYUSBDI__ +#endif // __FLOG_ACTIVE +#endif // __WINS__ -#ifdef _DEBUG +#ifdef __FLOG_ACTIVE PrintDescriptor(aDeviceDescriptor); -#ifndef __OVER_DUMMYUSBDI__ #ifndef __WINS__ TBuf16 wideString; - TInt tmp = iLdd.GetConfigurationStringDescriptor(wideString); - if(tmp < 0) - { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP5, "CUsbDevice::SetUsbDeviceSettingsFromPersonalityL;iLdd.GetConfigurationStringDescriptor(wideString) with error=%d", tmp ); - User::Leave(tmp); - } - OstTraceExt1( TRACE_NORMAL, CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP4, "CUsbDevice::SetUsbDeviceSettingsFromPersonalityL;Configuration is:%S", wideString ); -#endif -#endif // __OVER_DUMMYUSBDI__ + TBuf8 narrowString; -#endif // _DEBUG + LEAVEIFERRORL(iLdd.GetConfigurationStringDescriptor(wideString)); + narrowString.Copy(wideString); + LOGTEXT2(_L8("Configuration is: '%S'"), &narrowString); +#endif // __WINS__ + +#endif // __FLOG_ACTIVE } void CUsbDevice::TryStartL(TInt aPersonalityId) @@ -1066,7 +1063,7 @@ * @param aPersonalityId a personality id */ { - OstTraceFunctionEntry0( CUSBDEVICE_TRYSTARTL_ENTRY ); + LOG_FUNC SetCurrentPersonalityL(aPersonalityId); SelectClassControllersL(); @@ -1075,14 +1072,12 @@ TRAPD(err, SetDeviceDescriptorL()); if ( err != KErrNone ) { - SetServiceState(EUsbServiceIdle); - OstTrace1( TRACE_NORMAL, CUSBDEVICE_TRYSTARTL, "CUsbDevice::TryStartL;leave with error=%d", err ); - User::Leave(err); + SetServiceState(EUsbServiceIdle); + LEAVEL(err); } iLastError = KErrNone; StartCurrentClassController(); - OstTraceFunctionExit0( CUSBDEVICE_TRYSTARTL_EXIT ); } TInt CUsbDevice::CurrentPersonalityId() const @@ -1090,7 +1085,7 @@ * @return the current personality id */ { - OstTraceFunctionEntry0( CUSBDEVICE_CURRENTPERSONALITYID_ENTRY ); + LOG_FUNC return iCurrentPersonality->PersonalityId(); } @@ -1099,7 +1094,7 @@ * @return a const reference to RPointerArray */ { - OstTraceFunctionEntry0( CUSBDEVICE_PERSONALITIES_ENTRY ); + LOG_FUNC return iSupportedPersonalities; } @@ -1112,19 +1107,17 @@ * or 0 otherwise. */ { - OstTraceFunctionEntry0( CUSBDEVICE_GETPERSONALITY_ENTRY ); + LOG_FUNC TInt count = iSupportedPersonalities.Count(); for (TInt i = 0; i < count; i++) { if (iSupportedPersonalities[i]->PersonalityId() == aPersonalityId) { - OstTraceFunctionExit0( CUSBDEVICE_GETPERSONALITY_EXIT ); return iSupportedPersonalities[i]; } } - OstTraceFunctionExit0( CUSBDEVICE_GETPERSONALITY_EXIT_DUP1 ); return 0; } @@ -1133,16 +1126,15 @@ * Sets the current personality to the personality with id aPersonalityId */ { - OstTraceFunctionEntry0( CUSBDEVICE_SETCURRENTPERSONALITYL_ENTRY ); + LOG_FUNC const CPersonality* personality = GetPersonality(aPersonalityId); if (!personality) { - OstTrace0( TRACE_NORMAL, CUSBDEVICE_SETCURRENTPERSONALITYL, "CUsbDevice::SetCurrentPersonalityL;Personality id not found" ); - User::Leave(KErrNotFound); + LOGTEXT(_L8("Personality id not found")); + LEAVEL(KErrNotFound); } iCurrentPersonality = personality; - OstTraceFunctionExit0( CUSBDEVICE_SETCURRENTPERSONALITYL_EXIT ); } void CUsbDevice::ValidatePersonalitiesL() @@ -1151,34 +1143,31 @@ * Leave if validation fails. */ { - OstTraceFunctionEntry0( CUSBDEVICE_VALIDATEPERSONALITIESL_ENTRY ); + LOG_FUNC TInt personalityCount = iSupportedPersonalities.Count(); for (TInt i = 0; i < personalityCount; i++) { - const RArray& classes = iSupportedPersonalities[i]->SupportedClasses(); - TInt uidCount = classes.Count(); + const RArray& classUids = iSupportedPersonalities[i]->SupportedClasses(); + TInt uidCount = classUids.Count(); for (TInt j = 0; j < uidCount; j++) { TInt ccCount = iSupportedClassUids.Count(); TInt k; - OstTrace1( TRACE_NORMAL, CUSBDEVICE_VALIDATEPERSONALITIESL_DUP1, "CUsbDevice::ValidatePersonalitiesL;iSupportedClassUids Count = %d", ccCount ); for (k = 0; k < ccCount; k++) { - OstTraceExt4( TRACE_NORMAL, CUSBDEVICE_VALIDATEPERSONALITIESL_DUP2, "CUsbDevice::ValidatePersonalitiesL;iSupportedClassUids %d %x classes %d %x", k, iSupportedClassUids[k].iUid, j, classes[j].iClassUid.iUid ); - if (iSupportedClassUids[k] == classes[j].iClassUid) + if (iSupportedClassUids[k] == classUids[j]) { break; } } if (k == ccCount) { - OstTrace0( TRACE_NORMAL, CUSBDEVICE_VALIDATEPERSONALITIESL, "CUsbDevice::ValidatePersonalitiesL;personality validation failed" ); - User::Leave(KErrAbort); + LOGTEXT(_L8("personality validation failed")); + LEAVEL(KErrAbort); } } } - OstTraceFunctionExit0( CUSBDEVICE_VALIDATEPERSONALITIESL_EXIT ); } /** Converts text string with UIDs to array of Uint @@ -1192,15 +1181,8 @@ */ void CUsbDevice::ConvertUidsL(const TDesC& aStr, RArray& aUidArray) { - OstTraceFunctionEntry0( CUSBDEVICE_CONVERTUIDSL_ENTRY ); // Function assumes that aUIDs is empty -#ifdef _DEBUG - if(aUidArray.Count() != 0) - { - OstTrace1( TRACE_FATAL, CUSBDEVICE_CONVERTUIDSL, "CUsbDevice::ConvertUidsL;Panic reason=%d", EUidArrayNotEmpty ); - User::Panic(KUsbDevicePanicCategory, EUidArrayNotEmpty); - } -#endif + __ASSERT_DEBUG( aUidArray.Count() == 0, _USB_PANIC(KUsbDevicePanicCategory, EUidArrayNotEmpty) ); TLex input(aStr); @@ -1216,71 +1198,230 @@ // Convert and add to array TUint val; - TInt err = input.Val(val,EHex); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_CONVERTUIDSL_DUP1, "CUsbDevice::ConvertUidsL;input.Val(val,EHex) with error=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(input.Val(val,EHex)); aUidArray.AppendL(val); } while (!input.Eos()); - OstTraceFunctionExit0( CUSBDEVICE_CONVERTUIDSL_EXIT ); } void CUsbDevice::ReadPersonalitiesL() - { - OstTraceFunctionEntry0( CUSBDEVICE_READPERSONALITIESL_ENTRY ); - TPtrC16 sysUtilModelName; - TPtrC16 sysUtilManuName; - - iPersonalityCfged = EFalse; - - iCenRepManager->ReadDeviceConfigurationL(iDeviceConfiguration); - - iCenRepManager->ReadPersonalitiesL(iSupportedPersonalities); - - //update info for SetManufacturer & SetProduct - CDeviceTypeInformation* deviceInfo = SysUtil::GetDeviceTypeInfoL(); - CleanupStack::PushL(deviceInfo); - TInt gotSysUtilModelName = deviceInfo->GetModelName(sysUtilModelName); - TInt gotSysUtilManuName = deviceInfo->GetManufacturerName(sysUtilManuName); - - //To overlap info - if (gotSysUtilManuName == KErrNone) - { - iDeviceConfiguration.iManufacturerName->Des().Copy(sysUtilManuName); - } - - if (gotSysUtilModelName == KErrNone) - { - iDeviceConfiguration.iProductName->Des().Copy(sysUtilModelName); - } - CleanupStack::PopAndDestroy(deviceInfo); - iPersonalityCfged = ETrue; - OstTraceFunctionExit0( CUSBDEVICE_READPERSONALITIESL_EXIT ); - } +/** + * Reads configured personalities from the resource file + */ + { + LOG_FUNC + iPersonalityCfged = EFalse; + // Now try to connect to file server + RFs fs; + LEAVEIFERRORL(fs.Connect()); + CleanupClosePushL(fs); + + TFileName resourceFileName; + ResourceFileNameL(resourceFileName); + RResourceFile resource; + TRAPD(err, resource.OpenL(fs, resourceFileName)); + LOGTEXT2(_L8("Opened resource file with error %d"), err); + + if (err != KErrNone) + { + LOGTEXT(_L8("Unable to open resource file")); + CleanupStack::PopAndDestroy(&fs); + return; + } + + CleanupClosePushL(resource); + + TInt resourceVersion = resource.SignatureL(); + LOGTEXT2(_L8("Resource file signature is %d"), resourceVersion); + // Check for the version is valid(EUsbManagerResourceVersionOne, EUsbManagerResourceVersionTwo + // or EUsbManagerResourceVersionThree). + if(resourceVersion > EUsbManagerResourceVersionThree) + { + LOGTEXT2(_L8("Version of resource file is valid (>%d)"), EUsbManagerResourceVersionThree); + User::LeaveIfError(KErrNotSupported); + } + + resource.ConfirmSignatureL(resourceVersion); + + HBufC8* personalityBuf = 0; + TRAPD(ret, personalityBuf = resource.AllocReadL(DEVICE_PERSONALITIES)); + // If personalities resource is not found, swallow the error and return + // as no specified personalities is a valid configuration + if (ret == KErrNotFound) + { + LOGTEXT(_L8("Personalities are not configured")); + CleanupStack::PopAndDestroy(2, &fs); + return; + } + // Otherwise leave noisily if the AllocRead fails + LEAVEIFERRORL(ret); + CleanupStack::PushL(personalityBuf); + + // The format of the USB resource structure is: + // + // STRUCT PERSONALITY + // { + // WORD bcdDeviceClass; + // WORD bcdDeviceSubClass; + // WORD protocol; + // WORD numConfigurations; + // WORD vendorId; + // WORD productId; + // WORD bcdDevice; + // LTEXT manufacturer; + // LTEXT product; + // WORD id; // personality id + // LTEXT class_uids; + // LTEXT description; // personality description + // LTEXT detailedDescription; //detailed description. This is in version 2 + // LONG Property; + // } + // + // Note that the resource must be read in this order! + + TResourceReader reader; + reader.SetBuffer(personalityBuf); + + TUint16 personalityCount = static_cast(reader.ReadUint16()); + + // Read the manufacturer and device name (product) here from SysUtil class + TPtrC16 sysUtilModelName; + TPtrC16 sysUtilManuName; + + // This method returns ownership. + CDeviceTypeInformation* deviceInfo = SysUtil::GetDeviceTypeInfoL(); + CleanupStack::PushL(deviceInfo); + TInt gotSysUtilModelName = deviceInfo->GetModelName(sysUtilModelName); + TInt gotSysUtilManuName = deviceInfo->GetManufacturerName(sysUtilManuName); + + for (TInt idx = 0; idx < personalityCount; idx++) + { + // read a personality + TUint8 bDeviceClass = static_cast(reader.ReadUint8()); + TUint8 bDeviceSubClass = static_cast(reader.ReadUint8()); + TUint8 protocol = static_cast(reader.ReadUint8()); + TUint8 numConfigurations = static_cast(reader.ReadUint8()); + TUint16 vendorId = static_cast(reader.ReadUint16()); + TUint16 productId = static_cast(reader.ReadUint16()); + TUint16 bcdDevice = static_cast(reader.ReadUint16()); + TPtrC manufacturer = reader.ReadTPtrC(); + TPtrC product = reader.ReadTPtrC(); + TUint16 id = static_cast(reader.ReadUint16()); + TPtrC uidsStr = reader.ReadTPtrC(); + TPtrC description = reader.ReadTPtrC(); + + RArray uids; + CleanupClosePushL(uids); + ConvertUidsL(uidsStr, uids); + // creates a CPersonality object + CPersonality* personality = CPersonality::NewL(); + CleanupStack::PushL(personality); + + personality->SetVersion(resourceVersion); + + // populates personality object + personality->SetId(id); + + for (TInt uidIdx = 0; uidIdx < uids.Count(); uidIdx++) + { + LEAVEIFERRORL(personality->AddSupportedClasses(TUid::Uid(uids[uidIdx]))); + } + + // gets a handle to iDeviceDescriptor of personality + CUsbDevice::TUsbDeviceDescriptor& dvceDes = personality->DeviceDescriptor(); + if (gotSysUtilManuName == KErrNone) + { + personality->SetManufacturer(&sysUtilManuName); + } + else + { + personality->SetManufacturer(&manufacturer); + } + + if (gotSysUtilModelName == KErrNone) + { + personality->SetProduct(&sysUtilModelName); + } + else + { + personality->SetProduct(&product); + } + + personality->SetDescription(&description); + dvceDes.iDeviceClass = bDeviceClass; + dvceDes.iDeviceSubClass = bDeviceSubClass; + dvceDes.iDeviceProtocol = protocol; + dvceDes.iIdVendor = vendorId; + dvceDes.iIdProduct= productId; + dvceDes.iBcdDevice = bcdDevice; + dvceDes.iNumConfigurations = numConfigurations; + + //detailedDescription is only supported after EUsbManagerResourceVersionTwo + if(resourceVersion >= EUsbManagerResourceVersionTwo) + { + TPtrC detailedDescription = reader.ReadTPtrC(); + personality->SetDetailedDescription(&detailedDescription); +#ifdef __FLOG_ACTIVE + TBuf8 narrowLongBuf; + narrowLongBuf.Copy(detailedDescription); + LOGTEXT2(_L8("detailed description = '%S'"), &narrowLongBuf); +#endif // __FLOG_ACTIVE + } + + //Property is only supported after EUsbManagerResourceVersionThree + if(resourceVersion >= EUsbManagerResourceVersionThree) + { + TUint32 property = static_cast(reader.ReadUint32()); + personality->SetProperty(property); +#ifdef __FLOG_ACTIVE + LOGTEXT2(_L8("property = %d\n"), property); +#endif // __FLOG_ACTIVE + } + + // Append personality to iSupportedPersonalities + iSupportedPersonalities.AppendL(personality); + // Now pop off personality + CleanupStack::Pop(personality); +#ifdef __FLOG_ACTIVE + // Debugging + LOGTEXT2(_L8("personalityCount = %d\n"), personalityCount); + LOGTEXT2(_L8("bDeviceClass = %d\n"), bDeviceClass); + LOGTEXT2(_L8("bDeviceSubClass = %d\n"), bDeviceSubClass); + LOGTEXT2(_L8("protocol = %d\n"), protocol); + LOGTEXT2(_L8("numConfigurations = %d\n"), numConfigurations); + LOGTEXT2(_L8("vendorId = %d\n"), vendorId); + LOGTEXT2(_L8("productId = %d\n"), productId); + LOGTEXT2(_L8("bcdDevice = %d\n"), bcdDevice); + TBuf8 narrowBuf; + narrowBuf.Copy(manufacturer); + LOGTEXT2(_L8("manufacturer = '%S'"), &narrowBuf); + narrowBuf.Copy(product); + LOGTEXT2(_L8("product = '%S'"), &narrowBuf); + LOGTEXT2(_L8("id = %d\n"), id); + LOGTEXT(_L8("ClassUids{")); + for (TInt k = 0; k < uids.Count(); k++) + { + LOGTEXT2(_L8("%d"), uids[k]); + } + LOGTEXT(_L8("}")); + narrowBuf.Copy(description); + LOGTEXT2(_L8("description = '%S'"), &narrowBuf); +#endif // __FLOG_ACTIVE + CleanupStack::PopAndDestroy(&uids); // close uid array + } + + CleanupStack::PopAndDestroy(4, &fs); // deviceInfo, personalityBuf, resource, fs + iPersonalityCfged = ETrue; + } void CUsbDevice::SelectClassControllersL() /** * Selects class controllers for the current personality */ { - OstTraceFunctionEntry0( CUSBDEVICE_SELECTCLASSCONTROLLERSL_ENTRY ); - const RArray& classes = iCurrentPersonality->SupportedClasses(); - RArray classUids; - CleanupClosePushL( classUids ); - TInt classCount = classes.Count(); - for(TInt classIndex = 0; classIndexSupportedClasses()); } #ifdef USE_DUMMY_CLASS_CONTROLLER void CUsbDevice::CreateClassControllersL(const RArray& /* aClassUids*/) @@ -1293,7 +1434,7 @@ * @param aClassUids an array of class uids */ { - OstTraceFunctionEntry0( CUSBDEVICE_CREATECLASSCONTROLLERSL_ENTRY ); + LOG_FUNC #ifndef USE_DUMMY_CLASS_CONTROLLER @@ -1305,19 +1446,15 @@ // destroy any class controller objects in iSupportedClasses and reset it for reuse iSupportedClasses.ResetAndDestroy(); - OstTrace1( TRACE_NORMAL, CUSBDEVICE_CREATECLASSCONTROLLERSL, "CUsbDevice::CreateClassControllersL;aClassUids.Count() = %d", count ); + LOGTEXT2(_L8("aClassUids.Count() = %d\n"), count); for (TInt i = 0; i < count; i++) { CUsbClassControllerPlugIn* plugIn = CUsbClassControllerPlugIn::NewL(aClassUids[i], *this); AddClassControllerL(reinterpret_cast(plugIn), order); } #endif // USE_DUMMY_CLASS_CONTROLLER - TInt err = iUsbClassControllerIterator->First(); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_CREATECLASSCONTROLLERSL_DUP1, "CUsbDevice::CreateClassControllersL;iUsbClassControllerIterator->First() with error=%d", err ); - User::Leave(err); - } + + LEAVEIFERRORL(iUsbClassControllerIterator->First()); } void CUsbDevice::SetDefaultPersonalityL() @@ -1325,10 +1462,11 @@ * Sets default personality. Used for Start request. */ { - OstTraceFunctionEntry0( CUSBDEVICE_SETDEFAULTPERSONALITYL_ENTRY ); + LOG_FUNC TInt smallestId = iSupportedPersonalities[0]->PersonalityId(); TInt count = iSupportedPersonalities.Count(); + for (TInt i = 1; i < count; i++) { if(iSupportedPersonalities[i]->PersonalityId() < smallestId) @@ -1336,10 +1474,9 @@ smallestId = iSupportedPersonalities[i]->PersonalityId(); } } - + SetCurrentPersonalityL(smallestId); SelectClassControllersL(); - OstTraceFunctionExit0( CUSBDEVICE_SETDEFAULTPERSONALITYL_EXIT ); } void CUsbDevice::LoadFallbackClassControllersL() @@ -1351,12 +1488,49 @@ * or stopped */ { - OstTraceFunctionEntry0( CUSBDEVICE_LOADFALLBACKCLASSCONTROLLERSL_ENTRY ); + LOG_FUNC SetDeviceDescriptorL(); CreateClassControllersL(iSupportedClassUids); - OstTraceFunctionExit0( CUSBDEVICE_LOADFALLBACKCLASSCONTROLLERSL_EXIT ); } +void CUsbDevice::ResourceFileNameL(TFileName& aFileName) +/** + * Gets resource file name + * + * @param aFileName Descriptor to populate with resource file name + */ + { + LOG_FUNC + + RFs fs; + LEAVEIFERRORL(fs.Connect()); + CleanupClosePushL(fs); + +#ifdef __WINS__ + // If we are running in the emulator then read the resource file from system drive. + // This makes testing with different resource files easier. + _LIT(KPrivatePath, ":\\Private\\101fe1db\\"); + aFileName.Append(RFs::GetSystemDriveChar()); //get the name of system drive + aFileName.Append(KPrivatePath); +#else + const TDriveNumber KResourceDrive = EDriveZ; + + TDriveUnit driveUnit(KResourceDrive); + TDriveName drive=driveUnit.Name(); + aFileName.Insert(0, drive); + // append private path + TPath privatePath; + fs.PrivatePath(privatePath); + aFileName.Append(privatePath); +#endif //WINS + + // Find the nearest match of resource file for the chosen locale + aFileName.Append(_L("usbman.rsc")); + BaflUtils::NearestLanguageFile(fs, aFileName); // if a match is not found, usbman.rsc will be used + + CleanupStack::PopAndDestroy(&fs); // fs no longer needed + } + RDevUsbcClient& CUsbDevice::MuepoDoDevUsbcClient() /** * Inherited from MUsbmanExtensionPluginObserver - Function used by plugins to @@ -1376,6 +1550,6 @@ * @param aObserver New Observer of the device */ { - OstTrace1( TRACE_NORMAL, CUSBDEVICE_MUEPODOREGISTERSTATEOBSERVERL, "CUsbDevice::MuepoDoRegisterStateObserverL;aObserver = 0x%08x", &aObserver ); + LOGTEXT2(_L8("CUsbDevice::MuepoDoRegisterStateObserverL aObserver = 0x%08x"),&aObserver); RegisterObserverL(aObserver); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/CUsbDeviceStateWatcher.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/CUsbDeviceStateWatcher.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/SRC/CUsbDeviceStateWatcher.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -21,16 +21,15 @@ @file */ +#include #include "CUsbScheduler.h" #include "CUsbDeviceStateWatcher.h" #include "CUsbDevice.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbDeviceStateWatcherTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "USBSVR"); #endif - - /** * The CUsbDeviceStateWatcher::NewL method * @@ -44,10 +43,9 @@ */ CUsbDeviceStateWatcher* CUsbDeviceStateWatcher::NewL(CUsbDevice& aOwner, RDevUsbcClient& aLdd) { - OstTraceFunctionEntry0( CUSBDEVICESTATEWATCHER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY CUsbDeviceStateWatcher* r = new (ELeave) CUsbDeviceStateWatcher(aOwner, aLdd); - OstTraceFunctionExit0( CUSBDEVICESTATEWATCHER_NEWL_EXIT ); return r; } @@ -61,8 +59,7 @@ */ CUsbDeviceStateWatcher::~CUsbDeviceStateWatcher() { - OstTrace1( TRACE_NORMAL, CUSBDEVICESTATEWATCHER_CUSBDEVICESTATEWATCHER, - "CUsbDeviceStateWatcher::~CUsbDeviceStateWatcher; this=(0x%08x)", (TUint32)this ); + LOGTEXT2(_L8(">CUsbDeviceStateWatcher::~CUsbDeviceStateWatcher (0x%08x)"), (TUint32) this); Cancel(); } @@ -88,21 +85,19 @@ { if (iStatus.Int() != KErrNone) { - OstTrace1( TRACE_NORMAL, CUSBDEVICESTATEWATCHER_RUNL, - "CUsbDeviceStateWatcher::RunL;Error=%d", iStatus.Int() ); + LOGTEXT2(_L8("CUsbDeviceStateWatcher::RunL() - Error = %d"), iStatus.Int()); return; } - OstTrace1( TRACE_NORMAL, CUSBDEVICESTATEWATCHER_RUNL_DUP1, "CUsbDeviceStateWatcher::RunL; - State Changed to %u", iState ); - + LOGTEXT2(_L8("CUsbDeviceStateWatcher::RunL() - State Changed to %d"), iState); + if (!(iState & KUsbAlternateSetting)) iOwner.SetDeviceState((TUsbcDeviceState) iState); - OstTrace0( TRACE_NORMAL, CUSBDEVICESTATEWATCHER_RUNL_DUP2, - "CUsbDeviceStateWatcher::RunL - About to call DeviceStatusNotify" ); + LOGTEXT(_L8("CUsbDeviceStateWatcher::RunL() - About to call DeviceStatusNotify")); iLdd.AlternateDeviceStatusNotify(iStatus, iState); SetActive(); - OstTrace0( TRACE_NORMAL, CUSBDEVICESTATEWATCHER_RUNL_DUP3, "CUsbDeviceStateWatcher::RunL - Called DeviceStatusNotify" ); + LOGTEXT(_L8("CUsbDeviceStateWatcher::RunL() - Called DeviceStatusNotify")); } @@ -111,9 +106,8 @@ */ void CUsbDeviceStateWatcher::DoCancel() { - OstTraceFunctionEntry0( CUSBDEVICESTATEWATCHER_DOCANCEL_ENTRY ); + LOG_FUNC iLdd.AlternateDeviceStatusNotifyCancel(); - OstTraceFunctionExit0( CUSBDEVICESTATEWATCHER_DOCANCEL_EXIT ); } @@ -122,8 +116,7 @@ */ void CUsbDeviceStateWatcher::Start() { - OstTraceFunctionEntry0( CUSBDEVICESTATEWATCHER_START_ENTRY ); + LOG_FUNC iLdd.AlternateDeviceStatusNotify(iStatus, iState); SetActive(); - OstTraceFunctionExit0( CUSBDEVICESTATEWATCHER_START_EXIT ); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/CUsbDummyClassController.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/CUsbDummyClassController.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/SRC/CUsbDummyClassController.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -20,17 +20,15 @@ @file */ +#include "CUsbDummyClassController.h" #include -#include -#include "CUsbDummyClassController.h" #include "inifile.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbDummyClassControllerTraces.h" +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "USBSVR"); #endif - - _LIT(KDummyControllerPanic, "UsbDummyCC"); // must be <=16 chars // Panic codes enum @@ -83,13 +81,12 @@ * @return Ownership of a new CUsbDummyClassController object */ { - OstTraceFunctionEntry0( CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_ENTRY ); + LOG_STATIC_FUNC_ENTRY CUsbDummyClassController* self = new(ELeave) CUsbDummyClassController(aOwner, aIndex); CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(self); - OstTraceFunctionExit0( CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_EXIT ); return self; } @@ -106,13 +103,12 @@ * @return Ownership of a new CUsbDummyClassController object */ { - OstTraceFunctionEntry0( CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_TINT_ENTRY ); + LOG_STATIC_FUNC_ENTRY CUsbDummyClassController* self = new(ELeave) CUsbDummyClassController(aOwner, aIndex, aPriority); CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(self); - OstTraceFunctionExit0( CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_TINT_EXIT ); return self; } @@ -153,12 +149,7 @@ * Method to perform second phase construction. */ { - TInt err = iTimer.CreateLocal(); - if(err < 0) - { - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_CONSTRUCTL, "CUsbDummyClassController::ConstructL; iTimer.CreateLocal() error, Leave error=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(iTimer.CreateLocal()); } CUsbDummyClassController::~CUsbDummyClassController() @@ -183,19 +174,18 @@ * @param aBehaviour The behaviour struct to read to. */ { - OstTraceFunctionEntry0( CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_ENTRY ); -#ifdef _DEBUG - OstTraceExt1( TRACE_NORMAL, CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR, - "CUsbDummyClassController::GetBehaviour;aSection=%S", aSection ); -#endif//_DEBUG + LOG_FUNC +#ifdef __FLOG_ACTIVE + TBuf8 buf; + buf.Copy(aSection); + LOGTEXT2(_L8("\taSection = %S"), &buf); +#endif // __FLOG_ACTIVE TPtrC temp; if ( !aIniFile.FindVar(aSection, KType(), temp) ) { - OstTraceExt1( TRACE_NORMAL, CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP1, - "CUsbDummyClassController::GetBehaviour;PANICKING: can't find Type item in section %S", aSection ); - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP2, "CUsbDummyClassController::GetBehaviour; panic code=%d", EDummyPanicBadIniFile ); - User::Panic(KDummyControllerPanic, EDummyPanicBadIniFile ); + LOGTEXT2(_L8("\tPANICKING: can't find Type item in section %S"), &aSection); + _USB_PANIC(KDummyControllerPanic, EDummyPanicBadIniFile); } if ( temp == KSync ) { @@ -211,28 +201,21 @@ } else { - OstTraceExt2( TRACE_NORMAL, CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP3, - "CUsbDummyClassController::GetBehaviour;PANICKING: bad Type value (%S) in section %S", temp, aSection ); - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP4, "CUsbDummyClassController::GetBehaviour; panic code=%d", EDummyPanicBadIniFile ); - User::Panic(KDummyControllerPanic, EDummyPanicBadIniFile); + LOGTEXT3(_L8("\tPANICKING: bad Type value (%S) in section %S"), &temp, &aSection); + _USB_PANIC(KDummyControllerPanic, EDummyPanicBadIniFile); } TInt delay; if ( !aIniFile.FindVar(aSection, KTime(), delay) ) { - OstTraceExt1( TRACE_NORMAL, CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP5, - "CUsbDummyClassController::GetBehaviour;PANICKING: can't find Time item in section %S", aSection ); - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP6, "CUsbDummyClassController::GetBehaviour;panic code=%d", EDummyPanicBadIniFile ); - User::Panic(KDummyControllerPanic, EDummyPanicBadIniFile); + LOGTEXT2(_L8("\tPANICKING: can't find Time item in section %S"), &aSection); + _USB_PANIC(KDummyControllerPanic, EDummyPanicBadIniFile); } aBehaviour.iDelay = delay; if ( !aIniFile.FindVar(aSection, KError(), aBehaviour.iErrorCode) ) { - OstTraceExt1( TRACE_NORMAL, CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP7, - "CUsbDummyClassController::GetBehaviour;aSection=%S", aSection ); - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP8, "CUsbDummyClassController::GetBehaviour;panic code=%d", EDummyPanicBadIniFile ); - User::Panic(KDummyControllerPanic, EDummyPanicBadIniFile ); + LOGTEXT2(_L8("\tPANICKING: can't find Error item in section %S"), &aSection); + _USB_PANIC(KDummyControllerPanic, EDummyPanicBadIniFile); } - OstTraceFunctionExit0( CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_EXIT ); } void CUsbDummyClassController::DoGetConfigL() @@ -240,7 +223,7 @@ * Reads the config from the ini file. */ { - OstTraceFunctionEntry0( CUSBDUMMYCLASSCONTROLLER_DOGETCONFIGL_ENTRY ); + LOG_FUNC CIniFile* iniFile = CIniFile::NewL(_L("dummy.ini")); CleanupStack::PushL(iniFile); @@ -254,7 +237,6 @@ GetBehaviour(*iniFile, section, iShutdownBehaviour); CleanupStack::PopAndDestroy(iniFile); - OstTraceFunctionExit0( CUSBDUMMYCLASSCONTROLLER_DOGETCONFIGL_EXIT ); } void CUsbDummyClassController::GetConfig() @@ -265,7 +247,7 @@ * the user to figure out what's gone wrong. */ { - OstTraceFunctionEntry0( CUSBDUMMYCLASSCONTROLLER_GETCONFIG_ENTRY ); + LOG_FUNC // Always use dummy.ini. The entity setting up the test is responsible for // copying the correct file to c:\\dummy.ini. The first found @@ -273,25 +255,16 @@ TRAPD(err, DoGetConfigL()); if ( err != KErrNone ) { - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP7, "CUsbDummyClassController::GetConfig;panic code=%d", EDummyPanicUnhandledError ); - User::Panic(KDummyControllerPanic, EDummyPanicUnhandledError); + _USB_PANIC(KDummyControllerPanic, EDummyPanicUnhandledError); } - OstTrace1( TRACE_NORMAL, CUSBDUMMYCLASSCONTROLLER_GETCONFIG, - "CUsbDummyClassController::GetConfig; Logging dummy class controller behaviour for instance %d", iIndex ); - OstTrace1( TRACE_NORMAL, CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP1, - "CUsbDummyClassController::GetConfig;iStartupBehaviour.iSynchronicity=%d", iStartupBehaviour.iSynchronicity ); - OstTrace1( TRACE_NORMAL, CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP2, - "CUsbDummyClassController::GetConfig;iStartupBehaviour.iDelay.Int()=%d", iStartupBehaviour.iDelay.Int() ); - OstTrace1( TRACE_NORMAL, CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP3, - "CUsbDummyClassController::GetConfig;iStartupBehaviour.iErrorCode=%d", iStartupBehaviour.iErrorCode ); - OstTrace1( TRACE_NORMAL, CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP4, - "CUsbDummyClassController::GetConfig;iShutdownBehaviour.iSynchronicity=%d", iShutdownBehaviour.iSynchronicity ); - OstTrace1( TRACE_NORMAL, CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP5, - "CUsbDummyClassController::GetConfig;iShutdownBehaviour.iDelay.Int()=%d", iShutdownBehaviour.iDelay.Int() ); - OstTrace1( TRACE_NORMAL, CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP6, - "CUsbDummyClassController::GetConfig;iShutdownBehaviour.iErrorCode=%d", iShutdownBehaviour.iErrorCode ); - OstTraceFunctionExit0( CUSBDUMMYCLASSCONTROLLER_GETCONFIG_EXIT ); + LOGTEXT2(_L8("\tLogging dummy class controller behaviour for instance %d"), iIndex); + LOGTEXT2(_L8("\tiStartupBehaviour.iSynchronicity = %d"), iStartupBehaviour.iSynchronicity); + LOGTEXT2(_L8("\tiStartupBehaviour.iDelay = %d"), iStartupBehaviour.iDelay.Int()); + LOGTEXT2(_L8("\tiStartupBehaviour.iErrorCode = %d"), iStartupBehaviour.iErrorCode); + LOGTEXT2(_L8("\tiShutdownBehaviour.iSynchronicity = %d"), iShutdownBehaviour.iSynchronicity); + LOGTEXT2(_L8("\tiShutdownBehaviour.iDelay = %d"), iShutdownBehaviour.iDelay.Int()); + LOGTEXT2(_L8("\tiShutdownBehaviour.iErrorCode = %d"), iShutdownBehaviour.iErrorCode); } void CUsbDummyClassController::Start(TRequestStatus& aStatus) @@ -301,16 +274,11 @@ * @param aStatus Will be completed with success or failure. */ { - OstTraceFunctionEntry0( CUSBDUMMYCLASSCONTROLLER_START_ENTRY ); - - //Start() should only be called if the CC is idle or started + LOG_FUNC - if(!(iState == EUsbServiceIdle || iState == EUsbServiceStarted)) - { - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_START, "CUsbDummyClassController::Start;panic code=%d", EDummyPanicBadApiCallStart ); - __ASSERT_DEBUG(EFalse, - User::Panic(KDummyControllerPanic, EDummyPanicBadApiCallStart) ); - } + //Start() should only be called if the CC is idle or started + __ASSERT_DEBUG((iState == EUsbServiceIdle || iState == EUsbServiceStarted), + _USB_PANIC(KDummyControllerPanic, EDummyPanicBadApiCallStart) ); // Get config from ini file. Note that can't be done once in ConstructL // because then, in the case of a CC which doesn't Stop, we'd never be @@ -318,12 +286,8 @@ GetConfig(); // NB We enforce that the device doesn't re-post requests on us. - if(iReportStatus) - { - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_START_DUP1, "CUsbDummyClassController::Start;panic code=%d", EDummyPanicOutstandingRequestFromDevice ); - __ASSERT_DEBUG(EFalse, - User::Panic(KDummyControllerPanic, EDummyPanicOutstandingRequestFromDevice)); - } + __ASSERT_DEBUG(!iReportStatus, + _USB_PANIC(KDummyControllerPanic, EDummyPanicOutstandingRequestFromDevice)); aStatus = KRequestPending; iReportStatus = &aStatus; @@ -340,13 +304,7 @@ case EAsynchronous: iTimer.After(iStatus, iStartupBehaviour.iDelay); -#ifdef _DEBUG - if(IsActive()) - { - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_START_DUP2, "CUsbDummyClassController::Start;panic code=%d", EDummyPanicAlreadyActive ); - User::Panic(KDummyControllerPanic, EDummyPanicAlreadyActive); - } -#endif + __ASSERT_DEBUG(!IsActive(), _USB_PANIC(KDummyControllerPanic, EDummyPanicAlreadyActive)); SetActive(); break; @@ -355,11 +313,9 @@ break; default: - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_START_DUP3, "CUsbDummyClassController::Start;panic code=%d", EDummyPanicBadSynchronicity ); - User::Panic(KDummyControllerPanic, EDummyPanicBadSynchronicity); + _USB_PANIC(KDummyControllerPanic, EDummyPanicBadSynchronicity); break; } - OstTraceFunctionExit0( CUSBDUMMYCLASSCONTROLLER_START_EXIT ); } void CUsbDummyClassController::Stop(TRequestStatus& aStatus) @@ -369,15 +325,11 @@ * @param aStatus Will be completed with success or failure. */ { - OstTraceFunctionEntry0( CUSBDUMMYCLASSCONTROLLER_STOP_ENTRY ); + LOG_FUNC //Stop() should only be called if the CC is Started or Idle - if(!(iState == EUsbServiceStarted || iState == EUsbServiceIdle)) - { - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_STOP, "CUsbDummyClassController::Stop;panic code=%d", EDummyPanicBadApiCallStop ); - __ASSERT_DEBUG(EFalse, - User::Panic(KDummyControllerPanic, EDummyPanicBadApiCallStop)); - } + __ASSERT_DEBUG((iState == EUsbServiceStarted || iState == EUsbServiceIdle), + _USB_PANIC(KDummyControllerPanic, EDummyPanicBadApiCallStop)); // Get config from ini file. Note that can't be done once in ConstructL // because then, in the case of a CC which doesn't Stop, we'd never be @@ -385,12 +337,8 @@ GetConfig(); // NB We enforce that the device doesn't re-post requests on us. - if(iReportStatus) - { - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_STOP_DUP1, "CUsbDummyClassController::Stop;panic code=%d", EDummyPanicOutstandingRequestFromDevice ); - __ASSERT_DEBUG(EFalse, - User::Panic(KDummyControllerPanic, EDummyPanicOutstandingRequestFromDevice)); - } + __ASSERT_DEBUG(!iReportStatus, + _USB_PANIC(KDummyControllerPanic, EDummyPanicOutstandingRequestFromDevice)); aStatus = KRequestPending; iReportStatus = &aStatus; @@ -407,13 +355,7 @@ case EAsynchronous: iTimer.After(iStatus, iShutdownBehaviour.iDelay); -#ifdef _DEBUG - if(IsActive()) - { - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_STOP_DUP2, "CUsbDummyClassController::Stop;panic code=%d", EDummyPanicAlreadyActive ); - User::Panic(KDummyControllerPanic, EDummyPanicAlreadyActive); - } -#endif + __ASSERT_DEBUG(!IsActive(), _USB_PANIC(KDummyControllerPanic, EDummyPanicAlreadyActive)); SetActive(); break; @@ -422,11 +364,9 @@ break; default: - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_STOP_DUP3, "CUsbDummyClassController::Stop;panic code=%d", EDummyPanicBadSynchronicity ); - User::Panic(KDummyControllerPanic, EDummyPanicBadSynchronicity); + _USB_PANIC(KDummyControllerPanic, EDummyPanicBadSynchronicity); break; } - OstTraceFunctionExit0( CUSBDUMMYCLASSCONTROLLER_STOP_EXIT ); } void CUsbDummyClassController::GetDescriptorInfo(TUsbDescriptor& aDescriptorInfo) const @@ -445,9 +385,8 @@ * Standard active object RunL. */ { - OstTraceFunctionEntry0( CUSBDUMMYCLASSCONTROLLER_RUNL_ENTRY ); - OstTraceExt2( TRACE_NORMAL, CUSBDUMMYCLASSCONTROLLER_RUNL, "CUsbDummyClassController::RunL;iStatus.Int()=%d;iState=%d", iStatus.Int(), iState ); - + LOGTEXT3(_L8(">>CUsbDummyClassController::RunL [iStatus=%d,iState=%d]"), + iStatus.Int(), iState); if ( iStatus != KErrNone ) { @@ -455,27 +394,18 @@ // there's no point trying to code round them. This is part of the // test framework and if it's failing we want to alert the user // without faffing around. (It invalidates the test.) - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_RUNL_DUP1, "CUsbDummyClassController::RunL;panic code=%d", EDummyPanicUnhandledError ); - User::Panic(KDummyControllerPanic, EDummyPanicUnhandledError); + _USB_PANIC(KDummyControllerPanic, EDummyPanicUnhandledError); } - if(!iReportStatus) - { - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_RUNL_DUP2, "CUsbDummyClassController::RunL;panic code=%d", EDummyPanicBadState ); - __ASSERT_DEBUG(EFalse, - User::Panic(KDummyControllerPanic, EDummyPanicBadState)); - } + __ASSERT_DEBUG(iReportStatus, + _USB_PANIC(KDummyControllerPanic, EDummyPanicBadState)); switch ( iState ) { case EUsbServiceStarting: // Completion of asynchronous startup... - if(iStartupBehaviour.iSynchronicity != EAsynchronous) - { - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_RUNL_DUP3, "CUsbDummyClassController::RunL;panic code=%d", EDummyPanicBadSynchronicity ); - __ASSERT_DEBUG(EFalse, - User::Panic(KDummyControllerPanic, EDummyPanicBadSynchronicity)); - } + __ASSERT_DEBUG(iStartupBehaviour.iSynchronicity == EAsynchronous, + _USB_PANIC(KDummyControllerPanic, EDummyPanicBadSynchronicity)); iState = EUsbServiceStarted; User::RequestComplete(iReportStatus, iStartupBehaviour.iErrorCode); iReportStatus = NULL; @@ -483,12 +413,8 @@ case EUsbServiceStopping: // Completion of asynchronous shutdown... - if(iShutdownBehaviour.iSynchronicity != EAsynchronous) - { - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_RUNL_DUP4, "CUsbDummyClassController::RunL;panic code=%d", EDummyPanicBadSynchronicity ); - __ASSERT_DEBUG(EFalse, - User::Panic(KDummyControllerPanic, EDummyPanicBadSynchronicity)); - } + __ASSERT_DEBUG(iShutdownBehaviour.iSynchronicity == EAsynchronous, + _USB_PANIC(KDummyControllerPanic, EDummyPanicBadSynchronicity)); iState = EUsbServiceIdle; User::RequestComplete(iReportStatus, iShutdownBehaviour.iErrorCode); iReportStatus = NULL; @@ -497,12 +423,11 @@ case EUsbServiceIdle: case EUsbServiceStarted: default: - OstTrace1( TRACE_FATAL, CUSBDUMMYCLASSCONTROLLER_RUNL_DUP5, "CUsbDummyClassController::RunL;panic code=%d", EDummyPanicBadState ); - User::Panic(KDummyControllerPanic, EDummyPanicBadState); + _USB_PANIC(KDummyControllerPanic, EDummyPanicBadState); break; } - OstTraceFunctionExit0( CUSBDUMMYCLASSCONTROLLER_RUNL_EXIT ); + LOGTEXT(_L8("< //Publish & Subscribe header #include "CUsbOtg.h" #include "cusbotgwatcher.h" #include "CUsbDevice.h" #include "musbotghostnotifyobserver.h" #include "CUsbServer.h" +#include //Publish & Subscribe header #include "usberrors.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbOtgTraces.h" -#endif - //Name used in call to User::LoadLogicalDevice/User::FreeLogicalDevice _LIT(KUsbOtgLDDName,"otgdi"); +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "USBSVR-OTG"); +#endif CUsbOtg* CUsbOtg::NewL() @@ -46,13 +44,12 @@ * @return A new CUsbOtg object */ { - OstTraceFunctionEntry0( CUSBOTG_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY CUsbOtg* self = new (ELeave) CUsbOtg(); CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(self); - OstTraceFunctionExit0( CUSBOTG_NEWL_EXIT ); return self; } @@ -62,7 +59,8 @@ * Destructor. */ { - OstTraceFunctionEntry0( CUSBOTG_CUSBOTG_DES_ENTRY ); + LOG_FUNC + // Cancel any outstanding asynchronous operation. Stop(); @@ -71,93 +69,76 @@ // the observers themselves. iObservers.Reset(); - OstTrace1( TRACE_NORMAL, CUSBOTG_CUSBOTG, "CUsbOtg::~CUsbOtg;iIdPinWatcher=%08x", (TUint32)iIdPinWatcher ); - + LOGTEXT2(_L8("about to stop Id-Pin watcher @ %08x"), (TUint32) iIdPinWatcher); if (iIdPinWatcher) { iIdPinWatcher->Cancel(); delete iIdPinWatcher; iIdPinWatcher = NULL; - OstTrace0( TRACE_NORMAL, CUSBOTG_CUSBOTG_DUP1, "CUsbOtg::~CUsbOtg;deleted Id-Pin watcher" ); - + LOGTEXT(_L8("deleted Id-Pin watcher")); } - OstTrace1( TRACE_NORMAL, CUSBOTG_CUSBOTG_DUP2, "CUsbOtg::~CUsbOtg;about to stop Vbus watcher @ %08x", (TUint32)iVbusWatcher ); - + LOGTEXT2(_L8("about to stop Vbus watcher @ %08x"), (TUint32) iVbusWatcher); if (iVbusWatcher) { iVbusWatcher->Cancel(); delete iVbusWatcher; iVbusWatcher = NULL; - OstTrace0( TRACE_NORMAL, CUSBOTG_CUSBOTG_DUP3, "CUsbOtg::~CUsbOtg;deleted Vbus watcher" ); - + LOGTEXT(_L8("deleted Vbus watcher")); } - OstTrace1( TRACE_NORMAL, CUSBOTG_CUSBOTG_DUP4, "CUsbOtg::~CUsbOtg;about to stop OTG State watcher @ %08x", (TUint32) iVbusWatcher ); - + LOGTEXT2(_L8("about to stop OTG State watcher @ %08x"), (TUint32) iVbusWatcher); if (iOtgStateWatcher) { iOtgStateWatcher->Cancel(); delete iOtgStateWatcher; iOtgStateWatcher = NULL; - OstTrace0( TRACE_NORMAL, CUSBOTG_CUSBOTG_DUP5, "CUsbOtg::~CUsbOtg;deleted OTG State watcher" ); - + LOGTEXT(_L8("deleted OTG State watcher")); } - OstTrace1( TRACE_NORMAL, CUSBOTG_CUSBOTG_DUP6, "CUsbOtg::~CUsbOtg;about to stop OTG Event watcher @ %08x", (TUint32) iVbusWatcher ); - + LOGTEXT2(_L8("about to stop OTG Event watcher @ %08x"), (TUint32) iVbusWatcher); if (iOtgEventWatcher) { iOtgEventWatcher->Cancel(); delete iOtgEventWatcher; iOtgEventWatcher = NULL; - OstTrace0( TRACE_NORMAL, CUSBOTG_CUSBOTG_DUP7, "CUsbOtg::~CUsbOtg;deleted OTG Event watcher" ); - + LOGTEXT(_L8("deleted OTG Event watcher")); } if (iRequestSessionWatcher) { delete iRequestSessionWatcher; - OstTrace0( TRACE_NORMAL, CUSBOTG_CUSBOTG_DUP8, "CUsbOtg::~CUsbOtg;deleted Session Request watcher" ); - + LOGTEXT(_L8("deleted Session Request watcher")); } - OstTrace1( TRACE_NORMAL, CUSBOTG_CUSBOTG_DUP9, - "CUsbOtg::~CUsbOtg;about to stop Connection Idle watcher @ %08x", (TUint32)iOtgConnectionIdleWatcher ); - + LOGTEXT2(_L8("about to stop Connection Idle watcher @ %08x"), (TUint32)iOtgConnectionIdleWatcher); if (iOtgConnectionIdleWatcher) { iOtgConnectionIdleWatcher->Cancel(); delete iOtgConnectionIdleWatcher; iOtgConnectionIdleWatcher= NULL; - OstTrace0( TRACE_NORMAL, CUSBOTG_CUSBOTG_DUP10, "CUsbOtg::~CUsbOtg;deleted Connection Idle watcher" ); - + LOGTEXT(_L8("deleted Connection Idle watcher")); } // Unload OTGDI components if it was ever started if ( iOtgDriver.Handle() ) { - OstTrace0( TRACE_NORMAL, CUSBOTG_CUSBOTG_DUP11, "CUsbOtg::~CUsbOtg; Stopping stacks" ); - + LOGTEXT(_L8("Stopping stacks")); iOtgDriver.StopStacks(); iOtgDriver.Close(); } else { - OstTrace0( TRACE_NORMAL, CUSBOTG_CUSBOTG_DUP12, "CUsbOtg::~CUsbOtg; No OTG Driver session was opened, nothing to do" ); - + LOGTEXT(_L8("No OTG Driver session was opened, nothing to do")); } - OstTrace0( TRACE_NORMAL, CUSBOTG_CUSBOTG_DUP13, "CUsbOtg::~CUsbOtg; Freeing logical device" ); - + LOGTEXT(_L8("Freeing logical device")); TInt err = User::FreeLogicalDevice(KUsbOtgLDDName); //Putting the LOGTEXT2 inside the if statement prevents a compiler //warning about err being unused in UREL builds. if(err) { - OstTrace1( TRACE_NORMAL, CUSBOTG_CUSBOTG_DUP14, "CUsbOtg::~CUsbOtg; User::FreeLogicalDevice returned %d", err ); - + LOGTEXT2(_L8(" User::FreeLogicalDevice returned %d"),err); } iCriticalSection.Close(); - OstTraceFunctionExit0( CUSBOTG_CUSBOTG_DES_EXIT ); } @@ -166,9 +147,7 @@ * Constructor. */ { - OstTraceFunctionEntry0( CUSBOTG_CUSBOTG_CONS_ENTRY ); - - OstTraceFunctionExit0( CUSBOTG_CUSBOTG_CONS_EXIT ); + LOG_FUNC } @@ -177,41 +156,31 @@ * Performs 2nd phase construction of the OTG object. */ { - OstTraceFunctionEntry0( CUSBOTG_CONSTRUCTL_ENTRY ); + LOG_FUNC - OstTrace0( TRACE_NORMAL, CUSBOTG_CONSTRUCTL, "CUsbOtg::ConstructL; About to open LDD" ); - + LOGTEXT(_L8("About to open LDD")); iLastError = User::LoadLogicalDevice(KUsbOtgLDDName); if ( (iLastError != KErrNone) && (iLastError != KErrAlreadyExists) ) { - if(iLastError < 0) - { - OstTraceExt2( TRACE_NORMAL, CUSBOTG_CONSTRUCTL_DUP1, "CUsbOtg::ConstructL; Error %d: Unable to load driver: %S", iLastError, KUsbOtgLDDName ); - User::Leave(iLastError); - } + LOGTEXT3(_L8("Error %d: Unable to load driver: %S"), iLastError, &KUsbOtgLDDName); + LEAVEIFERRORL(iLastError); } - OstTrace0( TRACE_NORMAL, CUSBOTG_CONSTRUCTL_DUP3, "CUsbOtg::ConstructL; About to open RUsbOtgDriver" ); - + + LOGTEXT(_L8("About to open RUsbOtgDriver")); iLastError = iOtgDriver.Open(); if ( (iLastError != KErrNone) && (iLastError != KErrAlreadyExists) ) { - if(iLastError < 0) - { - OstTrace1( TRACE_NORMAL, CUSBOTG_CONSTRUCTL_DUP4, "CUsbOtg::ConstructL; Error %d: Unable to open RUsbOtgDriver session", iLastError ); - User::Leave(iLastError); - } + LOGTEXT2(_L8("Error %d: Unable to open RUsbOtgDriver session"), iLastError); + LEAVEIFERRORL(iLastError); } - OstTrace0( TRACE_NORMAL, CUSBOTG_CONSTRUCTL_DUP2, "CUsbOtg::ConstructL; About to start OTG stacks" ); - + + LOGTEXT(_L8("About to start OTG stacks")); iLastError = iOtgDriver.StartStacks(); if (iLastError != KErrNone) { - if(iLastError < 0) - { - OstTrace1( TRACE_NORMAL, CUSBOTG_CONSTRUCTL_DUP5, "CUsbOtg::ConstructL; Error %d: Unable to open start OTG stacks", iLastError ); - User::Leave(iLastError); - } + LOGTEXT2(_L8("Error %d: Unable to open start OTG stacks"), iLastError); + LEAVEIFERRORL(iLastError); } // Request Otg notifications @@ -234,9 +203,7 @@ iCriticalSection.CreateLocal(EOwnerProcess); - OstTrace0( TRACE_NORMAL, CUSBOTG_CONSTRUCTL_DUP6, "CUsbOtg::ConstructL; UsbOtg::ConstructL() finished" ); - - OstTraceFunctionExit0( CUSBOTG_CONSTRUCTL_EXIT ); + LOGTEXT(_L8("UsbOtg::ConstructL() finished")); } void CUsbOtg::NotifyMessage(TInt aMessage) @@ -308,9 +275,7 @@ TInt otgEvent = TranslateOtgEvent(); if ( otgEvent == KErrBadName ) { - OstTrace1( TRACE_NORMAL, CUSBOTG_NOTIFYOTGEVENT, - "CUsbOtg::NotifyOtgEvent;OTG event %d was reported, but not propagated", (TInt)iOtgEvent ); - + LOGTEXT2(_L8("CUsbOtg::NotifyOtgEvent(): OTG event %d was reported, but not propagated"), (TInt) iOtgEvent); return; } @@ -328,16 +293,9 @@ * @param aObserver New Observer of the OTG events */ { - OstTraceFunctionEntry0( CUSBOTG_REGISTEROBSERVERL_ENTRY ); + LOG_FUNC - TInt err = iObservers.Append(&aObserver); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBOTG_REGISTEROBSERVERL, "CUsbOtg::RegisterObserverL; iObservers.Append(&aObserver) error, Leave error=%d", err ); - User::Leave(err); - } - - OstTraceFunctionExit0( CUSBOTG_REGISTEROBSERVERL_EXIT ); + LEAVEIFERRORL(iObservers.Append(&aObserver)); } @@ -348,7 +306,7 @@ * @param aObserver The existing OTG events observer to be de-registered */ { - OstTraceFunctionEntry0( CUSBOTG_DEREGISTEROBSERVER_ENTRY ); + LOG_FUNC TInt index = iObservers.Find(&aObserver); @@ -356,7 +314,6 @@ { iObservers.Remove(index); } - OstTraceFunctionExit0( CUSBOTG_DEREGISTEROBSERVER_EXIT ); } @@ -366,11 +323,10 @@ * Reports errors and OTG events via observer interface. */ { - OstTraceFunctionEntry0( CUSBOTG_STARTL_ENTRY ); + LOG_FUNC iOtgWatcher = CUsbOtgWatcher::NewL(*this, iOtgDriver, iOtgMessage); iOtgWatcher->Start(); - OstTraceFunctionExit0( CUSBOTG_STARTL_EXIT ); } void CUsbOtg::Stop() @@ -378,44 +334,41 @@ * Stop the USB OTG events watcher */ { - OstTraceFunctionEntry0( CUSBOTG_STOP_ENTRY ); + LOG_FUNC - OstTrace1( TRACE_NORMAL, CUSBOTG_STOP, "CUsbOtg::Stop;about to stop OTG watcher @ %08x", (TUint32)iOtgWatcher ); - + LOGTEXT2(_L8("about to stop OTG watcher @ %08x"), (TUint32) iOtgWatcher); if (iOtgWatcher) { iOtgWatcher->Cancel(); delete iOtgWatcher; iOtgWatcher = NULL; - OstTrace0( TRACE_NORMAL, CUSBOTG_STOP_DUP1, "CUsbOtg::Stop" ); - + LOGTEXT(_L8("deleted OTG watcher")); } iLastError = KErrNone; - OstTraceFunctionExit0( CUSBOTG_STOP_EXIT ); } TInt CUsbOtg::BusRequest() { - OstTraceFunctionEntry0( CUSBOTG_BUSREQUEST_ENTRY ); + LOG_FUNC return iOtgDriver.BusRequest(); } TInt CUsbOtg::BusRespondSrp() { - OstTraceFunctionEntry0( CUSBOTG_BUSRESPONDSRP_ENTRY ); + LOG_FUNC return iOtgDriver.BusRespondSrp(); } TInt CUsbOtg::BusClearError() { - OstTraceFunctionEntry0( CUSBOTG_BUSCLEARERROR_ENTRY ); + LOG_FUNC return iOtgDriver.BusClearError(); } TInt CUsbOtg::BusDrop() { - OstTraceFunctionEntry0( CUSBOTG_BUSDROP_ENTRY ); + LOG_FUNC return iOtgDriver.BusDrop(); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/CUsbScheduler.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/CUsbScheduler.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/SRC/CUsbScheduler.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -19,15 +19,14 @@ @file */ +#include #include "CUsbScheduler.h" #include "CUsbServer.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbSchedulerTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "USBSVR"); #endif - - /** * The CUsbScheduler::NewL method * @@ -37,10 +36,9 @@ */ CUsbScheduler* CUsbScheduler::NewL() { - OstTraceFunctionEntry0( CUSBSCHEDULER_NEWL_ENTRY ); - + LOG_STATIC_FUNC_ENTRY + CUsbScheduler* self = new(ELeave) CUsbScheduler; - OstTraceFunctionExit0( CUSBSCHEDULER_NEWL_EXIT ); return self; } @@ -82,8 +80,7 @@ */ void CUsbScheduler::Error(TInt aError) const { - OstTrace1( TRACE_NORMAL, CUSBSCHEDULER_ERROR, "CUsbScheduler::Error;aError=%d", aError ); - + LOGTEXT2(_L8("CUsbScheduler::Error aError=%d"), aError); if (iServer) { diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/CUsbServer.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/CUsbServer.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/SRC/CUsbServer.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -21,26 +21,25 @@ */ #include -#include #include "UsbSettings.h" #include "CUsbServer.h" #include "CUsbSession.h" #include "CUsbDevice.h" #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV -#include //Publish & Subscribe header #include "CUsbOtg.h" #include "cusbhost.h" +#include //Publish & Subscribe header #endif // SYMBIAN_ENABLE_USB_OTG_HOST_PRIV +#include #include "UsbmanServerSecurityPolicy.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbServerTraces.h" +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "USBSVR"); #endif - - /** * The CUsbServer::NewL method * @@ -52,13 +51,12 @@ */ CUsbServer* CUsbServer::NewLC() { - OstTraceFunctionEntry0( CUSBSERVER_NEWLC_ENTRY ); + LOG_STATIC_FUNC_ENTRY CUsbServer* self = new(ELeave) CUsbServer; CleanupStack::PushL(self); self->StartL(KUsbServerName); self->ConstructL(); - OstTraceFunctionExit0( CUSBSERVER_NEWLC_EXIT ); return self; } @@ -72,7 +70,7 @@ */ CUsbServer::~CUsbServer() { - OstTraceFunctionEntry0( CUSBSERVER_CUSBSERVER_DES_ENTRY ); + LOG_FUNC delete iShutdownTimer; delete iUsbDevice; @@ -82,21 +80,21 @@ #ifndef __OVER_DUMMYUSBDI__ // Check that this is A-Device - OstTrace0( TRACE_NORMAL, CUSBSERVER_CUSBSERVER, "CUsbServer::~CUsbServer; Checking Id-Pin state..." ); + LOGTEXT(_L8("Checking Id-Pin state...")); TInt value = 0; TInt err = RProperty::Get(KUidUsbManCategory, KUsbOtgIdPinPresentProperty,value); if (err == 0 && value == 1) { // Ensure VBus is dropped when Usb server exits - OstTrace0( TRACE_NORMAL, CUSBSERVER_CUSBSERVER_DUP1, "CUsbServer::~CUsbServer; Checking VBus state..." ); + LOGTEXT(_L8("Checking VBus state...")); err = RProperty::Get(KUidUsbManCategory, KUsbOtgVBusPoweredProperty,value); if ( err == KErrNone && value != 0 ) { if ( iUsbOtg ) { err = iUsbOtg->BusDrop(); - OstTrace1( TRACE_NORMAL, CUSBSERVER_CUSBSERVER_DUP2, "CUsbServer::~CUsbServer;BusDrop() returned err = %d", err ); - OstTrace0( TRACE_NORMAL, CUSBSERVER_CUSBSERVER_DUP3, "CUsbServer::~CUsbServer; USBMAN will wait until VBus is actually dropped" ); + LOGTEXT2(_L8("BusDrop() returned err = %d"),err); + LOGTEXT(_L8("USBMAN will wait until VBus is actually dropped")); // Wait 1 second for Hub driver to perform VBus drop RTimer timer; err = timer.CreateLocal(); @@ -109,29 +107,31 @@ } else { - OstTrace1( TRACE_NORMAL, CUSBSERVER_CUSBSERVER_DUP4, "CUsbServer::~CUsbServer;Failed to create local timer: err = %d", err ); + LOGTEXT2(_L8("Failed to create local timer: err = %d"),err); } } else { - OstTrace0( TRACE_NORMAL, CUSBSERVER_CUSBSERVER_DUP5, "CUsbServer::~CUsbServer; Unexpected: OTG object is NULL" ); + LOGTEXT(_L8("Unexpected: OTG object is NULL")); } } else { - OstTraceExt2( TRACE_NORMAL, CUSBSERVER_CUSBSERVER_DUP6, "CUsbServer::~CUsbServer;VBus is already dropped or an error occured: err = %d, value =%d", err, value ); + LOGTEXT3(_L8("VBus is already dropped or an error occured: err = %d, value =%d"),err,value); } } else { - OstTraceExt2( TRACE_NORMAL, CUSBSERVER_CUSBSERVER_DUP7, "CUsbServer::~CUsbServer;No Id-Pin is found or an error occured: err = %d, value = %d", err, value ); + LOGTEXT3(_L8("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 ); +#ifdef __FLOG_ACTIVE + CUsbLog::Close(); +#endif } @@ -156,7 +156,12 @@ */ void CUsbServer::ConstructL() { - +#ifdef __FLOG_ACTIVE + // Set the logger up so that everything in this thread that logs using it + // will do so 'connectedly' (i.e. quickly). If this fails, we don't care- + // logging will still work, just 'statically' (i.e. slowly). + static_cast(CUsbLog::Connect()); +#endif iShutdownTimer = new(ELeave) CShutdownTimer; iShutdownTimer->ConstructL(); @@ -169,7 +174,7 @@ #endif // SYMBIAN_ENABLE_USB_OTG_HOST_PRIV iUsbDevice = CUsbDevice::NewL(*this); - OstTrace0( TRACE_NORMAL, CUSBSERVER_CONSTRUCTL, "CUsbServer::ConstructL; About to load USB classes" ); + LOGTEXT(_L8("About to load USB classes")); iUsbDevice->EnumerateClassControllersL(); #ifndef USE_DUMMY_CLASS_CONTROLLER @@ -183,11 +188,11 @@ } else { - OstTrace0( TRACE_NORMAL, CUSBSERVER_CONSTRUCTL_DUP1, "CUsbServer::ConstructL;Personalities unconfigured, so using fallback CCs" ); + LOGTEXT(_L8("Personalities unconfigured, so using fallback CCs")); iUsbDevice->LoadFallbackClassControllersL(); } #else // USE_DUMMY_CLASS_CONTROLLER - OstTrace0( TRACE_NORMAL, CUSBSERVER_CONSTRUCTL_DUP2, "CUsbServer::ConstructL; Using Dummy Class Controller, so using fallback CCs" ); + LOGTEXT(_L8("Using Dummy Class Controller, so using fallback CCs")); iUsbDevice->LoadFallbackClassControllersL(); #endif // USE_DUMMY_CLASS_CONTROLLER @@ -199,7 +204,7 @@ iUsbHost->StartL(); #endif // SYMBIAN_ENABLE_USB_OTG_HOST_PRIV - OstTrace0( TRACE_NORMAL, CUSBSERVER_CONSTRUCTL_DUP3, "CUsbServer::ConstructL; CUsbServer constructed" ); + LOGTEXT(_L8("CUsbServer constructed")); } @@ -216,24 +221,23 @@ */ CSession2* CUsbServer::NewSessionL(const TVersion &aVersion, const RMessage2& aMessage) const { - OstTraceFunctionEntry0( CUSBSERVER_NEWSESSIONL_ENTRY ); + LOG_LINE + LOG_FUNC (void)aMessage;//Remove compiler warning TVersion v(KUsbSrvMajorVersionNumber,KUsbSrvMinorVersionNumber,KUsbSrvBuildVersionNumber); - OstTrace0( TRACE_NORMAL, CUSBSERVER_NEWSESSIONL, "CUsbServer::NewSessionL; CUsbServer::NewSessionL - creating new session..." ); + LOGTEXT(_L8("CUsbServer::NewSessionL - creating new session...")); if (!User::QueryVersionSupported(v, aVersion)) { - OstTrace1( TRACE_NORMAL, CUSBSERVER_NEWSESSIONL_DUP1, "CUsbServer::NewSessionL;leave reason=%d", KErrNotSupported ); - User::Leave(KErrNotSupported); + LEAVEL(KErrNotSupported); } CUsbServer* ncThis = const_cast(this); CUsbSession* sess = CUsbSession::NewL(ncThis); - OstTraceFunctionExit0( CUSBSERVER_NEWSESSIONL_EXIT ); return sess; } @@ -245,7 +249,7 @@ */ void CUsbServer::Error(TInt aError) { - OstTrace1( TRACE_NORMAL, CUSBSERVER_ERROR, "CUsbServer::Error;aError=%d", aError ); + LOGTEXT2(_L8("CUsbServer::Error [aError=%d]"), aError); Message().Complete(aError); ReStart(); @@ -258,18 +262,13 @@ */ void CUsbServer::IncrementSessionCount() { - OstTraceFunctionEntry0( CUSBSERVER_INCREMENTSESSIONCOUNT_ENTRY ); - OstTrace1( TRACE_NORMAL, CUSBSERVER_INCREMENTSESSIONCOUNT, "CUsbServer::IncrementSessionCount;iSessionCount=%d", iSessionCount ); - if(iSessionCount < 0) - { - OstTrace1( TRACE_FATAL, CUSBSERVER_INCREMENTSESSIONCOUNT_DUP1, "CUsbServer::IncrementSessionCount;panic code=%d", EICSInvalidCount ); - __ASSERT_DEBUG(EFalse, User::Panic(KUsbSvrPncCat, EICSInvalidCount)); - } + LOGTEXT2(_L8(">CUsbServer::IncrementSessionCount %d"), iSessionCount); + __ASSERT_DEBUG(iSessionCount >= 0, _USB_PANIC(KUsbSvrPncCat, EICSInvalidCount)); ++iSessionCount; iShutdownTimer->Cancel(); - OstTraceFunctionExit0( CUSBSERVER_INCREMENTSESSIONCOUNT_EXIT ); + LOGTEXT(_L8(" 0, _USB_PANIC(KUsbSvrPncCat, EDCSInvalidCount)); --iSessionCount; @@ -305,17 +300,11 @@ */ void CUsbServer::LaunchShutdownTimerIfNoSessions() { - OstTraceFunctionEntry0( CUSBSERVER_LAUNCHSHUTDOWNTIMERIFNOSESSIONS_ENTRY ); -#ifdef _DEBUG - if(Device().ServiceState() != EUsbServiceIdle) - { - OstTrace1( TRACE_FATAL, CUSBSERVER_LAUNCHSHUTDOWNTIMERIFNOSESSIONS, "CUsbServer::LaunchShutdownTimerIfNoSessions;panic code=%d", ELSTNSNotIdle ); - User::Panic(KUsbSvrPncCat, ELSTNSNotIdle); - } -#endif + LOGTEXT(_L8("CUsbServer::LaunchShutdownTimerIfNoSessions")); + __ASSERT_DEBUG(Device().ServiceState() == EUsbServiceIdle, _USB_PANIC(KUsbSvrPncCat, ELSTNSNotIdle)); + if (iSessionCount == 0) iShutdownTimer->After(KShutdownDelay); - OstTraceFunctionExit0( CUSBSERVER_LAUNCHSHUTDOWNTIMERIFNOSESSIONS_EXIT ); } /** diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/CUsbSession.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/CUsbSession.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/SRC/CUsbSession.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -20,11 +20,7 @@ @file */ -#include -#include -#include #include - #include "CUsbSession.h" #include "CUsbDevice.h" #include "CUsbServer.h" @@ -34,16 +30,18 @@ #include "cusbhost.h" #endif // SYMBIAN_ENABLE_USB_OTG_HOST_PRIV +#include +#include + +#include #include "CPersonality.h" #include "rusb.h" #include "UsbSettings.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbSessionTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "USBSVR"); #endif - - #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV CUsbSession* CUsbSession::iCtlSession = NULL; #endif // SYMBIAN_ENABLE_USB_OTG_HOST_PRIV @@ -58,7 +56,7 @@ */ CUsbSession* CUsbSession::NewL(CUsbServer* aServer) { - OstTraceFunctionEntry0( CUSBSESSION_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY //this class has moved away from standard NewL() semantics //and now uses the virtual CSession2::CreateL() function @@ -77,10 +75,9 @@ CUsbSession::CUsbSession(CUsbServer* aServer) : iUsbServer(aServer) { - OstTraceFunctionEntry0( CUSBSESSION_CUSBSESSION_CONS_ENTRY ); + LOG_FUNC iUsbServer->IncrementSessionCount(); - OstTraceFunctionExit0( CUSBSESSION_CUSBSESSION_CONS_EXIT ); } @@ -89,18 +86,18 @@ */ CUsbSession::~CUsbSession() { - OstTraceFunctionEntry0( CUSBSESSION_CUSBSESSION_DES_ENTRY ); + LOG_FUNC - OstTrace1( TRACE_NORMAL, CUSBSESSION_CUSBSESSION, "CUsbSession::~CUsbSession;About to Device().DeRegisterObserver(%08x)", this ); + LOGTEXT2(_L8("About to Device().DeRegisterObserver(%08x"),this); 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 ); + LOGTEXT2(_L8("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 ); + LOGTEXT2(_L8("About to Host().DeRegisterObserver(%08x"),this); iUsbServer->Host().DeregisterObserver(*this); if ( iCtlSession && (iCtlSession == this) ) @@ -109,9 +106,8 @@ } #endif // SYMBIAN_ENABLE_USB_OTG_HOST_PRIV - OstTrace0( TRACE_NORMAL, CUSBSESSION_CUSBSESSION_DUP3, "CUsbSession::~CUsbSession;About to iUsbServer->DecrementSessionCount()" ); + LOGTEXT(_L8("About to iUsbServer->DecrementSessionCount()")); iUsbServer->DecrementSessionCount(); - OstTraceFunctionExit0( CUSBSESSION_CUSBSESSION_DES_EXIT ); } @@ -122,10 +118,9 @@ */ void CUsbSession::ServiceL(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_SERVICEL_ENTRY ); + LOG_FUNC DispatchMessageL(aMessage); - OstTraceFunctionExit0( CUSBSESSION_SERVICEL_EXIT ); } /** @@ -135,7 +130,7 @@ */ void CUsbSession::CreateL() { - OstTraceFunctionEntry0( CUSBSESSION_CREATEL_ENTRY ); + LOG_FUNC // This code originally existed in the typical non-virtual ConstructL() method. // However it was moved to this method for minor optimisation reasons [three less @@ -143,19 +138,18 @@ iPersonalityCfged = iUsbServer->Device().isPersonalityCfged(); - OstTrace0( TRACE_NORMAL, CUSBSESSION_CREATEL, "CUsbSession::CreateL;Registering Device Observer" ); + LOGTEXT(_L8("Registering Device Observer\n")); 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" ); + LOGTEXT(_L8("Registering OTG Observer\n")); iUsbServer->Otg().RegisterObserverL(*this); #endif - OstTrace0( TRACE_NORMAL, CUSBSESSION_CREATEL_DUP2, "CUsbSession::CreateL;Registering HOST Observer" ); + LOGTEXT(_L8("Registering HOST Observer\n")); iUsbServer->Host().RegisterObserverL(*this); #endif // SYMBIAN_ENABLE_USB_OTG_HOST_PRIV - OstTraceFunctionExit0( CUSBSESSION_CREATEL_EXIT ); } /** @@ -169,8 +163,8 @@ void CUsbSession::UsbServiceStateChange(TInt aLastError, TUsbServiceState aOldState, TUsbServiceState aNewState) { - OstTraceFunctionEntry0( CUSBSESSION_USBSERVICESTATECHANGE_ENTRY ); - OstTraceExt2( TRACE_NORMAL, CUSBSESSION_USBSERVICESTATECHANGE, "CUsbSession::UsbServiceStateChange;aOldState=0x%X, aNewState=0x%X", aOldState, aNewState ); + LOG_FUNC + LOGTEXT3(_L8(" aOldState=0x%X, aNewState=0x%X"), aOldState, aNewState); (void) aOldState; // a-void build warning in UREL // Note that it's possible to have both a start and a stop outstanding! @@ -194,7 +188,6 @@ const TInt err = iServiceObserverMessage.Write(0, pckg); iServiceObserverMessage.Complete(err); } - OstTraceFunctionExit0( CUSBSESSION_USBSERVICESTATECHANGE_EXIT ); } /** @@ -206,17 +199,17 @@ void CUsbSession::HandleServiceStateChangeWhileStarting(TInt aLastError, TUsbServiceState aNewState) { - OstTraceFunctionEntry0( CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_ENTRY ); + LOG_FUNC switch (aNewState) { case EUsbServiceStarted: - OstTrace0( TRACE_NORMAL, CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING, "CUsbSession::HandleServiceStateChangeWhileStarting Completing Start successfully" ); + LOGTEXT(_L8(" Completing Start successfully")); // If the user has tried to cancel the start, they're too late! if (iCancelOutstanding) { - OstTrace0( TRACE_NORMAL, CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_DUP1, "CUsbSession::HandleServiceStateChangeWhileStarting Completing cancel request with KErrNone" ); + LOGTEXT(_L8(" Completing cancel request with KErrNone")); iCancelOutstanding = EFalse; iCancelMessage.Complete(KErrNone); } @@ -226,7 +219,7 @@ break; case EUsbServiceIdle: - OstTrace1( TRACE_NORMAL, CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_DUP2, "CUsbSession::HandleServiceStateChangeWhileStarting; Completing Start with error=%d", aLastError ); + LOGTEXT2(_L8(" Completing Start with error=%d"), aLastError); // If there hasn't actually been an error, but we're in an unexpected // state now, that means that this client cancelled the request, or @@ -237,7 +230,7 @@ // the start message should be completed with KErrCancel. if (iCancelOutstanding) { - OstTrace0( TRACE_NORMAL, CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_DUP3, "CUsbSession::HandleServiceStateChangeWhileStarting Completing original message with KErrCancel" ); + LOGTEXT(_L8(" Completing original message with KErrCancel")); iCancelOutstanding = EFalse; iCancelMessage.Complete(KErrNone); iStartMessage.Complete(KErrCancel); @@ -265,7 +258,6 @@ default: break; } - OstTraceFunctionExit0( CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_EXIT ); } /** @@ -277,12 +269,12 @@ void CUsbSession::HandleServiceStateChangeWhileStopping(TInt aLastError, TUsbServiceState aNewState) { - OstTraceFunctionEntry0( CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_ENTRY ); + LOG_FUNC switch (aNewState) { case EUsbServiceStarted: - OstTrace1( TRACE_NORMAL, CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING, "CUsbSession::HandleServiceStateChangeWhileStopping; Completing Stop with error=%d", aLastError ); + LOGTEXT2(_L8(" Completing Stop with error=%d"), aLastError); // If there hasn't actually been an error, but we're in an unexpected // state now, that means that this client cancelled the request, or @@ -293,7 +285,7 @@ // the stop message should be completed with KErrCancel. if (iCancelOutstanding) { - OstTrace0( TRACE_NORMAL, CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_DUP1, "CUsbSession::HandleServiceStateChangeWhileStopping; Completing original message with KErrCancel" ); + LOGTEXT(_L8(" Completing original message with KErrCancel")); iCancelOutstanding = EFalse; iCancelMessage.Complete(KErrNone); iStopMessage.Complete(KErrCancel); @@ -319,12 +311,12 @@ break; case EUsbServiceIdle: - OstTrace0( TRACE_NORMAL, CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_DUP2, "CUsbSession::HandleServiceStateChangeWhileStopping Completing Stop with KErrNone" ); + LOGTEXT(_L8(" Completing Stop with KErrNone")); // If the user has tried to cancel the stop, they're too late! if (iCancelOutstanding) { - OstTrace0( TRACE_NORMAL, CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_DUP3, "CUsbSession::HandleServiceStateChangeWhileStopping Completing cancel request with KErrNone" ); + LOGTEXT(_L8(" Completing cancel request with KErrNone")); iCancelOutstanding = EFalse; iCancelMessage.Complete(KErrNone); } @@ -336,7 +328,6 @@ default: break; } - OstTraceFunctionExit0( CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_EXIT ); } /** @@ -352,7 +343,7 @@ void CUsbSession::UsbDeviceStateChange(TInt /*aLastError*/, TUsbDeviceState /*aOldState*/, TUsbDeviceState aNewState) { - OstTraceFunctionEntry0( CUSBSESSION_USBDEVICESTATECHANGE_ENTRY ); + LOG_FUNC // can we bypass the queue? if ((iDeviceObserverOutstanding) && (iDevStateQueueHead == iDevStateQueueTail)) @@ -393,8 +384,9 @@ if (aNewState == iDeviceStateQueue[queuePtr]) { // Event is already queued; discard the duplicate and in-between events - OstTraceExt2( TRACE_NORMAL, CUSBSESSION_USBDEVICESTATECHANGE, "CUsbSession::UsbDeviceStateChange;--- collapsing queue head (%d, %d)", iDevStateQueueHead, ((queuePtr + 1) % KDeviceStatesQueueSize) ); - + LOGTEXT3(_L8("--- collapsing queue head (%d, %d)"), + iDevStateQueueHead, + (queuePtr + 1) % KDeviceStatesQueueSize); // queue head moved to position following the match iDevStateQueueHead = (queuePtr + 1) % KDeviceStatesQueueSize; @@ -413,13 +405,13 @@ // add event to head of queue iDeviceStateQueue[iDevStateQueueHead] = aNewState; iDevStateQueueHead = (iDevStateQueueHead + 1) % KDeviceStatesQueueSize; - OstTraceExt2( TRACE_NORMAL, CUSBSESSION_USBDEVICESTATECHANGE_DUP1, "CUsbSession::UsbDeviceStateChange;+++ addqueue (%d, %d)", iDevStateQueueHead, iDevStateQueueTail ); + LOGTEXT3(_L8("+++ addqueue (%d, %d)"), iDevStateQueueHead, + iDevStateQueueTail); } // UsbDeviceDequeueEvent() will read from queue when RegisterObserver() // is next called. } - OstTraceFunctionExit0( CUSBSESSION_USBDEVICESTATECHANGE_EXIT ); } /** @@ -427,7 +419,7 @@ */ void CUsbSession::UsbDeviceDequeueEvent() { - OstTraceFunctionEntry0( CUSBSESSION_USBDEVICEDEQUEUEEVENT_ENTRY ); + LOG_FUNC // Work our way through the queue, until we reach the end // OR we find an event the current observer wants. @@ -448,7 +440,7 @@ iNotifiedDevState = newState; - OstTraceExt2( TRACE_NORMAL, CUSBSESSION_USBDEVICEDEQUEUEEVENT, "CUsbSession::UsbDeviceDequeueEvent;dequeued event #%d (0x%x)", iDevStateQueueTail, newState ); + LOGTEXT3(_L8(">>> dequeued event #%d (0x%x)"), iDevStateQueueTail, newState); iDeviceObserverOutstanding = EFalse; const TInt err = iDeviceObserverMessage.Write(1, pckg); @@ -456,7 +448,6 @@ break; } } - OstTraceFunctionExit0( CUSBSESSION_USBDEVICEDEQUEUEEVENT_EXIT ); } /** @@ -467,12 +458,12 @@ */ void CUsbSession::DispatchMessageL(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_DISPATCHMESSAGEL_ENTRY ); + LOG_FUNC TBool complete = ETrue; TInt ret = KErrNone; - OstTrace1( TRACE_NORMAL, CUSBSESSION_DISPATCHMESSAGEL, "CUsbSession::DispatchMessageL;func#=%d", aMessage.Function() ); + LOGTEXT2(_L8("CUsbSession::DispatchMessageL(): func# %d"), aMessage.Function()); switch (aMessage.Function()) { @@ -527,6 +518,9 @@ case EUsbGetDescription: ret = GetDescription(aMessage); break; + case EUsbGetDetailedDescription: + ret = GetDetailedDescription(aMessage); + break; case EUsbGetPersonalityProperty: ret = GetPersonalityProperty(aMessage); break; @@ -538,20 +532,20 @@ // Heap failure debug APIs. case EUsbDbgMarkHeap: - OstTrace0( TRACE_NORMAL, CUSBSESSION_DISPATCHMESSAGEL_DUP1, "CUsbSession::DispatchMessageL;Marking heap" ); + LOGTEXT(_L8("Marking heap")); __UHEAP_MARK; break; case EUsbDbgCheckHeap: - OstTrace1( TRACE_NORMAL, CUSBSESSION_DISPATCHMESSAGEL_DUP2, "CUsbSession::DispatchMessageL;Checking heap (expecting %d cells)", aMessage.Int0() ); + LOGTEXT2(_L8("Checking heap (expecting %d cells)"), aMessage.Int0()); __UHEAP_CHECK(aMessage.Int0()); break; case EUsbDbgMarkEnd: - OstTrace1( TRACE_NORMAL, CUSBSESSION_DISPATCHMESSAGEL_DUP3, "CUsbSession::DispatchMessageL;End of marking heap (expecting %d cells)", aMessage.Int0() ); + LOGTEXT2(_L8("End of marking heap (expecting %d cells)"), aMessage.Int0()); __UHEAP_MARKENDC(aMessage.Int0()); break; case EUsbDbgFailNext: { - OstTrace1( TRACE_NORMAL, CUSBSESSION_DISPATCHMESSAGEL_DUP4, "CUsbSession::DispatchMessageL;Simulating failure after %d allocation(s)", aMessage.Int0() ); + LOGTEXT2(_L8("Simulating failure after %d allocation(s)"), aMessage.Int0()); if (aMessage.Int0() == 0) __UHEAP_RESET; else @@ -562,7 +556,7 @@ { ret = KErrNone; #ifdef _DEBUG - OstTrace0( TRACE_NORMAL, CUSBSESSION_DISPATCHMESSAGEL_DUP5, "CUsbSession::DispatchMessageL;allocate on the heap" ); + LOGTEXT(_L8("\tallocate on the heap")); TInt* x = NULL; TRAP(ret, x = new(ELeave) TInt); delete x; @@ -652,7 +646,7 @@ #endif // SYMBIAN_ENABLE_USB_OTG_HOST_PRIV default: - OstTrace1( TRACE_NORMAL, CUSBSESSION_DISPATCHMESSAGEL_DUP6, "CUsbSession::DispatchMessageL;Illegal IPC argument(%d) - Panicking Client...", aMessage.Function() ); + LOGTEXT2(_L8("Illegal IPC argument(%d) - Panicking Client..."), aMessage.Function()); aMessage.Panic(KUsbCliPncCat, EUsbPanicIllegalIPC); complete = EFalse; break; @@ -660,7 +654,6 @@ if (complete) aMessage.Complete(ret); - OstTraceFunctionExit0( CUSBSESSION_DISPATCHMESSAGEL_EXIT ); } @@ -673,13 +666,12 @@ */ TInt CUsbSession::StartDeviceL(const RMessage2& aMessage, TBool& aComplete) { - OstTraceFunctionEntry0( CUSBSESSION_STARTDEVICEL_ENTRY ); + LOG_FUNC #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV // Only 'control' session is allowed to start USB support if ( !iSessionCtlMode ) { - OstTraceFunctionExit0( CUSBSESSION_STARTDEVICEL_EXIT ); return KErrAccessDenied; } #endif @@ -713,7 +705,6 @@ iStartOutstanding = ETrue; } - OstTraceFunctionExit0( CUSBSESSION_STARTDEVICEL_EXIT_DUP1 ); return KErrNone; #else @@ -724,7 +715,6 @@ iStartOutstanding = EFalse; aMessage.IsNull(); aComplete = ETrue; - OstTraceFunctionExit0( CUSBSESSION_STARTDEVICEL_EXIT_DUP2 ); return KErrNone; #endif @@ -739,20 +729,18 @@ */ TInt CUsbSession::StopDeviceL(const RMessage2& aMessage, TBool& aComplete) { - OstTraceFunctionEntry0( CUSBSESSION_STOPDEVICEL_ENTRY ); + LOG_FUNC #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV // Only 'control' session is allowed to stop USB support if ( !iSessionCtlMode ) { - OstTraceFunctionExit0( CUSBSESSION_STOPDEVICEL_EXIT ); return KErrAccessDenied; } #endif if (iStopOutstanding) { - OstTraceFunctionExit0( CUSBSESSION_STOPDEVICEL_EXIT_DUP1 ); return KErrInUse; } @@ -772,7 +760,6 @@ iStopOutstanding = ETrue; } - OstTraceFunctionExit0( CUSBSESSION_STOPDEVICEL_EXIT_DUP2 ); return KErrNone; #else @@ -783,7 +770,6 @@ aComplete = ETrue; aMessage.IsNull(); iStopOutstanding = EFalse; - OstTraceFunctionExit0( CUSBSESSION_STOPDEVICEL_EXIT_DUP3 ); return KErrNone; #endif @@ -800,13 +786,12 @@ */ TInt CUsbSession::StartCancel(const RMessage2& aMessage, TBool& aComplete) { - OstTraceFunctionEntry0( CUSBSESSION_STARTCANCEL_ENTRY ); + LOG_FUNC #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV // Only 'control' session is allowed to cancel outstaning start request if ( !iSessionCtlMode ) { - OstTraceFunctionExit0( CUSBSESSION_STARTCANCEL_EXIT ); return KErrAccessDenied; } #endif @@ -826,7 +811,6 @@ #endif } - OstTraceFunctionExit0( CUSBSESSION_STARTCANCEL_EXIT_DUP1 ); return KErrNone; } @@ -841,19 +825,18 @@ */ TInt CUsbSession::StopCancel(const RMessage2& aMessage, TBool& aComplete) { - OstTraceFunctionEntry0( CUSBSESSION_STOPCANCEL_ENTRY ); + LOG_FUNC + #ifdef SYMBIAN_ENABLE_USB_OTG_HOST_PRIV // Only 'control' session is allowed to cancel outstaning stop request if ( !iSessionCtlMode ) { - OstTraceFunctionExit0( CUSBSESSION_STOPCANCEL_EXIT ); return KErrAccessDenied; } #endif if (!iStopOutstanding) { - OstTraceFunctionExit0( CUSBSESSION_STOPCANCEL_EXIT_DUP1 ); return KErrNone; } @@ -867,7 +850,6 @@ return errHost; #endif TRAPD(err, iUsbServer->Device().StartL()); - OstTraceFunctionExit0( CUSBSESSION_STOPCANCEL_EXIT_DUP2 ); return err; } @@ -883,11 +865,10 @@ */ TInt CUsbSession::RegisterDeviceObserver(const RMessage2& aMessage, TBool& aComplete) { - OstTraceFunctionEntry0( CUSBSESSION_REGISTERDEVICEOBSERVER_ENTRY ); + LOG_FUNC if (iDeviceObserverOutstanding) { - OstTraceFunctionExit0( CUSBSESSION_REGISTERDEVICEOBSERVER_EXIT ); return KErrInUse; } @@ -899,7 +880,7 @@ { // This is the first observer after c'tor or DeregisterObserver(), // so zap the device event queue. - OstTrace0( TRACE_NORMAL, CUSBSESSION_REGISTERDEVICEOBSERVER, "CUsbSession::RegisterDeviceObserver Reset Device Event Queue" ); + LOGTEXT(_L8(" Reset Device Event Queue")); iDevStateQueueHead = 0; iDevStateQueueTail = 0; iObserverQueueEvents = ETrue; @@ -910,7 +891,6 @@ UsbDeviceDequeueEvent(); } - OstTraceFunctionExit0( CUSBSESSION_REGISTERDEVICEOBSERVER_EXIT_DUP1 ); return KErrNone; } @@ -926,18 +906,16 @@ */ TInt CUsbSession::RegisterServiceObserver(const RMessage2& aMessage, TBool& aComplete) { - OstTraceFunctionEntry0( CUSBSESSION_REGISTERSERVICEOBSERVER_ENTRY ); + LOG_FUNC if (iServiceObserverOutstanding) { - OstTraceFunctionExit0( CUSBSESSION_REGISTERSERVICEOBSERVER_EXIT ); return KErrInUse; } iServiceObserverMessage = aMessage; iServiceObserverOutstanding = ETrue; aComplete = EFalse; - OstTraceFunctionExit0( CUSBSESSION_REGISTERSERVICEOBSERVER_EXIT_DUP1 ); return KErrNone; } @@ -953,10 +931,10 @@ */ TInt CUsbSession::GetCurrentServiceState(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_GETCURRENTSERVICESTATE_ENTRY ); + LOG_FUNC TUsbServiceState state = iUsbServer->Device().ServiceState(); - OstTrace1( TRACE_NORMAL, CUSBSESSION_GETCURRENTSERVICESTATE, "CUsbSession::GetCurrentServiceState;state=%d", state ); + LOGTEXT2(_L8("\tstate = %d"), state); TPckg pckg(state); return aMessage.Write(0, pckg); } @@ -972,10 +950,10 @@ */ TInt CUsbSession::GetCurrentDeviceState(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_GETCURRENTDEVICESTATE_ENTRY ); + LOG_FUNC TUsbDeviceState state = iUsbServer->Device().DeviceState(); - OstTrace1( TRACE_NORMAL, CUSBSESSION_GETCURRENTDEVICESTATE, "CUsbSession::GetCurrentDeviceState;state=%d", state ); + LOGTEXT2(_L8("\tstate = %d"), state); TPckg pckg(state); return aMessage.Write(0, pckg); } @@ -990,11 +968,10 @@ */ TInt CUsbSession::DeRegisterDeviceObserver() { - OstTraceFunctionEntry0( CUSBSESSION_DEREGISTERDEVICEOBSERVER_ENTRY ); + LOG_FUNC if (!iDeviceObserverOutstanding) { - OstTraceFunctionExit0( CUSBSESSION_DEREGISTERDEVICEOBSERVER_EXIT ); return KErrNone; } @@ -1004,7 +981,6 @@ // client doesn't need events queuing any more iObserverQueueEvents = EFalse; - OstTraceFunctionExit0( CUSBSESSION_DEREGISTERDEVICEOBSERVER_EXIT_DUP1 ); return KErrNone; } @@ -1017,17 +993,15 @@ */ TInt CUsbSession::DeRegisterServiceObserver() { - OstTraceFunctionEntry0( CUSBSESSION_DEREGISTERSERVICEOBSERVER_ENTRY ); + LOG_FUNC if (!iServiceObserverOutstanding) { - OstTraceFunctionExit0( CUSBSESSION_DEREGISTERSERVICEOBSERVER_EXIT ); return KErrNone; } iServiceObserverOutstanding = EFalse; iServiceObserverMessage.Complete(KErrCancel); - OstTraceFunctionExit0( CUSBSESSION_DEREGISTERSERVICEOBSERVER_EXIT_DUP1 ); return KErrNone; } @@ -1041,7 +1015,7 @@ */ TInt CUsbSession::TryStartDeviceL(const RMessage2& aMessage, TBool& aComplete) { - OstTraceFunctionEntry0( CUSBSESSION_TRYSTARTDEVICEL_ENTRY ); + LOG_FUNC #ifndef __OVER_DUMMYUSBDI__ @@ -1049,20 +1023,17 @@ // Only 'control' session is allowed to start USB support if ( !iSessionCtlMode ) { - OstTraceFunctionExit0( CUSBSESSION_TRYSTARTDEVICEL_EXIT ); return KErrAccessDenied; } #endif if (!iPersonalityCfged) { - OstTraceFunctionExit0( CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP1 ); return KErrNotSupported; } if (iStartOutstanding || iStopOutstanding) { - OstTraceFunctionExit0( CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP2 ); return KErrServerBusy; } @@ -1099,7 +1070,6 @@ { if (aMessage.Int0() != iUsbServer->Device().CurrentPersonalityId()) { - OstTraceFunctionExit0( CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP3 ); return KErrAbort; } @@ -1112,11 +1082,9 @@ } else if (state == EUsbServiceStopping) { - OstTraceFunctionExit0( CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP4 ); return KErrServerBusy; } - OstTraceFunctionExit0( CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP5 ); return KErrNone; #else @@ -1127,7 +1095,6 @@ iStartOutstanding = EFalse; aMessage.IsNull(); aComplete = ETrue; - OstTraceFunctionExit0( CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP6 ); return KErrNone; #endif } @@ -1142,7 +1109,7 @@ */ TInt CUsbSession::TryStopDeviceL(const RMessage2& aMessage, TBool& aComplete) { - OstTraceFunctionEntry0( CUSBSESSION_TRYSTOPDEVICEL_ENTRY ); + LOG_FUNC #ifndef __OVER_DUMMYUSBDI__ @@ -1150,20 +1117,17 @@ // Only 'control' session is allowed to stop USB support if ( !iSessionCtlMode ) { - OstTraceFunctionExit0( CUSBSESSION_TRYSTOPDEVICEL_EXIT ); return KErrAccessDenied; } #endif if (!iPersonalityCfged) { - OstTraceFunctionExit0( CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP1 ); return KErrNotSupported; } if (iStartOutstanding || iStopOutstanding) { - OstTraceFunctionExit0( CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP2 ); return KErrServerBusy; } @@ -1193,7 +1157,6 @@ } else if (state == EUsbServiceStarting) { - OstTraceFunctionExit0( CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP3 ); return KErrServerBusy; } else if (state == EUsbServiceStopping) @@ -1203,7 +1166,6 @@ iStopOutstanding = ETrue; } - OstTraceFunctionExit0( CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP4 ); return KErrNone; #else @@ -1214,7 +1176,6 @@ aMessage.IsNull(); aComplete = ETrue; iStopOutstanding = EFalse; - OstTraceFunctionExit0( CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP5 ); return KErrNone; #endif } @@ -1229,11 +1190,10 @@ */ TInt CUsbSession::CancelInterest(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_CANCELINTEREST_ENTRY ); + LOG_FUNC if (!iPersonalityCfged) { - OstTraceFunctionExit0( CUSBSESSION_CANCELINTEREST_EXIT ); return KErrNotSupported; } @@ -1255,7 +1215,6 @@ } } - OstTraceFunctionExit0( CUSBSESSION_CANCELINTEREST_EXIT_DUP1 ); return KErrCancel; } @@ -1268,16 +1227,15 @@ */ TInt CUsbSession::GetCurrentPersonalityId(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_GETCURRENTPERSONALITYID_ENTRY ); + LOG_FUNC if (!iPersonalityCfged) { - OstTraceFunctionExit0( CUSBSESSION_GETCURRENTPERSONALITYID_EXIT ); return KErrNotSupported; } TInt currentPersonalityId = iUsbServer->Device().CurrentPersonalityId(); - OstTrace1( TRACE_NORMAL, CUSBSESSION_GETCURRENTPERSONALITYID, "CUsbSession::GetCurrentPersonalityId;currentPersonalityId=%d", currentPersonalityId ); + LOGTEXT2(_L8("\tcurrentPersonalityId = %d"), currentPersonalityId); TPckgC pckg(currentPersonalityId); return aMessage.Write(0, pckg); } @@ -1293,11 +1251,10 @@ */ TInt CUsbSession::GetSupportedClasses(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_GETSUPPORTEDCLASSES_ENTRY ); + LOG_FUNC if (!iPersonalityCfged) { - OstTraceFunctionExit0( CUSBSESSION_GETSUPPORTEDCLASSES_EXIT ); return KErrNotSupported; } @@ -1309,11 +1266,7 @@ TInt personalityCount = personalities.Count(); for (TInt i = 0; i < personalityCount; i++) { - if(personalities[i] == NULL) - { - OstTrace1( TRACE_NORMAL, CUSBSESSION_GETSUPPORTEDCLASSES, "CUsbSession::GetSupportedClasses;ENullPersonalityPointer=%d", ENullPersonalityPointer ); - User::Panic(KUsbSvrPncCat, ENullPersonalityPointer); - } + __ASSERT_ALWAYS(personalities[i] != NULL, _USB_PANIC(KUsbSvrPncCat, ENullPersonalityPointer)); if (aMessage.Int0() == personalities[i]->PersonalityId()) { classUids[0] = personalities[i]->SupportedClasses().Count(); @@ -1321,13 +1274,11 @@ { if (j < KUsbMaxSupportedClasses + 1) { - classUids[j] = personalities[i]->SupportedClasses()[j - 1].iClassUid.iUid; - OstTrace1( TRACE_NORMAL, CUSBSESSION_GETSUPPORTEDCLASSES_DUP1, "CUsbSession::GetSupportedClasses;classUids[%d] = ", j ); - OstTrace1( TRACE_NORMAL, CUSBSESSION_GETSUPPORTEDCLASSES_DUP2, "%d", classUids[j] ); + classUids[j] = personalities[i]->SupportedClasses()[j - 1].iUid; + LOGTEXT3(_L8("\tclassUids[%d] = %d"), j, classUids[j]); } else { - OstTraceFunctionExit0( CUSBSESSION_GETSUPPORTEDCLASSES_EXIT_DUP1 ); return KErrTooBig; } } @@ -1338,7 +1289,6 @@ if (classUids[0] == 0) { // No supported classes are found - OstTraceFunctionExit0( CUSBSESSION_GETSUPPORTEDCLASSES_EXIT_DUP2 ); return KErrNotSupported; } @@ -1353,7 +1303,6 @@ } delete buf; - OstTraceFunctionExit0( CUSBSESSION_GETSUPPORTEDCLASSES_EXIT_DUP3 ); return ret; } @@ -1366,11 +1315,10 @@ */ TInt CUsbSession::GetPersonalityIds(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_GETPERSONALITYIDS_ENTRY ); + LOG_FUNC if (!iPersonalityCfged) { - OstTraceFunctionExit0( CUSBSESSION_GETPERSONALITYIDS_EXIT ); return KErrNotSupported; } @@ -1381,11 +1329,7 @@ TInt personalityCount = personalities.Count(); for (TInt i = 0; i < personalityCount; ++i) { - if(personalities[i] == NULL) - { - OstTrace1( TRACE_NORMAL, CUSBSESSION_GETPERSONALITYIDS, "CUsbSession::GetPersonalityIds;Panic reason=%d", ENullPersonalityPointer ); - User::Panic(KUsbSvrPncCat, ENullPersonalityPointer); - } + __ASSERT_ALWAYS(personalities[i] != NULL, _USB_PANIC(KUsbSvrPncCat, ENullPersonalityPointer)); personalityIds[i + 1] = personalities[i]->PersonalityId(); } personalityIds[0] = personalityCount; @@ -1401,7 +1345,6 @@ } delete buf; - OstTraceFunctionExit0( CUSBSESSION_GETPERSONALITYIDS_EXIT_DUP1 ); return ret; } @@ -1414,11 +1357,10 @@ */ TInt CUsbSession::GetDescription(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_GETDESCRIPTION_ENTRY ); + LOG_FUNC if (!iPersonalityCfged) { - OstTraceFunctionExit0( CUSBSESSION_GETDESCRIPTION_EXIT ); return KErrNotSupported; } @@ -1430,10 +1372,39 @@ } // We should never reach here - OstTraceFunctionExit0( CUSBSESSION_GETDESCRIPTION_EXIT_DUP1 ); return KErrNotSupported; } +/** + * Gets personality detailed description + * + * @internalComponent + * @param aMessage Message received from the client + * @return Any error that occurred or KErrNone + */ +TInt CUsbSession::GetDetailedDescription(const RMessage2& aMessage) + { + LOG_FUNC + + if (!iPersonalityCfged) + { + return KErrNotSupported; + } + + TInt personalityId = aMessage.Int0(); + const CPersonality* personality = iUsbServer->Device().GetPersonality(personalityId); + if (personality) + { + if(personality->Version() < EUsbManagerResourceVersionTwo) + { + return KErrNotFound; + } + return aMessage.Write(1, *(personality->DetailedDescription())); + } + + // We should never reach here + return KErrNotSupported; + } /** * Gets personality property @@ -1444,11 +1415,10 @@ */ TInt CUsbSession::GetPersonalityProperty(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_GETPERSONALITYPROPERTY_ENTRY ); + LOG_FUNC if (!iPersonalityCfged) { - OstTraceFunctionExit0( CUSBSESSION_GETPERSONALITYPROPERTY_EXIT ); return KErrNotSupported; } @@ -1456,11 +1426,14 @@ const CPersonality* personality = iUsbServer->Device().GetPersonality(personalityId); if (personality) { + if(personality->Version() < EUsbManagerResourceVersionThree) + { + return KErrNotFound; + } TPckg pckg(personality->Property()); return aMessage.Write(1, pckg); } - OstTraceFunctionExit0( CUSBSESSION_GETPERSONALITYPROPERTY_EXIT_DUP2 ); return KErrNotSupported; } @@ -1473,10 +1446,10 @@ */ TInt CUsbSession::ClassSupported(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_CLASSSUPPORTED_ENTRY ); + LOG_FUNC + if (!iPersonalityCfged) { - OstTraceFunctionExit0( CUSBSESSION_CLASSSUPPORTED_EXIT ); return KErrNotSupported; } @@ -1486,13 +1459,12 @@ const CPersonality* personality = iUsbServer->Device().GetPersonality(personalityId); if (personality) { - isSupported = personality->ClassSupported(classUid); + isSupported = (personality->ClassSupported(classUid) != KErrNotFound); TPckg pkg2(isSupported); return aMessage.Write(2, pkg2); } // We should never reach here - OstTraceFunctionExit0( CUSBSESSION_CLASSSUPPORTED_EXIT_DUP1 ); return KErrNotSupported; } @@ -1506,12 +1478,12 @@ */ TInt CUsbSession::SetCtlSessionMode(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_SETCTLSESSIONMODE_ENTRY ); + LOG_FUNC TInt ret = KErrNone; TBool value = (TBool)aMessage.Int0(); - OstTrace1( TRACE_NORMAL, CUSBSESSION_SETCTLSESSIONMODE, "CUsbSession::SetCtlSessionMode;Setting = %d", static_cast(value) ); + LOGTEXT2(_L8("\tSetting = %d"), static_cast(value)); // Verify if this is the same session which set the value before if ( iCtlSession && (iCtlSession != this) ) @@ -1533,7 +1505,6 @@ } } - OstTraceFunctionExit0( CUSBSESSION_SETCTLSESSIONMODE_EXIT ); return ret; } @@ -1546,7 +1517,7 @@ */ TInt CUsbSession::BusRequest() { - OstTraceFunctionEntry0( CUSBSESSION_BUSREQUEST_ENTRY ); + LOG_FUNC TInt ret = KErrNone; if ( iSessionCtlMode ) @@ -1558,7 +1529,6 @@ ret = KErrAccessDenied; } - OstTraceFunctionExit0( CUSBSESSION_BUSREQUEST_EXIT ); return ret; } @@ -1573,7 +1543,7 @@ */ TInt CUsbSession::BusRespondSrp() { - OstTraceFunctionEntry0( CUSBSESSION_BUSRESPONDSRP_ENTRY ); + LOG_FUNC TInt ret = KErrNone; if ( iSessionCtlMode ) @@ -1585,7 +1555,6 @@ ret = KErrAccessDenied; } - OstTraceFunctionExit0( CUSBSESSION_BUSRESPONDSRP_EXIT ); return ret; } @@ -1599,7 +1568,7 @@ */ TInt CUsbSession::BusClearError() { - OstTraceFunctionEntry0( CUSBSESSION_BUSCLEARERROR_ENTRY ); + LOG_FUNC TInt ret = KErrNone; if ( iSessionCtlMode ) @@ -1611,7 +1580,6 @@ ret = KErrAccessDenied; } - OstTraceFunctionExit0( CUSBSESSION_BUSCLEARERROR_EXIT ); return ret; } @@ -1624,7 +1592,7 @@ */ TInt CUsbSession::BusDrop() { - OstTraceFunctionEntry0( CUSBSESSION_BUSDROP_ENTRY ); + LOG_FUNC TInt ret = KErrNone; if ( iSessionCtlMode ) @@ -1636,7 +1604,6 @@ ret = KErrAccessDenied; } - OstTraceFunctionExit0( CUSBSESSION_BUSDROP_EXIT ); return ret; } @@ -1649,7 +1616,7 @@ */ TInt CUsbSession::EnableFunctionDriverLoading() { - OstTraceFunctionEntry0( CUSBSESSION_ENABLEFUNCTIONDRIVERLOADING_ENTRY ); + LOG_FUNC TInt ret = KErrNone; if ( iSessionCtlMode ) @@ -1661,7 +1628,6 @@ ret = KErrAccessDenied; } - OstTraceFunctionExit0( CUSBSESSION_ENABLEFUNCTIONDRIVERLOADING_EXIT ); return ret; } @@ -1674,7 +1640,7 @@ */ TInt CUsbSession::DisableFunctionDriverLoading() { - OstTraceFunctionEntry0( CUSBSESSION_DISABLEFUNCTIONDRIVERLOADING_ENTRY ); + LOG_FUNC TInt ret = KErrNone; if ( iSessionCtlMode ) @@ -1686,7 +1652,6 @@ ret = KErrAccessDenied; } - OstTraceFunctionExit0( CUSBSESSION_DISABLEFUNCTIONDRIVERLOADING_EXIT ); return ret; } @@ -1699,9 +1664,8 @@ */ TInt CUsbSession::GetSupportedLanguages(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_GETSUPPORTEDLANGUAGES_ENTRY ); + LOG_FUNC TRAPD(err, GetSupportedLanguagesL(aMessage)); - OstTraceFunctionExit0( CUSBSESSION_GETSUPPORTEDLANGUAGES_EXIT ); return err; } @@ -1714,10 +1678,11 @@ */ TInt CUsbSession::GetSupportedLanguagesL(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_GETSUPPORTEDLANGUAGESL_ENTRY ); + LOG_FUNC + const TUint deviceId = aMessage.Int0(); - OstTrace1( TRACE_NORMAL, CUSBSESSION_GETSUPPORTEDLANGUAGESL, "CUsbSession::GetSupportedLanguagesL;deviceId=%d", deviceId ); + LOGTEXT2(_L8("\tdeviceId = %d"), deviceId); RArray langIds; CleanupClosePushL(langIds); @@ -1726,7 +1691,7 @@ if (ret == KErrNone) { const TUint count = langIds.Count(); - OstTrace1( TRACE_NORMAL, CUSBSESSION_GETSUPPORTEDLANGUAGESL_DUP1, "CUsbSession::GetSupportedLanguagesL;count=%d", count ); + LOGTEXT2(_L8("\tcount = %d"), count); // Set error code if there is no languages or there are too many if ( count == 0 ) @@ -1752,7 +1717,7 @@ for ( TUint ii = 0 ; ii < count; ++ii ) { buf.Append((TUint8*)&(langIds[ii]), sizeof(TUint)); - OstTraceExt2( TRACE_NORMAL, CUSBSESSION_GETSUPPORTEDLANGUAGESL_DUP2, "CUsbSession::GetSupportedLanguagesL;Append langID[%d] = %d", ii, langIds[ii] ); + LOGTEXT3(_L8("Append langID[%d] = %d"),ii,langIds[ii]); } // Write back to the client. @@ -1763,7 +1728,6 @@ CleanupStack::PopAndDestroy(); - OstTraceFunctionExit0( CUSBSESSION_GETSUPPORTEDLANGUAGESL_EXIT ); return ret; } @@ -1776,21 +1740,20 @@ */ TInt CUsbSession::GetManufacturerStringDescriptor(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_ENTRY ); + LOG_FUNC const TUint deviceId = aMessage.Int0(); const TUint langId = aMessage.Int1(); - OstTraceExt2( TRACE_NORMAL, CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR, "CUsbSession::GetManufacturerStringDescriptor;langId=%d;deviceId=%d", langId, deviceId ); + LOGTEXT3(_L8("\tdeviceId = %d, langId = %d"), deviceId, langId); TName string; TInt ret = iUsbServer->Host().GetManufacturerStringDescriptor(deviceId,langId,string); if (ret == KErrNone) { - OstTraceExt1( TRACE_NORMAL, CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_DUP1, "CUsbSession::GetManufacturerStringDescriptor;string = \"%S\"", string ); + LOGTEXT2(_L("\tstring = \"%S\""), &string); ret = aMessage.Write(2, string); } - OstTraceFunctionExit0( CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_EXIT ); return ret; } @@ -1803,21 +1766,20 @@ */ TInt CUsbSession::GetProductStringDescriptor(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_GETPRODUCTSTRINGDESCRIPTOR_ENTRY ); + LOG_FUNC const TUint deviceId = aMessage.Int0(); const TUint langId = aMessage.Int1(); - OstTraceExt2( TRACE_NORMAL, CUSBSESSION_GETPRODUCTSTRINGDESCRIPTOR, "CUsbSession::GetProductStringDescriptor;deviceId=%d;langId=%d", deviceId, langId ); + LOGTEXT3(_L8("\tdeviceId = %d, langId = %d"), deviceId, langId); TName string; TInt ret = iUsbServer->Host().GetProductStringDescriptor(deviceId,langId,string); if (ret == KErrNone) { - OstTraceExt1( TRACE_NORMAL, CUSBSESSION_GETPRODUCTSTRINGDESCRIPTOR_DUP1, "CUsbSession::GetProductStringDescriptor;string = \"%S\"", string ); + LOGTEXT2(_L("\tstring = \"%S\""), &string); ret = aMessage.Write(2, string); } - OstTraceFunctionExit0( CUSBSESSION_GETPRODUCTSTRINGDESCRIPTOR_EXIT ); return ret; } @@ -1830,10 +1792,10 @@ */ TInt CUsbSession::GetOtgDescriptor(const RMessage2& aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_GETOTGDESCRIPTOR_ENTRY ); + LOG_FUNC const TUint deviceId = aMessage.Int0(); - OstTrace1( TRACE_NORMAL, CUSBSESSION_GETOTGDESCRIPTOR, "CUsbSession::GetOtgDescriptor;deviceId=%d", deviceId ); + LOGTEXT2(_L8("\tdeviceId = %d"), deviceId); TOtgDescriptor otgDescriptor; TInt ret = iUsbServer->Host().GetOtgDescriptor(deviceId, otgDescriptor); @@ -1843,7 +1805,6 @@ ret = aMessage.Write(1, buf); } - OstTraceFunctionExit0( CUSBSESSION_GETOTGDESCRIPTOR_EXIT ); return ret; } @@ -1861,11 +1822,10 @@ */ TInt CUsbSession::RegisterHostObserver(const RMessage2& aMessage, TBool& aComplete) { - OstTraceFunctionEntry0( CUSBSESSION_REGISTERHOSTOBSERVER_ENTRY ); + LOG_FUNC if (iHostEventObserverOutstanding) { - OstTraceFunctionExit0( CUSBSESSION_REGISTERHOSTOBSERVER_EXIT ); return KErrInUse; } @@ -1877,7 +1837,7 @@ { // This is the first observer after c'tor or DeregisterObserver(), // so zap the device event queue. - OstTrace0( TRACE_NORMAL, CUSBSESSION_REGISTERHOSTOBSERVER, "CUsbSession::RegisterHostObserver; Reset OTG Host State Queue" ); + LOGTEXT(_L8(" Reset OTG Host State Queue")); iHostEventQueueHead = 0; iHostEventQueueTail = 0; iHostEventObserverQueueEvents = ETrue; @@ -1888,7 +1848,6 @@ UsbHostEventDequeue(); } - OstTraceFunctionExit0( CUSBSESSION_REGISTERHOSTOBSERVER_EXIT_DUP1 ); return KErrNone; } @@ -1900,13 +1859,13 @@ */ TInt CUsbSession::DeRegisterHostObserver() { - OstTraceFunctionEntry0( CUSBSESSION_DEREGISTERHOSTOBSERVER_ENTRY ); + LOG_FUNC + if (!iHostEventObserverQueueEvents) { //Never register - OstTrace0( TRACE_NORMAL, CUSBSESSION_DEREGISTERHOSTOBSERVER, "CUsbSession::DeRegisterHostObserver;iHostEventObserverQueueEvents is FALSE!" ); - OstTraceFunctionExit0( CUSBSESSION_DEREGISTERHOSTOBSERVER_EXIT ); + LOGTEXT(_L8("iHostEventObserverQueueEvents is FALSE!")); return KErrNone; } @@ -1914,7 +1873,7 @@ { iHostEventObserverOutstanding = EFalse; iHostEventObserverMessage.Complete(KErrCancel); - OstTrace0( TRACE_NORMAL, CUSBSESSION_DEREGISTERHOSTOBSERVER_DUP1, "CUsbSession::DeRegisterHostObserver;iHostEventObserverMessage.Complete(KErrCancel);" ); + LOGTEXT(_L8("iHostEventObserverMessage.Complete(KErrCancel);")); } // client doesn't need events queuing any more @@ -1923,7 +1882,6 @@ iHostEventQueueHead = 0; iHostEventQueueTail = 0; - OstTraceFunctionExit0( CUSBSESSION_DEREGISTERHOSTOBSERVER_EXIT_DUP1 ); return KErrNone; } @@ -1941,11 +1899,10 @@ */ TInt CUsbSession::RegisterMsgObserver(const RMessage2& aMessage, TBool& aComplete) { - OstTraceFunctionEntry0( CUSBSESSION_REGISTERMSGOBSERVER_ENTRY ); + LOG_FUNC if (iMsgObserverOutstanding) { - OstTraceFunctionExit0( CUSBSESSION_REGISTERMSGOBSERVER_EXIT ); return KErrInUse; } @@ -1957,7 +1914,7 @@ { // This is the first observer after c'tor or DeregisterObserver(), // so zap the device event queue. - OstTrace0( TRACE_NORMAL, CUSBSESSION_REGISTERMSGOBSERVER, "CUsbSession::RegisterMsgObserver; Reset OTG Message Queue" ); + LOGTEXT(_L8(" Reset OTG Message Queue")); iMsgQueueHead = 0; iMsgQueueTail = 0; iMsgObserverQueueEvents = ETrue; @@ -1968,7 +1925,6 @@ UsbMsgDequeue(); } - OstTraceFunctionExit0( CUSBSESSION_REGISTERMSGOBSERVER_EXIT_DUP1 ); return KErrNone; } @@ -1980,11 +1936,10 @@ */ TInt CUsbSession::DeRegisterMsgObserver() { - OstTraceFunctionEntry0( CUSBSESSION_DEREGISTERMSGOBSERVER_ENTRY ); + LOG_FUNC if (!iMsgObserverOutstanding) { - OstTraceFunctionExit0( CUSBSESSION_DEREGISTERMSGOBSERVER_EXIT ); return KErrNone; } @@ -1994,7 +1949,6 @@ // client doesn't need events queuing any more iMsgObserverQueueEvents = EFalse; - OstTraceFunctionExit0( CUSBSESSION_DEREGISTERMSGOBSERVER_EXIT_DUP1 ); return KErrNone; } @@ -2008,7 +1962,7 @@ */ void CUsbSession::UsbOtgHostMessage(TInt aMessage) { - OstTraceFunctionEntry0( CUSBSESSION_USBOTGHOSTMESSAGE_ENTRY ); + LOG_FUNC // can we bypass the queue? if ((iMsgObserverOutstanding) && (iMsgQueueHead == iMsgQueueTail)) @@ -2026,12 +1980,12 @@ // add event to head of queue iMsgQueue[iMsgQueueHead] = aMessage; iMsgQueueHead = (iMsgQueueHead + 1) % KOtgHostMessageQueueSize; - OstTraceExt2( TRACE_NORMAL, CUSBSESSION_USBOTGHOSTMESSAGE, "CUsbSession::UsbOtgHostMessage; addqueue (%d, %d)", iMsgQueueHead, iMsgQueueTail ); + LOGTEXT3(_L8("+++ CUsbSession::UsbOtgMessage() addqueue (%d, %d)"), iMsgQueueHead, + iMsgQueueTail); // UsbMsgDequeueEvent() will read from queue when RegisterMsgObserver() // is next called. } - OstTraceFunctionExit0( CUSBSESSION_USBOTGHOSTMESSAGE_EXIT ); } /** @@ -2045,7 +1999,7 @@ */ void CUsbSession::UsbHostEvent(TDeviceEventInformation& aDevInfo) { - OstTraceFunctionEntry0( CUSBSESSION_USBHOSTEVENT_ENTRY ); + LOG_FUNC // can we bypass the queue? if ((iHostEventObserverOutstanding) && (iHostEventQueueHead == iHostEventQueueTail)) @@ -2053,24 +2007,24 @@ iNotifiedHostState = aDevInfo; iHostEventObserverOutstanding = EFalse; - OstTrace0( TRACE_NORMAL, CUSBSESSION_USBHOSTEVENT, "CUsbSession::UsbHostEvent detected outstanding request" ); + LOGTEXT(_L8("CUsbSession::UsbHostEvent() detected outstanding request")); TPckg info(aDevInfo); const TInt err = iHostEventObserverMessage.Write(0, info); iHostEventObserverMessage.Complete(err); - OstTrace1( TRACE_NORMAL, CUSBSESSION_USBHOSTEVENT_DUP1, "CUsbSession::UsbHostEvent; detects outstanding request: request is compeleted with %d", err ); + LOGTEXT2(_L8("CUsbSession::UsbHostEvent() detects outstanding request: request is compeleted with %d"), err); } else if (iHostEventObserverQueueEvents) { // add dev info to head of queue iHostStateQueue[iHostEventQueueHead] = aDevInfo; iHostEventQueueHead = (iHostEventQueueHead + 1) % KDeviceStatesQueueSize; - OstTraceExt2( TRACE_NORMAL, CUSBSESSION_USBHOSTEVENT_DUP2, "CUsbSession::UsbHostEvent; addqueue (%d, %d)", iHostEventQueueHead, iHostEventQueueTail ); + LOGTEXT3(_L8("+++ CUsbSession::UsbHostEvent() addqueue (%d, %d)"), iHostEventQueueHead, + iHostEventQueueTail); // UsbHostStateDequeueEvent() will read from queue when RegisterHostObserver() // is next called. } - OstTraceFunctionExit0( CUSBSESSION_USBHOSTEVENT_EXIT ); } /** @@ -2078,7 +2032,7 @@ */ void CUsbSession::UsbMsgDequeue() { - OstTraceFunctionEntry0( CUSBSESSION_USBMSGDEQUEUE_ENTRY ); + LOG_FUNC // Work our way through the queue, until we reach the end // OR we find an event the current observer wants. @@ -2092,13 +2046,12 @@ TPckg pckg(newMsg); iNotifiedMsg = newMsg; - OstTraceExt2( TRACE_NORMAL, CUSBSESSION_USBMSGDEQUEUE, "CUsbSession::UsbMsgDequeue;dequeued event #%d (0x%x)", iMsgQueueTail, newMsg ); + LOGTEXT3(_L8(">>> dequeued event #%d (0x%x)"), iMsgQueueTail, newMsg); iMsgObserverOutstanding = EFalse; const TInt err = iMsgObserverMessage.Write(0, pckg); iMsgObserverMessage.Complete(err); } - OstTraceFunctionExit0( CUSBSESSION_USBMSGDEQUEUE_EXIT ); } /** @@ -2106,7 +2059,7 @@ */ void CUsbSession::UsbHostEventDequeue() { - OstTraceFunctionEntry0( CUSBSESSION_USBHOSTEVENTDEQUEUE_ENTRY ); + LOG_FUNC // Work our way through the queue, until we reach the end // OR we find an event the current observer wants. @@ -2120,16 +2073,15 @@ // advance tail towards the head iHostEventQueueTail = (iHostEventQueueTail + 1) % KDeviceStatesQueueSize; - OstTraceExt2( TRACE_NORMAL, CUSBSESSION_USBHOSTEVENTDEQUEUE, "CUsbSession::UsbHostEventDequeue; dequeued event #%d (0x%x)", iHostEventQueueTail, newDevInfo.iEventType ); + LOGTEXT3(_L8(">>> CUsbSession::UsbHostStateDequeueEvent() dequeued event #%d (0x%x)"), iHostEventQueueTail, newDevInfo.iEventType); TPckg info(newDevInfo); iHostEventObserverOutstanding = EFalse; const TInt err = iHostEventObserverMessage.Write(0, info); iHostEventObserverMessage.Complete(err); - OstTrace1( TRACE_NORMAL, CUSBSESSION_USBHOSTEVENTDEQUEUE_DUP1, "CUsbSession::UsbHostStateDequeueEvent() detects outstanding request: request is compeleted with %d", err ); + LOGTEXT2(_L8("CUsbSession::UsbHostStateDequeueEvent() detects outstanding request: request is compeleted with %d"), err); } - OstTraceFunctionExit0( CUSBSESSION_USBHOSTEVENTDEQUEUE_EXIT ); } TInt CUsbSession::RequestSession() diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/UsbSvr.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/UsbSvr.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/SRC/UsbSvr.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2003-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" @@ -17,18 +17,16 @@ #include #include -#include #include "CUsbScheduler.h" #include "CUsbServer.h" +#include #include "rusb.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "UsbSvrTraces.h" -#endif - static void RunServerL(); +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "USBSVR"); +#endif GLDEF_C TInt E32Main() @@ -62,13 +60,7 @@ // { // naming the server thread after the server helps to debug panics - TInt err = User::RenameThread(KUsbServerName); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, USBSVR_RUNSERVERL, "::RunServerL; User::RenameThread(KUsbServerName) error, leave reason=%d", err ); - User::Leave(err); - } - + LEAVEIFERRORL(User::RenameThread(KUsbServerName)); // // create and install the active scheduler we need CUsbScheduler* scheduler = CUsbScheduler::NewL(); diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/cusbhost.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/cusbhost.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/SRC/cusbhost.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -15,14 +15,14 @@ * */ +#include "cusbhost.h" #include -#include "cusbhost.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "cusbhostTraces.h" + + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "usbhost"); #endif - CUsbHost* CUsbHost::iInstance = 0; CUsbHost* CUsbHost::NewL() @@ -39,7 +39,7 @@ CUsbHost::~CUsbHost() { - OstTraceFunctionEntry0( CUSBHOST_CUSBHOST_DES_ENTRY ); + LOG_FUNC Stop(); @@ -51,37 +51,30 @@ } iObservers.Close(); iInstance = 0; - OstTraceFunctionExit0( CUSBHOST_CUSBHOST_DES_EXIT ); } CUsbHost::CUsbHost() { - OstTraceFunctionEntry0( CUSBHOST_CUSBHOST_CONS_ENTRY ); - OstTraceFunctionExit0( CUSBHOST_CUSBHOST_CONS_EXIT ); + LOG_FUNC } void CUsbHost::ConstructL() { - OstTraceFunctionEntry0( CUSBHOST_CONSTRUCTL_ENTRY ); + LOG_FUNC iUsbHostWatcher[EHostEventMonitor] = CActiveUsbHostEventWatcher::NewL(iUsbHostStack,*this,iHostEventInfo); iUsbHostWatcher[EHostMessageMonitor] = CActiveUsbHostMessageWatcher::NewL(iUsbHostStack,*this,iHostMessage); - OstTraceFunctionExit0( CUSBHOST_CONSTRUCTL_EXIT ); } void CUsbHost::StartL() { - OstTraceFunctionEntry0( CUSBHOST_STARTL_ENTRY ); + LOG_FUNC if(!iHasBeenStarted) { - TInt err = iUsbHostStack.Connect(); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBHOST_STARTL, "CUsbHost::StartL; iUsbHostStack.Connect() error. Leave error=%d", err ); - User::Leave(err); - } + + LEAVEIFERRORL(iUsbHostStack.Connect()); for(TInt i=0;i& aLangIds) { - OstTraceFunctionEntry0( CUSBHOST_GETSUPPORTEDLANGUAGES_ENTRY ); + LOG_FUNC TInt err = KErrNone; if ( iUsbHostStack.Handle() ) { @@ -149,13 +138,12 @@ { err = KErrBadHandle; } - OstTraceFunctionExit0( CUSBHOST_GETSUPPORTEDLANGUAGES_EXIT ); return err; } TInt CUsbHost::GetManufacturerStringDescriptor(TUint aDeviceId,TUint aLangId,TName& aString) { - OstTraceFunctionEntry0( CUSBHOST_GETMANUFACTURERSTRINGDESCRIPTOR_ENTRY ); + LOG_FUNC TInt err = KErrNone; if ( iUsbHostStack.Handle() ) { @@ -165,13 +153,12 @@ { err = KErrBadHandle; } - OstTraceFunctionExit0( CUSBHOST_GETMANUFACTURERSTRINGDESCRIPTOR_EXIT ); return err; } TInt CUsbHost::GetProductStringDescriptor(TUint aDeviceId,TUint aLangId,TName& aString) { - OstTraceFunctionEntry0( CUSBHOST_GETPRODUCTSTRINGDESCRIPTOR_ENTRY ); + LOG_FUNC TInt err = KErrNone; if ( iUsbHostStack.Handle() ) { @@ -181,13 +168,12 @@ { err = KErrBadHandle; } - OstTraceFunctionExit0( CUSBHOST_GETPRODUCTSTRINGDESCRIPTOR_EXIT ); return err; } TInt CUsbHost::GetOtgDescriptor(TUint aDeviceId, TOtgDescriptor& otgDescriptor) { - OstTraceFunctionEntry0( CUSBHOST_GETOTGDESCRIPTOR_ENTRY ); + LOG_FUNC TInt err(KErrNone); @@ -200,21 +186,20 @@ err = KErrBadHandle; } - OstTraceFunctionExit0( CUSBHOST_GETOTGDESCRIPTOR_EXIT ); return err; } void CUsbHost::NotifyHostEvent(TUint aWatcherId) { - OstTraceFunctionEntry0( CUSBHOST_NOTIFYHOSTEVENT_ENTRY ); - + LOG_FUNC if(aWatcherId == EHostEventMonitor) { - OstTrace1( TRACE_NORMAL, CUSBHOST_NOTIFYHOSTEVENT, "CUsbHost::NotifyHostEvent;DeviceId=%d", iHostEventInfo.iDeviceId ); - OstTrace1( TRACE_NORMAL, CUSBHOST_NOTIFYHOSTEVENT_DUP1, "CUsbHost::NotifyHostEvent;iEventType=%d", iHostEventInfo.iEventType ); - OstTrace1( TRACE_NORMAL, CUSBHOST_NOTIFYHOSTEVENT_DUP2, "CUsbHost::NotifyHostEvent;TDriverLoadStatus=%d", iHostEventInfo.iDriverLoadStatus ); - OstTrace1( TRACE_NORMAL, CUSBHOST_NOTIFYHOSTEVENT_DUP3, "CUsbHost::NotifyHostEvent;VID=%d", iHostEventInfo.iVid ); - OstTrace1( TRACE_NORMAL, CUSBHOST_NOTIFYHOSTEVENT_DUP4, "CUsbHost::NotifyHostEvent;Pid=%d", iHostEventInfo.iPid ); + + LOGTEXT2(_L8("\t Device id %d"),iHostEventInfo.iDeviceId); + LOGTEXT2(_L8("\t iEventType %d"),iHostEventInfo.iEventType); + LOGTEXT2(_L8("\t TDriverLoadStatus %d"),iHostEventInfo.iDriverLoadStatus); + LOGTEXT2(_L8("\t VID %d"),iHostEventInfo.iVid); + LOGTEXT2(_L8("\t PID %d"),iHostEventInfo.iPid); for(TUint i=0;iUsbOtgHostMessage(iHostMessage); } } - OstTraceFunctionExit0( CUSBHOST_NOTIFYHOSTEVENT_EXIT ); } void CUsbHost::UpdateNumOfObservers() { - OstTraceFunctionEntry0( CUSBHOST_UPDATENUMOFOBSERVERS_ENTRY ); + LOG_FUNC iNumOfObservers = iObservers.Count(); - OstTraceFunctionExit0( CUSBHOST_UPDATENUMOFOBSERVERS_EXIT ); } TInt CUsbHost::EnableDriverLoading() { - OstTraceFunctionEntry0( CUSBHOST_ENABLEDRIVERLOADING_ENTRY ); + LOG_FUNC TInt err = KErrNone; if ( iUsbHostStack.Handle() ) { @@ -252,16 +235,14 @@ { err = KErrBadHandle; } - OstTraceFunctionExit0( CUSBHOST_ENABLEDRIVERLOADING_EXIT ); return err; } void CUsbHost::DisableDriverLoading() { - OstTraceFunctionEntry0( CUSBHOST_DISABLEDRIVERLOADING_ENTRY ); + LOG_FUNC if ( iUsbHostStack.Handle() ) { iUsbHostStack.DisableDriverLoading(); } - OstTraceFunctionExit0( CUSBHOST_DISABLEDRIVERLOADING_EXIT ); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/cusbhostwatcher.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/cusbhostwatcher.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/SRC/cusbhostwatcher.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -17,15 +17,14 @@ #include "cusbhostwatcher.h" +#include #include "cusbhost.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "cusbhostwatcherTraces.h" + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "hoststatewatcher"); #endif - - /* * Base class for USB Host watchers */ @@ -37,26 +36,23 @@ iOwner(aOwner), iWatcherId(aWatcherId) { - OstTraceFunctionEntry0( CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_CONS_ENTRY ); + LOG_FUNC CActiveScheduler::Add(this); - OstTraceFunctionExit0( CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_CONS_EXIT ); } CActiveUsbHostWatcher::~CActiveUsbHostWatcher() { - OstTraceFunctionEntry0( CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_DES_ENTRY ); + LOG_FUNC Cancel(); - OstTraceFunctionExit0( CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_DES_EXIT ); } void CActiveUsbHostWatcher::RunL() { - OstTraceFunctionEntry0( CACTIVEUSBHOSTWATCHER_RUNL_ENTRY ); + LOG_FUNC ASSERT(iStatus.Int() == KErrNone); iOwner.NotifyHostEvent(iWatcherId); Post(); - OstTraceFunctionExit0( CACTIVEUSBHOSTWATCHER_RUNL_EXIT ); } @@ -84,32 +80,28 @@ , iHostEventInfo(aHostEventInfo) { - OstTraceFunctionEntry0( CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_CONS_ENTRY ); - OstTraceFunctionExit0( CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_CONS_EXIT ); + LOG_FUNC } CActiveUsbHostEventWatcher::~CActiveUsbHostEventWatcher() { - OstTraceFunctionEntry0( CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_DES_ENTRY ); + LOG_FUNC Cancel(); - OstTraceFunctionExit0( CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_DES_EXIT ); } void CActiveUsbHostEventWatcher::Post() { - OstTraceFunctionEntry0( CACTIVEUSBHOSTEVENTWATCHER_POST_ENTRY ); + LOG_FUNC iUsbHostStack.NotifyDeviceEvent(iStatus, iHostEventInfo); SetActive(); - OstTraceFunctionExit0( CACTIVEUSBHOSTEVENTWATCHER_POST_EXIT ); } void CActiveUsbHostEventWatcher::DoCancel() { - OstTraceFunctionEntry0( CACTIVEUSBHOSTEVENTWATCHER_DOCANCEL_ENTRY ); + LOG_FUNC iUsbHostStack.NotifyDeviceEventCancel(); - OstTraceFunctionExit0( CACTIVEUSBHOSTEVENTWATCHER_DOCANCEL_EXIT ); } @@ -128,9 +120,9 @@ CActiveUsbHostMessageWatcher::~CActiveUsbHostMessageWatcher() { - OstTraceFunctionEntry0( CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_DES_ENTRY ); + LOG_FUNC + Cancel(); - OstTraceFunctionExit0( CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_DES_EXIT ); } CActiveUsbHostMessageWatcher::CActiveUsbHostMessageWatcher( @@ -142,25 +134,22 @@ KHostMessageMonitor) , iHostMessage(aHostMessage) { - OstTraceFunctionEntry0( CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_CONS_ENTRY ); - OstTraceFunctionExit0( CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_CONS_EXIT ); + LOG_FUNC } void CActiveUsbHostMessageWatcher::Post() { - OstTraceFunctionEntry0( CACTIVEUSBHOSTMESSAGEWATCHER_POST_ENTRY ); + LOG_FUNC iUsbHostStack.NotifyDevmonEvent(iStatus, iHostMessage); SetActive(); - OstTraceFunctionExit0( CACTIVEUSBHOSTMESSAGEWATCHER_POST_EXIT ); } void CActiveUsbHostMessageWatcher::DoCancel() { - OstTraceFunctionEntry0( CACTIVEUSBHOSTMESSAGEWATCHER_DOCANCEL_ENTRY ); + LOG_FUNC iUsbHostStack.NotifyDevmonEventCancel(); - OstTraceFunctionExit0( CACTIVEUSBHOSTMESSAGEWATCHER_DOCANCEL_EXIT ); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/cusbotgwatcher.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/cusbotgwatcher.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/SRC/cusbotgwatcher.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-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" @@ -21,17 +21,16 @@ @file */ -#include #include #include "CUsbScheduler.h" #include "cusbotgwatcher.h" #include "CUsbOtg.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "cusbotgwatcherTraces.h" +#include + +#ifdef __FLOG_ACTIVE +_LIT8(KLogComponent, "USBSVR-OTGWATCHER"); #endif - static _LIT_SECURITY_POLICY_PASS(KAllowAllPolicy); static _LIT_SECURITY_POLICY_S1(KNetworkControlPolicy,KUsbmanSvrSid,ECapabilityNetworkControl); static _LIT_SECURITY_POLICY_C1(KRequestSessionPolicy,ECapabilityCommDD); @@ -51,9 +50,8 @@ CUsbOtgBaseWatcher::CUsbOtgBaseWatcher(RUsbOtgDriver& aLdd) : CActive(CActive::EPriorityStandard), iLdd(aLdd) { - OstTraceFunctionEntry0( CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_CONS_ENTRY ); + LOG_FUNC CActiveScheduler::Add(this); - OstTraceFunctionExit0( CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_CONS_EXIT ); } /** @@ -65,9 +63,8 @@ */ CUsbOtgBaseWatcher::~CUsbOtgBaseWatcher() { - OstTraceFunctionEntry0( CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_DES_ENTRY ); + LOG_FUNC Cancel(); - OstTraceFunctionExit0( CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_DES_EXIT ); } /** @@ -75,9 +72,8 @@ */ void CUsbOtgBaseWatcher::Start() { - OstTraceFunctionEntry0( CUSBOTGBASEWATCHER_START_ENTRY ); + LOG_FUNC Post(); - OstTraceFunctionExit0( CUSBOTGBASEWATCHER_START_EXIT ); } //---------------------------- Id-Pin watcher class --------------------------- @@ -93,13 +89,12 @@ */ CUsbOtgIdPinWatcher* CUsbOtgIdPinWatcher::NewL(RUsbOtgDriver& aLdd) { - OstTraceFunctionEntry0( CUSBOTGIDPINWATCHER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY CUsbOtgIdPinWatcher* self = new (ELeave) CUsbOtgIdPinWatcher(aLdd); CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(self); - OstTraceFunctionExit0( CUSBOTGIDPINWATCHER_NEWL_EXIT ); return self; } @@ -113,10 +108,9 @@ */ CUsbOtgIdPinWatcher::~CUsbOtgIdPinWatcher() { - OstTraceFunctionEntry0( CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_DES_ENTRY ); + LOG_FUNC Cancel(); RProperty::Delete(KUsbOtgIdPinPresentProperty); - OstTraceFunctionExit0( CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_DES_EXIT ); } void CUsbOtgIdPinWatcher::ConstructL() @@ -124,7 +118,7 @@ * Performs 2nd phase construction of the OTG object. */ { - OstTraceFunctionEntry0( CUSBOTGIDPINWATCHER_CONSTRUCTL_ENTRY ); + LOG_FUNC TInt err = RProperty::Define(KUsbOtgIdPinPresentProperty, RProperty::EInt, KAllowAllPolicy, KNetworkControlPolicy); if ( err != KErrNone && err != KErrAlreadyExists ) @@ -136,7 +130,6 @@ { User::LeaveIfError(err); } - OstTraceFunctionExit0( CUSBOTGIDPINWATCHER_CONSTRUCTL_EXIT ); } /** @@ -150,8 +143,7 @@ CUsbOtgIdPinWatcher::CUsbOtgIdPinWatcher(RUsbOtgDriver& aLdd) : CUsbOtgBaseWatcher(aLdd) { - OstTraceFunctionEntry0( CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_CONS_ENTRY ); - OstTraceFunctionExit0( CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_CONS_EXIT ); + LOG_FUNC } /** @@ -159,19 +151,14 @@ */ void CUsbOtgIdPinWatcher::RunL() { - OstTraceFunctionEntry0( CUSBOTGIDPINWATCHER_RUNL_ENTRY ); - OstTrace1( TRACE_NORMAL, CUSBOTGIDPINWATCHER_RUNL, "CUsbOtgIdPinWatcher::RunL;iStatus=%d", iStatus.Int() ); + LOG_FUNC + LOGTEXT2(_L8(">>CUsbOtgIdPinWatcher::RunL [iStatus=%d]"), iStatus.Int()); - TInt err = iStatus.Int(); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBOTGIDPINWATCHER_RUNL_DUP1, "CUsbOtgIdPinWatcher::RunL;iStatus.Int() with error=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(iStatus.Int()); Post(); - OstTraceFunctionExit0( CUSBOTGIDPINWATCHER_RUNL_EXIT ); + LOGTEXT(_L8("<>CUsbOtgIdPinWatcher::Post [iOtgIdPin=%d] - failed to set the property value"), iOtgIdPin); } else { - OstTrace1( TRACE_NORMAL, CUSBOTGIDPINWATCHER_POST_DUP2, - "CUsbOtgIdPinWatcher::Post; [iOtgIdPin=%d] - property is set to 1", iOtgIdPin ); + LOGTEXT2(_L8(">>CUsbOtgIdPinWatcher::Post [iOtgIdPin=%d] - property is set to 1"), iOtgIdPin); } break; case RUsbOtgDriver::EIdPinBPlug: case RUsbOtgDriver::EIdPinUnknown: if (RProperty::Set(KUidUsbManCategory,KUsbOtgIdPinPresentProperty,EFalse) != KErrNone) { - OstTrace1( TRACE_NORMAL, CUSBOTGIDPINWATCHER_POST_DUP3, - "CUsbOtgIdPinWatcher::Post; [iOtgIdPin=%d] - failed to set the property value", iOtgIdPin ); + LOGTEXT2(_L8(">>CUsbOtgIdPinWatcher::Post [iOtgIdPin=%d] - failed to set the property value"), iOtgIdPin); } else { - OstTrace1( TRACE_NORMAL, CUSBOTGIDPINWATCHER_POST_DUP4, - "CUsbOtgIdPinWatcher::Post; [iOtgIdPin=%d] - property is set to 0", iOtgIdPin ); + LOGTEXT2(_L8(">>CUsbOtgIdPinWatcher::Post [iOtgIdPin=%d] - property is set to 0"), iOtgIdPin); } break; default: - OstTrace1( TRACE_NORMAL, CUSBOTGIDPINWATCHER_POST_DUP5, - "CUsbOtgIdPinWatcher::Post; [iOtgIdPin=%d] is unrecognized, re-request QueueOtgIdPinNotification", iOtgIdPin ); + LOGTEXT2(_L8(">>CUsbOtgIdPinWatcher::Post [iOtgIdPin=%d] is unrecognized, re-request QueueOtgIdPinNotification"), iOtgIdPin); break; } SetActive(); - OstTraceFunctionExit0( CUSBOTGIDPINWATCHER_POST_EXIT ); } //----------------------------- VBus watcher class ---------------------------- @@ -244,13 +223,12 @@ */ CUsbOtgVbusWatcher* CUsbOtgVbusWatcher::NewL(RUsbOtgDriver& aLdd) { - OstTraceFunctionEntry0( CUSBOTGVBUSWATCHER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY CUsbOtgVbusWatcher* self = new (ELeave) CUsbOtgVbusWatcher(aLdd); CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(self); - OstTraceFunctionExit0( CUSBOTGVBUSWATCHER_NEWL_EXIT ); return self; } @@ -264,11 +242,10 @@ */ CUsbOtgVbusWatcher::~CUsbOtgVbusWatcher() { - OstTraceFunctionEntry0( CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_DES_ENTRY ); + LOG_FUNC Cancel(); RProperty::Delete(KUsbOtgVBusPoweredProperty); - OstTraceFunctionExit0( CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_DES_EXIT ); } void CUsbOtgVbusWatcher::ConstructL() @@ -276,7 +253,7 @@ * Performs 2nd phase construction of the OTG object. */ { - OstTraceFunctionEntry0( CUSBOTGVBUSWATCHER_CONSTRUCTL_ENTRY ); + LOG_FUNC TInt err = RProperty::Define(KUsbOtgVBusPoweredProperty, RProperty::EInt, KAllowAllPolicy, KNetworkControlPolicy); if ( err != KErrNone && err != KErrAlreadyExists ) @@ -288,7 +265,6 @@ { User::LeaveIfError(err); } - OstTraceFunctionExit0( CUSBOTGVBUSWATCHER_CONSTRUCTL_EXIT ); } /** @@ -301,8 +277,7 @@ CUsbOtgVbusWatcher::CUsbOtgVbusWatcher(RUsbOtgDriver& aLdd) : CUsbOtgBaseWatcher(aLdd) { - OstTraceFunctionEntry0( CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_CONS_ENTRY ); - OstTraceFunctionExit0( CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_CONS_EXIT ); + LOG_FUNC } /** @@ -310,19 +285,14 @@ */ void CUsbOtgVbusWatcher::RunL() { - OstTraceFunctionEntry0( CUSBOTGVBUSWATCHER_RUNL_ENTRY ); - OstTrace1( TRACE_NORMAL, CUSBOTGVBUSWATCHER_RUNL, "CUsbOtgVbusWatcher::RunL;iStatus=%d", iStatus.Int() ); + LOG_FUNC + LOGTEXT2(_L8(">>CUsbOtgVbusWatcher::RunL [iStatus=%d]"), iStatus.Int()); - TInt err = iStatus.Int(); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBOTGVBUSWATCHER_RUNL_DUP1, "CUsbOtgVbusWatcher::RunL;iStatus.Int() with error=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(iStatus.Int()); Post(); - OstTraceFunctionExit0( CUSBOTGVBUSWATCHER_RUNL_EXIT ); + LOGTEXT(_L8("<>CUsbOtgVbusWatcher::Post [iOtgVbus=%d](EVbusHigh) - failed to set the property value"), iOtgVbus); } else { - OstTrace1( TRACE_NORMAL, CUSBOTGVBUSWATCHER_POST_DUP2, - "CUsbOtgVbusWatcher::Post;[iOtgVbus=%d](EVbusHigh) - property is set to ETrue", iOtgVbus ); + LOGTEXT2(_L8(">>CUsbOtgVbusWatcher::Post [iOtgVbus=%d](EVbusHigh) - property is set to ETrue"), iOtgVbus); } break; case RUsbOtgDriver::EVbusLow: case RUsbOtgDriver::EVbusUnknown: if (RProperty::Set(KUidUsbManCategory,KUsbOtgVBusPoweredProperty,EFalse) != KErrNone) { - OstTrace1( TRACE_NORMAL, CUSBOTGVBUSWATCHER_POST_DUP3, - "CUsbOtgVbusWatcher::Post;[iOtgVbus=%d](1 - EVbusLow, 2 - EVbusUnknown) - failed to set the property value", iOtgVbus ); + LOGTEXT2(_L8(">>CUsbOtgVbusWatcher::Post [iOtgVbus=%d](1 - EVbusLow, 2 - EVbusUnknown) - failed to set the property value"), iOtgVbus); } else { - OstTrace1( TRACE_NORMAL, CUSBOTGVBUSWATCHER_POST_DUP4, - "CUsbOtgVbusWatcher::Post;[iOtgVbus=%d](1 - EVbusLow, 2 - EVbusUnknown) - property is set to EFalse", iOtgVbus ); + LOGTEXT2(_L8(">>CUsbOtgVbusWatcher::Post [iOtgVbus=%d](1 - EVbusLow, 2 - EVbusUnknown) - property is set to EFalse"), iOtgVbus); } break; default: - OstTrace1( TRACE_NORMAL, CUSBOTGVBUSWATCHER_POST_DUP5, - "CUsbOtgVbusWatcher::Post;iOtgVbus=%d] is unrecognized, re-request QueueOtgVbusNotification", iOtgVbus ); + LOGTEXT2(_L8(">>CUsbOtgVbusWatcher::RunL [iOtgVbus=%d] is unrecognized, re-request QueueOtgVbusNotification"), iOtgVbus); break; } SetActive(); - OstTraceFunctionExit0( CUSBOTGVBUSWATCHER_POST_EXIT ); } @@ -396,13 +358,12 @@ */ CUsbOtgStateWatcher* CUsbOtgStateWatcher::NewL(RUsbOtgDriver& aLdd) { - OstTraceFunctionEntry0( CUSBOTGSTATEWATCHER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY CUsbOtgStateWatcher* self = new (ELeave) CUsbOtgStateWatcher(aLdd); CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(self); - OstTraceFunctionExit0( CUSBOTGSTATEWATCHER_NEWL_EXIT ); return self; } @@ -416,10 +377,9 @@ */ CUsbOtgStateWatcher::~CUsbOtgStateWatcher() { - OstTraceFunctionEntry0( CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_DES_ENTRY ); + LOG_FUNC Cancel(); RProperty::Delete(KUsbOtgStateProperty); - OstTraceFunctionExit0( CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_DES_EXIT ); } void CUsbOtgStateWatcher::ConstructL() @@ -427,7 +387,7 @@ * Performs 2nd phase construction of the OTG object. */ { - OstTraceFunctionEntry0( CUSBOTGSTATEWATCHER_CONSTRUCTL_ENTRY ); + LOG_FUNC TInt err = RProperty::Define(KUsbOtgStateProperty, RProperty::EInt, KAllowAllPolicy, KNetworkControlPolicy); if ( err != KErrNone && err != KErrAlreadyExists ) @@ -439,7 +399,6 @@ { User::LeaveIfError(err); } - OstTraceFunctionExit0( CUSBOTGSTATEWATCHER_CONSTRUCTL_EXIT ); } /** @@ -453,9 +412,8 @@ CUsbOtgStateWatcher::CUsbOtgStateWatcher(RUsbOtgDriver& aLdd) : CUsbOtgBaseWatcher(aLdd) { - OstTraceFunctionEntry0( CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_CONS_ENTRY ); + LOG_FUNC iOtgState = RUsbOtgDriver::EStateReset; - OstTraceFunctionExit0( CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_CONS_EXIT ); } /** @@ -463,19 +421,14 @@ */ void CUsbOtgStateWatcher::RunL() { - OstTraceFunctionEntry0( CUSBOTGSTATEWATCHER_RUNL_ENTRY ); - OstTrace1( TRACE_NORMAL, CUSBOTGSTATEWATCHER_RUNL, "CUsbOtgStateWatcher::RunL;iStatus.Int()=%d", iStatus.Int() ); + LOG_FUNC + LOGTEXT2(_L8(">>CUsbOtgStateWatcher::RunL [iStatus=%d]"), iStatus.Int()); - TInt err = iStatus.Int(); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBOTGSTATEWATCHER_RUNL_DUP1, "CUsbOtgStateWatcher::RunL;iStatus.Int() with error=%d", err ); - User::Leave(err); - } + LEAVEIFERRORL(iStatus.Int()); Post(); - OstTraceFunctionExit0( CUSBOTGSTATEWATCHER_RUNL_EXIT ); + LOGTEXT(_L8("<>CUsbOtgStateWatcher::RunL [iStatus=%d], iOtgState = %d"), iStatus.Int(), iOtgState); if (RProperty::Set(KUidUsbManCategory,KUsbOtgStateProperty,(TInt)iOtgState) != KErrNone) { - OstTraceExt2( TRACE_NORMAL, CUSBOTGSTATEWATCHER_POST_DUP2, - "CUsbOtgStateWatcher::Post;[iStatus=%d], iOtgState = %d - failed to set the property", iStatus.Int(), iOtgState ); + LOGTEXT3(_L8(">>CUsbOtgStateWatcher::RunL [iStatus=%d], iOtgState = %d - failed to set the property"), iStatus.Int(), iOtgState); } SetActive(); - OstTraceFunctionExit0( CUSBOTGSTATEWATCHER_POST_EXIT ); } //-------------------------- OTG Events watcher class ------------------------- @@ -526,13 +475,12 @@ CUsbOtgEventWatcher* CUsbOtgEventWatcher::NewL(CUsbOtg& aOwner, RUsbOtgDriver& aLdd, RUsbOtgDriver::TOtgEvent& aOtgEvent) { - OstTraceFunctionEntry0( CUSBOTGEVENTWATCHER_NEWL_ENTRY ); + LOG_STATIC_FUNC_ENTRY CUsbOtgEventWatcher* self = new (ELeave) CUsbOtgEventWatcher(aOwner, aLdd, aOtgEvent); CleanupStack::PushL(self); self->ConstructL(); CleanupStack::Pop(self); - OstTraceFunctionExit0( CUSBOTGEVENTWATCHER_NEWL_EXIT ); return self; } @@ -546,9 +494,8 @@ */ CUsbOtgEventWatcher::~CUsbOtgEventWatcher() { - OstTraceFunctionEntry0( CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_DES_ENTRY ); + LOG_FUNC Cancel(); - OstTraceFunctionExit0( CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_DES_EXIT ); } void CUsbOtgEventWatcher::ConstructL() @@ -556,8 +503,7 @@ * Performs 2nd phase construction of the OTG object. */ { - OstTraceFunctionEntry0( CUSBOTGEVENTWATCHER_CONSTRUCTL_ENTRY ); - OstTraceFunctionExit0( CUSBOTGEVENTWATCHER_CONSTRUCTL_EXIT ); + LOG_FUNC } /** @@ -573,8 +519,7 @@ RUsbOtgDriver::TOtgEvent& aOtgEvent) : CUsbOtgBaseWatcher(aLdd), iOwner(aOwner), iOtgEvent(aOtgEvent) { - OstTraceFunctionEntry0( CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_CONS_ENTRY ); - OstTraceFunctionExit0( CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_CONS_EXIT ); + LOG_FUNC } /** @@ -582,17 +527,11 @@ */ void CUsbOtgEventWatcher::RunL() { - OstTraceFunctionEntry0( CUSBOTGEVENTWATCHER_RUNL_ENTRY ); - OstTrace1( TRACE_NORMAL, CUSBOTGEVENTWATCHER_RUNL, "CUsbOtgEventWatcher::RunL;iStatus=%d", iStatus.Int() ); - TInt err = iStatus.Int(); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBOTGEVENTWATCHER_RUNL_DUP3, "CUsbOtgEventWatcher::RunL;iStatus.Int() with error=%d", err ); - User::Leave(err); - } - - OstTrace1( TRACE_NORMAL, CUSBOTGEVENTWATCHER_RUNL_DUP1, - "CUsbOtgEventWatcher::RunL; - Otg Event reported: %d", (TInt)iOtgEvent ); + LOG_FUNC + LOGTEXT2(_L8(">>CUsbOtgEventWatcher::RunL [iStatus=%d]"), iStatus.Int()); + + LEAVEIFERRORL(iStatus.Int()); + LOGTEXT2(_L8("CUsbOtgEventWatcher::RunL() - Otg Event reported: %d"), (TInt)iOtgEvent); if ( ( iOtgEvent == RUsbOtgDriver::EEventHnpDisabled ) ||( iOtgEvent == RUsbOtgDriver::EEventHnpEnabled ) ||( iOtgEvent == RUsbOtgDriver::EEventSrpInitiated ) @@ -602,14 +541,13 @@ ) { iOwner.NotifyOtgEvent(); - OstTrace1( TRACE_NORMAL, CUSBOTGEVENTWATCHER_RUNL_DUP2, - "CUsbOtgEventWatcher::RunL - The owner is notified about Otg Event = %d", (TInt)iOtgEvent ); + LOGTEXT2(_L8("CUsbOtgEventWatcher::RunL() - The owner is notified about Otg Event = %d"), (TInt)iOtgEvent); } Post(); - OstTraceFunctionExit0( CUSBOTGEVENTWATCHER_RUNL_EXIT ); + LOGTEXT(_L8("<CUsbOtgWatcher::~CUsbOtgWatcher (0x%08x)"), (TUint32) this); Cancel(); } @@ -741,9 +666,8 @@ CUsbOtgWatcher::CUsbOtgWatcher(MUsbOtgObserver& aOwner, RUsbOtgDriver& aLdd, TUint& aOtgMessage) : CActive(CActive::EPriorityStandard), iOwner(aOwner), iLdd(aLdd), iOtgMessage(aOtgMessage) { - OstTraceFunctionEntry0( CUSBOTGWATCHER_CUSBOTGWATCHER_CONS_ENTRY ); + LOG_FUNC CActiveScheduler::Add(this); - OstTraceFunctionExit0( CUSBOTGWATCHER_CUSBOTGWATCHER_CONS_EXIT ); } /** @@ -751,19 +675,17 @@ */ void CUsbOtgWatcher::RunL() { - OstTraceFunctionEntry0( CUSBOTGWATCHER_RUNL_ENTRY ); + LOG_FUNC if (iStatus.Int() != KErrNone) { - OstTrace1( TRACE_NORMAL, CUSBOTGWATCHER_RUNL, "CUsbOtgWatcher::RunL;Error=%d", iStatus.Int() ); - OstTraceFunctionExit0( CUSBOTGWATCHER_RUNL_EXIT ); + LOGTEXT2(_L8("CUsbOtgWatcher::RunL() - Error = %d"), iStatus.Int()); return; } - OstTrace1( TRACE_NORMAL, CUSBOTGWATCHER_RUNL_DUP1, "CUsbOtgWatcher::RunL;Otg Message reported: %d", iOtgMessage ); + LOGTEXT2(_L8("CUsbOtgWatcher::RunL() - Otg Message reported: %d"), iOtgMessage); iOwner.NotifyMessage(); Post(); - OstTraceFunctionExit0( CUSBOTGWATCHER_RUNL_EXIT_DUP1 ); } @@ -772,9 +694,8 @@ */ void CUsbOtgWatcher::DoCancel() { - OstTraceFunctionEntry0( CUSBOTGWATCHER_DOCANCEL_ENTRY ); + LOG_FUNC iLdd.CancelOtgMessageRequest(); - OstTraceFunctionExit0( CUSBOTGWATCHER_DOCANCEL_EXIT ); } @@ -783,9 +704,8 @@ */ void CUsbOtgWatcher::Start() { - OstTraceFunctionEntry0( CUSBOTGWATCHER_START_ENTRY ); + LOG_FUNC Post(); - OstTraceFunctionExit0( CUSBOTGWATCHER_START_EXIT ); } /** @@ -793,12 +713,11 @@ */ void CUsbOtgWatcher::Post() { - OstTraceFunctionEntry0( CUSBOTGWATCHER_POST_ENTRY ); + LOG_FUNC - OstTrace0( TRACE_NORMAL, CUSBOTGWATCHER_POST, "CUsbOtgWatcher::Post - About to call QueueOtgMessageRequest" ); + LOGTEXT(_L8("CUsbOtgWatcher::Post() - About to call QueueOtgMessageRequest")); iLdd.QueueOtgMessageRequest((RUsbOtgDriver::TOtgMessage&)iOtgMessage, iStatus); SetActive(); - OstTraceFunctionExit0( CUSBOTGWATCHER_POST_EXIT ); } @@ -828,7 +747,7 @@ * Performs 2nd phase construction of the OTG object. */ { - OstTraceFunctionEntry0( CREQUESTSESSIONWATCHER_CONSTRUCTL_ENTRY ); + LOG_FUNC TInt err = RProperty::Define(KUsbRequestSessionProperty, RProperty::EInt, KAllowAllPolicy, KRequestSessionPolicy); if ( err != KErrNone && err != KErrAlreadyExists ) @@ -843,15 +762,13 @@ User::LeaveIfError(iProp.Attach(KUidUsbManCategory, KUsbRequestSessionProperty)); iProp.Subscribe(iStatus); SetActive(); - OstTraceFunctionExit0( CREQUESTSESSIONWATCHER_CONSTRUCTL_EXIT ); } CRequestSessionWatcher::CRequestSessionWatcher(MUsbOtgObserver& aOwner) : CActive(CActive::EPriorityStandard), iOwner(aOwner) { - OstTraceFunctionEntry0( CREQUESTSESSIONWATCHER_CREQUESTSESSIONWATCHER_CONS_ENTRY ); + LOG_FUNC CActiveScheduler::Add(this); - OstTraceFunctionExit0( CREQUESTSESSIONWATCHER_CREQUESTSESSIONWATCHER_CONS_EXIT ); } /** @@ -859,8 +776,8 @@ */ void CRequestSessionWatcher::RunL() { - OstTraceFunctionEntry0( CREQUESTSESSIONWATCHER_RUNL_ENTRY ); - OstTrace1( TRACE_NORMAL, CREQUESTSESSIONWATCHER_RUNL, "CRequestSessionWatcher::RunL;iStatus=%d", iStatus.Int() ); + LOG_FUNC + LOGTEXT2(_L8(">>CRequestSessionWatcher::RunL [iStatus=%d]"), iStatus.Int()); RDebug::Printf(">>CRequestSessionWatcher::RunL [iStatus=%d]", iStatus.Int()); iProp.Subscribe(iStatus); @@ -872,7 +789,7 @@ iOwner.NotifyMessage(KUsbMessageRequestSession); - OstTraceFunctionExit0( CREQUESTSESSIONWATCHER_RUNL_EXIT ); + LOGTEXT(_L8("<ConstructL(); CleanupStack::Pop(self); - OstTraceFunctionExit0( CUSBOTGCONNECTIONIDLEWATCHER_NEWL_EXIT ); return self; } @@ -919,10 +834,9 @@ */ CUsbOtgConnectionIdleWatcher::~CUsbOtgConnectionIdleWatcher() { - OstTraceFunctionEntry0( CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_DES_ENTRY ); + LOG_FUNC Cancel(); RProperty::Delete(KUsbOtgConnectionIdleProperty); - OstTraceFunctionExit0( CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_DES_EXIT ); } /** @@ -930,7 +844,7 @@ */ void CUsbOtgConnectionIdleWatcher::ConstructL() { - OstTraceFunctionEntry0( CUSBOTGCONNECTIONIDLEWATCHER_CONSTRUCTL_ENTRY ); + LOG_FUNC TInt err = RProperty::Define(KUsbOtgConnectionIdleProperty, RProperty::EInt, KAllowAllPolicy, KNetworkControlPolicy); if ( err != KErrNone && err != KErrAlreadyExists ) @@ -942,7 +856,6 @@ { User::LeaveIfError(err); } - OstTraceFunctionExit0( CUSBOTGCONNECTIONIDLEWATCHER_CONSTRUCTL_EXIT ); } /** @@ -956,8 +869,7 @@ CUsbOtgConnectionIdleWatcher::CUsbOtgConnectionIdleWatcher(RUsbOtgDriver& aLdd) : CUsbOtgBaseWatcher(aLdd) { - OstTraceFunctionEntry0( CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_CONS_ENTRY ); - OstTraceFunctionExit0( CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_CONS_EXIT ); + LOG_FUNC } /** @@ -965,20 +877,14 @@ */ void CUsbOtgConnectionIdleWatcher::RunL() { - OstTraceFunctionEntry0( CUSBOTGCONNECTIONIDLEWATCHER_RUNL_ENTRY ); - OstTrace1( TRACE_NORMAL, CUSBOTGCONNECTIONIDLEWATCHER_RUNL, - "CUsbOtgConnectionIdleWatcher::RunL;iStatus=%d", iStatus.Int() ); + LOG_FUNC + LOGTEXT2(_L8(">>CUsbOtgConnectionIdleWatcher::RunL [iStatus=%d]"), iStatus.Int()); + + LEAVEIFERRORL(iStatus.Int()); - TInt err = iStatus.Int(); - if(err < 0) - { - OstTrace1( TRACE_NORMAL, CUSBOTGCONNECTIONIDLEWATCHER_RUNL_DUP1, "CUsbOtgConnectionIdleWatcher::RunL;iStatus.Int() with error=%d", err ); - User::Leave(err); - } - Post(); - OstTraceFunctionExit0( CUSBOTGCONNECTIONIDLEWATCHER_RUNL_EXIT ); + LOGTEXT(_L8("<>CUsbOtgConnectionIdleWatcher::Post [iConnectionIdle=%d] - property is set to 1"), iConnectionIdle); break; case RUsbOtgDriver::EConnectionBusy: RProperty::Set(KUidUsbManCategory,KUsbOtgConnectionIdleProperty,EFalse); - OstTrace1( TRACE_NORMAL, CUSBOTGCONNECTIONIDLEWATCHER_POST_DUP2, - "CUsbOtgConnectionIdleWatcher::Post;[iConnectionIdle=%d] - property is set to 0", iConnectionIdle ); + LOGTEXT2(_L8(">>CUsbOtgConnectionIdleWatcher::Post [iConnectionIdle=%d] - property is set to 0"), iConnectionIdle); break; default: - OstTrace1( TRACE_NORMAL, CUSBOTGCONNECTIONIDLEWATCHER_POST_DUP3, - "CUsbOtgConnectionIdleWatcher::Post;[iConnectionIdle=%d] is unrecognized, re-request QueueOtgIdPinNotification", iConnectionIdle ); + LOGTEXT2(_L8(">>CUsbOtgConnectionIdleWatcher::Post [iConnectionIdle=%d] is unrecognized, re-request QueueOtgIdPinNotification"), iConnectionIdle); break; } SetActive(); - OstTraceFunctionExit0( CUSBOTGCONNECTIONIDLEWATCHER_POST_EXIT ); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/usbman.rls --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/SRC/usbman.rls Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,33 @@ +/* +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* @file +* This file serves a template for the purpose of localization. The +* content of this file shall be properly filled with unicode pertaining +* to the configured language. +* localized strings, US english +* +*/ + +// personality one +rls_string per_manufacturer1 "localized manufacturer" +rls_string per_product1 "localized product description" +rls_string per_description1 "localized personality description" +rls_string per_detailedDescription1 "localized personality detailed description" + +// personality two +rls_string per_manufacturer2 "localized manufacturer" +rls_string per_product2 "localized product description" +rls_string per_description2 "localized personality description" +rls_string per_detailedDescription2 "localized personality detailed description" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/usbman.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/SRC/usbman.rss Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,112 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Resource file for usbman configuration. +* +*/ + +/** + @file +*/ + +NAME USBM + +#include +#include "usbman.rh" + +#ifdef LANGUAGE_01 // UK English + #include "usbman_01.rls" +#elif LANGUAGE_02 // French + #include "usbman_02.rls" +#elif defined LANGUAGE_03 // German + #include "usbman_03.rls" +#elif defined LANGUAGE_10 // US English + #include "usbman_10.rls" +#else // default to UK English strings in usbman.rsc + #include "usbman_01.rls" +#endif + +RESOURCE BA_RSS_SIGNATURE + { + signature = 3; + } + +RESOURCE usb_configuration usb_config + { + } + + +RESOURCE PERSONALITY_ARRAY device_personalities + { + personalities = + { + PERSONALITY + { + bDeviceClass = 02; + bDeviceSubClass = 0; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x000b; + bcdDevice = 0; + manufacturer = per_manufacturer1; + product = per_product1; + id = 1; + class_uids = "101FBF22"; + description = per_description1; + detailedDescription = per_detailedDescription1; + property = 0x00000000; + }, + PERSONALITY + { + bDeviceClass = 1; + bDeviceSubClass = 2; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x000c; + bcdDevice = 2; + manufacturer= per_manufacturer2; + product = per_product2; + id = 2; + class_uids = "101fbf24"; + description = per_description2; + detailedDescription = per_detailedDescription2; + property = 0x00000000; + }, + PERSONALITY + { + bDeviceClass = 0; + bDeviceSubClass = 0; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x1113; + bcdDevice = 0; + manufacturer = per_manufacturer3; + product = per_product3; + id = 3; + class_uids = "10204bbc"; + description = per_description3; + detailedDescription = per_detailedDescription3; + property = 0x00000000; + } + + // The productId's value of personalities to be implemented in the + // future should be > 0x1115, to avoid conflict with IDs used by + // other drivers or applications + + }; + } + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/usbman_01.rls --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/SRC/usbman_01.rls Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,50 @@ +/* +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* @file +* Resource file for testing and example mass storage application +* localized strings for UK English. A place holder only. The actual +* strings however may not be UK English at all. +* +*/ + +// personality one +rls_string per_manufacturer1 "Symbian" +rls_string per_product1 "Symbian OS ACM" +rls_string per_description1 "Serial Emulation" +rls_string per_detailedDescription1 "Serial Emulation(detail)" + +// personality two +rls_string per_manufacturer2 "Symbian" +rls_string per_product2 "Symbian OS WHCM" +rls_string per_description2 "Obex over USB" +rls_string per_detailedDescription2 "Obex over USB(detail)" + +// personality three +rls_string per_manufacturer3 "Symbian" +rls_string per_product3 "Symbian OS MSCC" +rls_string per_description3 "USB Mass Storage" +rls_string per_detailedDescription3 "USB Mass Storage(detail)" + +// personality four +rls_string per_manufacturer4 "Symbian" +rls_string per_product4 "Symbian OS MTP" +rls_string per_description4 "MTP over USB" +rls_string per_detailedDescription4 "MTP over USB(detail)" + +// personality five +rls_string per_manufacturer5 "Symbian" +rls_string per_product5 "Symbian OS RNDIS" +rls_string per_description5 "IP over USB - RNDIS" +rls_string per_detailedDescription5 "IP over USB - RNDIS(detail)" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/usbman_02.rls --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/SRC/usbman_02.rls Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,54 @@ +/* +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* @file +* This file serves a template for the purpose of localization. The +* content of this file shall be properly filled with unicode pertaining +* to the configured language. +* localized strings for French. A place holder only. you know the +* following strings are not French +* +*/ + + +// personality one +rls_string per_manufacturer1 "Symbian" +rls_string per_product1 "Symbian OS ACM" +rls_string per_description1 "Serial Emulation" +rls_string per_detailedDescription1 "Serial Emulation(detail)" + +// personality two +rls_string per_manufacturer2 "Symbian" +rls_string per_product2 "Symbian OS WHCM" +rls_string per_description2 "Obex over USB" +rls_string per_detailedDescription2 "Obex over USB(detail)" + +// personality three +rls_string per_manufacturer3 "Symbian" +rls_string per_product3 "Symbian OS MSCC" +rls_string per_description3 "USB Mass Storage" +rls_string per_detailedDescription3 "USB Mass Storage(detail)" + +// personality four +rls_string per_manufacturer4 "Symbian" +rls_string per_product4 "Symbian OS MTP" +rls_string per_description4 "MTP over USB" +rls_string per_detailedDescription4 "MTP over USB(detail)" + +// personality five +rls_string per_manufacturer5 "Symbian" +rls_string per_product5 "Symbian OS RNDIS" +rls_string per_description5 "IP over USB - RNDIS" +rls_string per_detailedDescription5 "IP over USB - RNDIS(detail)" + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/usbman_03.rls --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/SRC/usbman_03.rls Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,54 @@ +/* +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* @file +* This file serves a template for the purpose of localization. The +* content of this file shall be properly filled with unicode pertaining +* to the configured language. +* localized strings for German. A place holder only. you know the +* following strings are not German +* +*/ + + +// personality one +// personality one +rls_string per_manufacturer1 "Symbian" +rls_string per_product1 "Symbian OS ACM" +rls_string per_description1 "Serial Emulation" +rls_string per_detailedDescription1 "Serial Emulation(detail)" + +// personality two +rls_string per_manufacturer2 "Symbian" +rls_string per_product2 "Symbian OS WHCM" +rls_string per_description2 "Obex over USB" +rls_string per_detailedDescription2 "Obex over USB(detail)" + +// personality three +rls_string per_manufacturer3 "Symbian" +rls_string per_product3 "Symbian OS MSCC" +rls_string per_description3 "USB Mass Storage" +rls_string per_detailedDescription3 "USB Mass Storage(detail)" + +// personality four +rls_string per_manufacturer4 "Symbian" +rls_string per_product4 "Symbian OS MTP" +rls_string per_description4 "MTP over USB" +rls_string per_detailedDescription4 "MTP over USB(detail)" + +// personality five +rls_string per_manufacturer5 "Symbian" +rls_string per_product5 "Symbian OS RNDIS" +rls_string per_description5 "IP over USB - RNDIS" +rls_string per_detailedDescription5 "IP over USB - RNDIS(detail)" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/usbman_10.rls --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/SRC/usbman_10.rls Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,52 @@ +/* +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* @file +* This file serves a template for the purpose of localization. The +* content of this file shall be properly filled with unicode pertaining +* to the configured language. +* localized strings, US english +* +*/ + + +// personality one +rls_string per_manufacturer1 "Symbian" +rls_string per_product1 "Symbian OS ACM" +rls_string per_description1 "Serial Emulation" +rls_string per_detailedDescription1 "Serial Emulation(detail)" + +// personality two +rls_string per_manufacturer2 "Symbian" +rls_string per_product2 "Symbian OS WHCM" +rls_string per_description2 "Obex over USB" +rls_string per_detailedDescription2 "Obex over USB(detail)" + +// personality three +rls_string per_manufacturer3 "Symbian" +rls_string per_product3 "Symbian OS MSCC" +rls_string per_description3 "USB Mass Storage" +rls_string per_detailedDescription3 "USB Mass Storage(detail)" + +// personality four +rls_string per_manufacturer4 "Symbian" +rls_string per_product4 "Symbian OS MTP" +rls_string per_description4 "MTP over USB" +rls_string per_detailedDescription4 "MTP over USB(detail)" + +// personality five +rls_string per_manufacturer5 "Symbian" +rls_string per_product5 "Symbian OS RNDIS" +rls_string per_description5 "IP over USB - RNDIS" +rls_string per_detailedDescription5 "IP over USB - RNDIS(detail)" diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/usbmancenrepmanager.cpp --- a/usbmgmt/usbmgr/usbman/server/SRC/usbmancenrepmanager.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,541 +0,0 @@ -// 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: -// Implements a utility class which read information from Central Repository - - - -#include -#include -#ifdef SYMBIAN_FEATURE_MANAGER - #include - #include -#endif -#include "usbmanprivatecrkeys.h" -#include "UsbSettings.h" -#include "CPersonality.h" -#include "usbmancenrepmanager.h" -#include "CUsbDevice.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "usbmancenrepmanagerTraces.h" -#endif - - -_LIT(KUsbCenRepPanic, "UsbCenRep"); - -/** - * Panic codes for the USB Central Repository Manager - */ -enum TUsbCenRepPanic - { - ECenRepObserverNotStopped = 0, - ECenRepObserverAlreadySet, - ECenRepConfigError, - ECenRepFeatureManagerError, - }; - -// --------------------------------------------------------------------------- -// Private consctruction -// --------------------------------------------------------------------------- -// -CUsbManCenRepManager::CUsbManCenRepManager(CUsbDevice& aUsbDevice) - : iUsbDevice( aUsbDevice ) - { - OstTraceFunctionEntry0( CUSBMANCENREPMANAGER_CUSBMANCENREPMANAGER_CONS_ENTRY ); - OstTraceFunctionExit0( CUSBMANCENREPMANAGER_CUSBMANCENREPMANAGER_CONS_EXIT ); - } - -// --------------------------------------------------------------------------- -// The first phase construction -// --------------------------------------------------------------------------- -// -CUsbManCenRepManager* CUsbManCenRepManager::NewL(CUsbDevice& aUsbDevice) - { - OstTraceFunctionEntry0( CUSBMANCENREPMANAGER_NEWL_ENTRY ); - CUsbManCenRepManager* self = new (ELeave) CUsbManCenRepManager(aUsbDevice); - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - OstTraceFunctionExit0( CUSBMANCENREPMANAGER_NEWL_EXIT ); - return self; - } - -// --------------------------------------------------------------------------- -// The second phase construction -// --------------------------------------------------------------------------- -// -void CUsbManCenRepManager::ConstructL() - { - OstTraceFunctionEntry0( CUSBMANCENREPMANAGER_CONSTRUCTL_ENTRY ); - // Open the Central Repository - iRepository = CRepository::NewL( KCRUidUSBManagerConfiguration ); - CheckSignatureL(); - OstTraceFunctionExit0( CUSBMANCENREPMANAGER_CONSTRUCTL_EXIT ); - } - -// --------------------------------------------------------------------------- -// Deconstruction -// --------------------------------------------------------------------------- -// -CUsbManCenRepManager::~CUsbManCenRepManager() - { - OstTraceFunctionEntry0( CUSBMANCENREPMANAGER_CUSBMANCENREPMANAGER_DES_ENTRY ); - delete iRepository; - OstTraceFunctionExit0( CUSBMANCENREPMANAGER_CUSBMANCENREPMANAGER_DES_EXIT ); - } - -// --------------------------------------------------------------------------- -// Read specific Key whose value type is String -// --------------------------------------------------------------------------- -// -HBufC* CUsbManCenRepManager::ReadStringKeyLC( TUint32 aKeyId ) - { - OstTraceFunctionEntry0( CUSBMANCENREPMANAGER_READSTRINGKEYLC_ENTRY ); - HBufC* keyBuf = HBufC::NewLC( NCentralRepositoryConstants::KMaxUnicodeStringLength ); - TPtr key = keyBuf->Des(); - - TInt err = iRepository->Get( aKeyId, key ); - LEAVEIFERRORL( err, OstTrace1( TRACE_NORMAL, CUSBMANCENREPMANAGER_READSTRINGKEYLC, "CUsbManCenRepManager::ReadStringKeyLC;Leave err=%d", err );); - OstTraceExt2( TRACE_NORMAL, CUSBMANCENREPMANAGER_READSTRINGKEYLC_DUP1, "CUsbManCenRepManager::ReadStringKeyLC;aKeyId=%x;key=%S", aKeyId, key ); - - OstTraceFunctionExit0( CUSBMANCENREPMANAGER_READSTRINGKEYLC_EXIT ); - return keyBuf; - } - -// --------------------------------------------------------------------------- -// Read specific Key whose value type is TInt -// --------------------------------------------------------------------------- -// -TInt CUsbManCenRepManager::ReadKeyL( TUint32 aKeyId ) - { - OstTraceFunctionEntry0( CUSBMANCENREPMANAGER_READKEYL_ENTRY ); - TInt key; - - TInt err = iRepository->Get( aKeyId, key ); - LEAVEIFERRORL( err, OstTrace1( TRACE_NORMAL, CUSBMANCENREPMANAGER_READKEYL, "CUsbManCenRepManager::ReadKeyL;Leave err=%d", err ); ); - OstTraceExt2( TRACE_NORMAL, CUSBMANCENREPMANAGER_READKEYL_DUP1, "CUsbManCenRepManager::ReadKeyL;LocSets: ReadKeyL id: 0x%x, val: 0x%x", aKeyId, (TInt32)key ); - - OstTraceFunctionExit0( CUSBMANCENREPMANAGER_READKEYL_EXIT ); - return key; - } - -// --------------------------------------------------------------------------- -// Check wheather cenrep's version is supported by cenrep manager -// --------------------------------------------------------------------------- -// -void CUsbManCenRepManager::CheckSignatureL() - { - OstTraceFunctionEntry0( CUSBMANCENREPMANAGER_CHECKSIGNATUREL_ENTRY ); - iSignature = ReadKeyL( KUsbManConfigSign ); - - if ( iSignature < TUsbManagerSupportedVersionMin || - iSignature > TUsbManagerSupportedVersionMax ) - { - OstTrace1( TRACE_NORMAL, CUSBMANCENREPMANAGER_CHECKSIGNATUREL, "CUsbManCenRepManager::CheckSignatureL;Leave reason=%d", KErrNotSupported ); - } - OstTraceFunctionExit0( CUSBMANCENREPMANAGER_CHECKSIGNATUREL_EXIT ); - } - -// --------------------------------------------------------------------------- -// Read Device configuration table -// --------------------------------------------------------------------------- -// -void CUsbManCenRepManager::ReadDeviceConfigurationL(CUsbDevice::TUsbDeviceConfiguration& aDeviceConfig) - { - OstTraceFunctionEntry0( CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_ENTRY ); - //Only support version four right now. - if(TUsbManagerSupportedVersionFour != iSignature) - { - OstTrace1( TRACE_NORMAL, CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL, "CUsbManCenRepManager::ReadDeviceConfigurationL;Panic error=%d", ECenRepConfigError ); - __ASSERT_DEBUG( EFalse, User::Panic( KUsbCenRepPanic, ECenRepConfigError ) ); - } - - - //Shall only have on device configuration setting. - TUint32 devConfigCount = ReadKeyL( KUsbManDeviceCountIndexKey ); - if(devConfigCount != 1) - { - OstTrace1( TRACE_NORMAL, CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP1, "CUsbManCenRepManager::ReadDeviceConfigurationL;Panic error=%d", ECenRepConfigError ); - __ASSERT_DEBUG( EFalse, User::Panic( KUsbCenRepPanic, ECenRepConfigError ) ); - } - - - RArray keyArray; - CleanupClosePushL( keyArray ); - TInt err = iRepository->FindL( KUsbManDevicePartialKey, KUsbManConfigKeyMask, keyArray ); - LEAVEIFERRORL( err, OstTrace1( TRACE_NORMAL, CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP2, "CUsbManCenRepManager::ReadDeviceConfigurationL;Leave err=%d", err ); ); - - TInt keyCount = keyArray.Count(); - OstTrace1( TRACE_NORMAL, CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP3, "CUsbManCenRepManager::ReadDeviceConfigurationL;keyCount of device config = %d", keyCount ); - - //Get each extension type key value and store in iExtList array - for( TInt index = 0; index < keyCount; index++ ) - { - TUint32 key = keyArray[index]; - TUint32 fieldId = ( key & KUsbManConfigFieldMask ); - OstTrace1( TRACE_NORMAL, CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP4, "CUsbManCenRepManager::ReadDeviceConfigurationL;fieldId=%d", fieldId ); - if( fieldId == KUsbManDeviceVendorIdKey ) - { - aDeviceConfig.iVendorId = ReadKeyL( key ); - } - else if( fieldId == KUsbManDeviceManufacturerNameKey ) - { - HBufC* manufacturer = ReadStringKeyLC( key ); - TPtr manufacturerPtr = manufacturer->Des(); - aDeviceConfig.iManufacturerName->Des().Copy( manufacturerPtr ); - CleanupStack::PopAndDestroy( manufacturer ); - } - else if( fieldId == KUsbManDeviceProductNameKey ) - { - HBufC* product = ReadStringKeyLC( key ); - TPtr productName = product->Des(); - aDeviceConfig.iProductName->Des().Copy( productName ); - CleanupStack::PopAndDestroy( product ); - } - else - { - OstTrace1( TRACE_FATAL, CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP5, "CUsbManCenRepManager::ReadDeviceConfigurationL;panic error=%d", ECenRepConfigError ); - User::Panic( KUsbCenRepPanic, ECenRepConfigError ); - } - } - CleanupStack::PopAndDestroy( &keyArray ); - OstTraceFunctionExit0( CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_EXIT ); - } - - -// --------------------------------------------------------------------------- -// Read personality table -// --------------------------------------------------------------------------- -// -void CUsbManCenRepManager::ReadPersonalitiesL(RPointerArray& aPersonalities) - { - OstTraceFunctionEntry0( CUSBMANCENREPMANAGER_READPERSONALITIESL_ENTRY ); - - //Only support version four right now. - if(TUsbManagerSupportedVersionFour != iSignature) - { - OstTrace1( TRACE_FATAL, CUSBMANCENREPMANAGER_READPERSONALITIESL, "CUsbManCenRepManager::ReadPersonalitiesL;ECenRepConfigError=%d", ECenRepConfigError ); - __ASSERT_DEBUG( EFalse, User::Panic( KUsbCenRepPanic, ECenRepConfigError ) ); - } - - // Get the personality count. - TUint32 personalityCount = ReadKeyL( KUsbManDevicePersonalitiesCountIndexKey ); - OstTrace1( TRACE_NORMAL, CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP3, "CUsbManCenRepManager::ReadPersonalitiesL;personalityCount=%d", personalityCount ); - - RArray keyArray; - CleanupClosePushL( keyArray ); - - - // Go through all personalities and store them. - for( TInt personalityIdx = 0; personalityIdx < personalityCount; personalityIdx++ ) - { - CPersonality* personality = CPersonality::NewL(); - CleanupStack::PushL( personality ); - - // Find the keys belonging to the personality - TUint32 devicePersonalitiesKey = KUsbManDevicePersonalitiesPartialKey | ( personalityIdx << KUsbManPersonalitiesOffset ); - TInt err = iRepository->FindL( devicePersonalitiesKey, KUsbManConfigKeyMask, keyArray ); - LEAVEIFERRORL( err, OstTrace1( TRACE_NORMAL, CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP1, "CUsbManCenRepManager::ReadPersonalitiesL;Leave err=%d", err ); ); - - TInt keyCount = keyArray.Count(); - OstTrace1( TRACE_NORMAL, DUP2_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP2, "CUsbManCenRepManager::ReadPersonalitiesL; keyCount of personality = %d", keyCount ); - - // Get each key value of the personality and store it. - for( TInt keyIdx = 0; keyIdx < keyCount; keyIdx++ ) - { - TUint32 key = keyArray[keyIdx]; - TUint32 fieldId = (key & KUsbManConfigFieldMask); - OstTrace1( TRACE_NORMAL, CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP4, "CUsbManCenRepManager::ReadPersonalitiesL;key id of personality=%d", fieldId ); - switch( fieldId ) - { - case KUsbManDevicePersonalitiesDeviceClassKey: - personality->SetDeviceClass(ReadKeyL( key )); - break; - case KUsbManDevicePersonalitiesDeviceSubClassKey: - personality->SetDeviceSubClass(ReadKeyL( key )); - break; - case KUsbManDevicePersonalitiesProtocolKey: - personality->SetDeviceProtocol(ReadKeyL( key )); - break; - case KUsbManDevicePersonalitiesNumConfigKey: - personality->SetNumConfigurations(ReadKeyL( key )); - break; - case KUsbManDevicePersonalitiesProductIdKey: - personality->SetProductId(ReadKeyL( key )); - break; - case KUsbManDevicePersonalitiesBcdDeviceKey: - personality->SetBcdDevice(ReadKeyL( key )); - break; - case KUsbManDevicePersonalitiesFeatureIdKey: - personality->SetFeatureId(ReadKeyL( key )); - break; - case KUsbManDevicePersonalitiesPersonalityIdKey: - personality->SetPersonalityId(ReadKeyL( key )); - ReadConfigurationsForPersonalityL( personality->PersonalityId(), *personality ); - break; - case KUsbManDevicePersonalitiesPropertyKey: - personality->SetProperty(ReadKeyL( key )); - break; - case KUsbManDevicePersonalitiesDescriptionKey: - { - HBufC* description; - description = ReadStringKeyLC( key ); - personality->SetDescription( description ); - CleanupStack::PopAndDestroy( description ); - break; - } - default: - OstTrace1( TRACE_FATAL, CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP5, "CUsbManCenRepManager::ReadPersonalitiesL;Panic error=%d", ECenRepConfigError ); - User::Panic( KUsbCenRepPanic, ECenRepConfigError ); - break; - } - } - - personality->SetVersion(iSignature); - - //The following code is to check whether we support this personality. - if(personality->FeatureId() != KUsbManFeatureNotConfigurable) - { - if(!IsFeatureSupportedL(personality->FeatureId())) - { - CleanupStack::PopAndDestroy(personality); - continue; - } - } - - //The following code is to check whether we support this personality. It will not include: - //1)the personality which contains single class which is not supported - //2)the personality which contains multiple classes which are all not supported - TBool isPersonalitySupport = EFalse; - TInt configurationCount = personality->PersonalityConfigs().Count(); - for(TInt configurationIdx = 0; configurationIdx < configurationCount; ++configurationIdx) - { - const RPointerArray& personalityConfigs = personality->PersonalityConfigs(); - CPersonalityConfigurations *personalityConfigurations = personalityConfigs[configurationIdx]; - TInt classesCount = personalityConfigurations->Classes().Count(); - if(0 != classesCount) - { - isPersonalitySupport = ETrue; - break; - } - } - - if(isPersonalitySupport) - { - OstTrace1( TRACE_NORMAL, CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP6, "CUsbManCenRepManager::ReadPersonalitiesL; Personality ID: %d is supported", personality->PersonalityId() ); - aPersonalities.Append( personality ); - CleanupStack::Pop( personality ); - } - else - { - OstTrace1( TRACE_NORMAL, CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP7, "CUsbManCenRepManager::ReadPersonalitiesL;Personality ID: %d is not supported", personality->PersonalityId() ); - CleanupStack::PopAndDestroy(personality); - } - } - CleanupStack::PopAndDestroy( &keyArray ); - OstTraceFunctionExit0( CUSBMANCENREPMANAGER_READPERSONALITIESL_EXIT ); - } - -// --------------------------------------------------------------------------- -// Read configuration table for specific personality -// --------------------------------------------------------------------------- -// -void CUsbManCenRepManager::ReadConfigurationsForPersonalityL(TInt aPersonalityId, CPersonality& aPersonality) - { - OstTraceFunctionEntry0( CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_ENTRY ); - RArray configArray; - CleanupClosePushL(configArray); - - //Only support version four right now. - if(TUsbManagerSupportedVersionFour != iSignature) - { - OstTrace1( TRACE_FATAL, CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL, "CUsbManCenRepManager::ReadConfigurationsForPersonalityL;Panic error=%d", ECenRepConfigError ); - __ASSERT_DEBUG( EFalse, User::Panic( KUsbCenRepPanic, ECenRepConfigError ) ); - } - - TInt err = iRepository->FindEqL( KUsbManDeviceConfigurationsPartialKey, KUsbManConfigFirstEntryMask, aPersonalityId, configArray ); - LEAVEIFERRORL( err, OstTrace1( TRACE_NORMAL, CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP1, "CUsbManCenRepManager::ReadConfigurationsForPersonalityL;Leave err=%d", err ); ); - - // Get the configuration count. - TUint32 configCount = configArray.Count(); - TUint32 totalConfigCount = ReadKeyL( KUsbManDeviceConfigurationsCountIndexKey ); - - OstTraceExt3( TRACE_NORMAL, CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP2, - "CUsbManCenRepManager::ReadConfigurationsForPersonalityL;aPersonalityId = %d total configCount = %d configArray.Count() = %d", aPersonalityId, totalConfigCount, configArray.Count() ); - - //This is intend to handle one special case that key 0x2ff00's value - // equal our target personality id. - if(totalConfigCount == aPersonalityId) - { - --configCount; - } - - TInt keyCount = 0; - if(TUsbManagerSupportedVersionFour == iSignature) - { - keyCount = KUsbManDeviceConfigurationsKeyCountVersionFour; - } - - // Go through all configurations belonging to this personality 'aPersonalityId' - for ( TInt configIdx = 0; configIdx < configCount; configIdx++ ) - { - CPersonalityConfigurations* config = new ( ELeave ) CPersonalityConfigurations; - CleanupStack::PushL( config ); - TUint32 key = configArray[configIdx]; - - // Get each key value in the configuration and store it - for ( TInt keyIdx = 0; keyIdx < keyCount; keyIdx++ ) - { - TUint32 fieldId = ( (key + keyIdx ) & KUsbManConfigFieldMask ); - TInt keyValue = -1; - OstTraceExt3( TRACE_NORMAL, CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP3, "CUsbManCenRepManager::ReadConfigurationsForPersonalityL;fieldId=%d;configIdx=%d;keyIdx=%d", fieldId, configIdx, keyIdx ); - - if(KUsbManDeviceConfigurationsPersonalityIdKey == fieldId) - { - TRAPD( err, keyValue = ReadKeyL( key + keyIdx ) ); - if( err == KErrNone ) - { - if(keyValue != aPersonalityId) - { - OstTrace1( TRACE_FATAL, CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP4, "CUsbManCenRepManager::ReadConfigurationsForPersonalityL;Panic error=%d", ECenRepConfigError ); - __ASSERT_DEBUG( EFalse, User::Panic( KUsbCenRepPanic, ECenRepConfigError ) ); - } - config->SetPersonalityId( keyValue ); - } - } - else if(KUsbManDeviceConfigurationsIdKey == fieldId) - { - TRAPD( err, keyValue = ReadKeyL( key + keyIdx ) ); - if( err == KErrNone ) - { - config->SetConfigId(keyValue); - } - } - else if(KUsbManDeviceConfigurationsClassUidsKey == fieldId) - { - HBufC* keyValueBuf = ReadStringKeyLC( key + keyIdx ); - TPtr keyPtr = keyValueBuf->Des(); - - RArray classUids; - CleanupClosePushL( classUids ); - - iUsbDevice.ConvertUidsL( keyPtr, classUids ); - TInt uidsCnt = classUids.Count(); - - // Get featureId of each class and store each class. - TInt featureId = KUsbManFeatureNotConfigurable; - CPersonalityConfigurations::TUsbClasses usbClass; - for ( TInt uidIdx = 0; uidIdx < uidsCnt; uidIdx++ ) - { - usbClass.iClassUid = TUid::Uid( classUids[uidIdx] ); - usbClass.iFeatureId = featureId; // By default - if ( IsClassConfigurableL( classUids[uidIdx], featureId ) ) - { - usbClass.iFeatureId = featureId; - if(IsFeatureSupportedL(featureId)) - { - config->AppendClassesL( usbClass ); - } - } - else - { - config->AppendClassesL( usbClass ); - } - } - - CleanupStack::PopAndDestroy( &classUids ); // close uid array - CleanupStack::PopAndDestroy( keyValueBuf ); - } - else - { - OstTrace1( TRACE_FATAL, CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP5, "CUsbManCenRepManager::ReadConfigurationsForPersonalityL;Panic error=%d", ECenRepConfigError ); - User::Panic( KUsbCenRepPanic, ECenRepConfigError ); - } - } - aPersonality.AppendPersonalityConfigsL( config ); - - CleanupStack::Pop( config ); - } - - CleanupStack::PopAndDestroy( &configArray ); - OstTraceFunctionExit0( CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_EXIT ); - } - -// --------------------------------------------------------------------------- -// Check the class belonging to a personality configurable or not. -// --------------------------------------------------------------------------- -// -TBool CUsbManCenRepManager::IsClassConfigurableL(TUint aClassId, TInt& aFeatureId) - { - OstTraceFunctionEntry0( CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL_ENTRY ); - TBool classConfigurable = EFalse; - RArray keyArray; - CleanupClosePushL(keyArray); - - TInt err = iRepository->FindEqL( KUsbManDeviceConfigurableClassesPartialKey, KUsbManConfigFirstEntryMask, (TInt)aClassId, keyArray ); - OstTraceExt2( TRACE_NORMAL, CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL, "CUsbManCenRepManager::IsClassConfigurableL;aClassId=0x%x;err=%d", aClassId, err ); - switch ( err ) - { - case KErrNotFound: - break; - case KErrNone: - { -#ifdef _DEBUG - if(keyArray.Count() != 1) - { - OstTrace1( TRACE_FATAL, DUP1_CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL_DUP1, "CUsbManCenRepManager::IsClassConfigurableL;panic error=%d", ECenRepConfigError ); - User::Panic( KUsbCenRepPanic, ECenRepConfigError ); - } -#endif - // The array size always is 1, so here using 0 as index. - aFeatureId = ReadKeyL( keyArray[0] | KUsbManDeviceConfigurableClassesFeatureIdKey ); - classConfigurable = ETrue; - break; - } - default: - OstTrace1( TRACE_NORMAL, CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL_DUP2, "CUsbManCenRepManager::IsClassConfigurableL;Leave err=%d", err ); - User::Leave( err ); - break; - } - - CleanupStack::PopAndDestroy( &keyArray ); - OstTraceFunctionExit0( CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL_EXIT ); - return classConfigurable; - } - -// --------------------------------------------------------------------------- -// Check the class belonging to a personality support or not. -// --------------------------------------------------------------------------- -// -TBool CUsbManCenRepManager::IsFeatureSupportedL(TInt aFeatureId) - { - OstTraceFunctionEntry0( CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_ENTRY ); -#ifdef SYMBIAN_FEATURE_MANAGER - if(CFeatureDiscovery::IsFeatureSupportedL(TUid::Uid(aFeatureId))) - { - OstTrace1( TRACE_NORMAL, DUP1_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_DUP1, "CUsbManCenRepManager::IsFeatureSupportedL;featureId = 0x%x supported", aFeatureId ); - OstTraceFunctionExit0( CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_EXIT ); - return ETrue; - } - else - { - OstTrace1( TRACE_NORMAL, CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_DUP2, "CUsbManCenRepManager::IsFeatureSupportedL;featureId = 0x%x not supported", aFeatureId ); - OstTraceFunctionExit0( CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_EXIT_DUP1 ); - return EFalse; - } -#else - OstTrace1( TRACE_FATAL, CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL, "CUsbManCenRepManager::IsFeatureSupportedL;panic error code=%d", ECenRepFeatureManagerError ); - User::Panic( KUsbCenRepPanic, ECenRepFeatureManagerError ) -#endif - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/usbmanlubbockobex.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/SRC/usbmanlubbockobex.rss Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,108 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Resource file for usbman configuration. +* +*/ + +/** + @file +*/ + +NAME USBM + +#include +#include "usbman.rh" +#ifdef LANGUAGE_01 // UK English + #include "usbman_01.rls" +#elif LANGUAGE_02 // French + #include "usbman_02.rls" +#elif defined LANGUAGE_03 // German + #include "usbman_03.rls" +#elif defined LANGUAGE_10 // US English + #include "usbman_10.rls" +#else // default to UK English strings in usbman.rsc + #include "usbman_01.rls" +#endif + +RESOURCE BA_RSS_SIGNATURE + { + signature = 3; + } + +RESOURCE usb_configuration usb_config + { + } + + +RESOURCE PERSONALITY_ARRAY device_personalities + { + personalities = + { + PERSONALITY + { + bDeviceClass = 02; + bDeviceSubClass = 0; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x000b; + bcdDevice = 0; + manufacturer = per_manufacturer1; + product = per_product1; + id = 1; + class_uids = "101FBF22"; + description = per_description1; + detailedDescription = per_detailedDescription1; + property = 0x00000000; + }, + PERSONALITY + { + bDeviceClass = 1; + bDeviceSubClass = 2; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x000d; // instead of 0x000c + bcdDevice = 2; + manufacturer= per_manufacturer2; + product = per_product2; + id = 2; + class_uids = "101fbf24"; + description = per_description2; + detailedDescription = per_detailedDescription2; + property = 0x00000000; + }, + PERSONALITY + { + bDeviceClass = 0; + bDeviceSubClass = 0; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x1111; + bcdDevice = 0; + manufacturer = per_manufacturer3; + product = per_product3; + id = 3; + class_uids = "10204bbc"; + description = per_description3; + detailedDescription = per_detailedDescription3; + property = 0x00000000; + } + + }; + } + + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/usbmanmtp.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/SRC/usbmanmtp.rss Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,129 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Resource file for usbman configuration. +* +*/ + +/** + @file +*/ + +NAME USBM + +#include +#include "usbman.rh" + +#ifdef LANGUAGE_01 // UK English + #include "usbman_01.rls" +#elif LANGUAGE_02 // French + #include "usbman_02.rls" +#elif defined LANGUAGE_03 // German + #include "usbman_03.rls" +#elif defined LANGUAGE_10 // US English + #include "usbman_10.rls" +#else // default to UK English strings in usbman.rsc + #include "usbman_01.rls" +#endif + +RESOURCE BA_RSS_SIGNATURE + { + signature = 3; + } + +RESOURCE usb_configuration usb_config + { + } + + +RESOURCE PERSONALITY_ARRAY device_personalities + { + personalities = + { + PERSONALITY + { + bDeviceClass = 02; + bDeviceSubClass = 0; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x000b; + bcdDevice = 0; + manufacturer = per_manufacturer1; + product = per_product1; + id = 1; + class_uids = "101FBF22"; + description = per_description1; + detailedDescription = per_detailedDescription1; + property = 0x00000000; + }, + PERSONALITY + { + bDeviceClass = 1; + bDeviceSubClass = 2; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x000c; + bcdDevice = 2; + manufacturer= per_manufacturer2; + product = per_product2; + id = 2; + class_uids = "101fbf24"; + description = per_description2; + detailedDescription = per_detailedDescription2; + property = 0x00000000; + }, + PERSONALITY + { + bDeviceClass = 0; + bDeviceSubClass = 0; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x1113; + bcdDevice = 0; + manufacturer = per_manufacturer3; + product = per_product3; + id = 3; + class_uids = "10204bbc"; + description = per_description3; + detailedDescription = per_detailedDescription3; + property = 0x00000000; + }, + PERSONALITY + { + bDeviceClass = 0x00; + bDeviceSubClass = 0; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x1114; + bcdDevice = 0x0100; + manufacturer = per_manufacturer4; + product = per_product4; + id = 4; + class_uids = "102827B3"; + description = per_description4; + detailedDescription = per_detailedDescription4; + property = 0x00000000; + } + + // The productId's value of personalities to be implemented in the + // future should be > 0x1115, to avoid conflict with IDs used by + // other drivers or applications + + }; + } + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/usbmanmtprndis.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/SRC/usbmanmtprndis.rss Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,146 @@ +/* +* Copyright (c) 2008-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: +* Resource file for usbman configuration. +* +*/ + +/** +@file + */ + +NAME USBM + +#include +#include "usbman.rh" + +#ifdef LANGUAGE_01 // UK English + #include "usbman_01.rls" +#elif LANGUAGE_02 // French + #include "usbman_02.rls" +#elif defined LANGUAGE_03 // German + #include "usbman_03.rls" +#elif defined LANGUAGE_10 // US English + #include "usbman_10.rls" +#else // default to UK English strings in usbman.rsc + #include "usbman_01.rls" +#endif + +RESOURCE BA_RSS_SIGNATURE + { + signature = 3; + } + +RESOURCE usb_configuration usb_config + { + } + + +RESOURCE PERSONALITY_ARRAY device_personalities + { + personalities = + { + PERSONALITY + { + bDeviceClass = 02; + bDeviceSubClass = 0; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x000b; + bcdDevice = 0; + manufacturer = per_manufacturer1; + product = per_product1; + id = 1; + class_uids = "101FBF22"; + description = per_description1; + detailedDescription = per_detailedDescription1; + property = 0x00000000; + }, + PERSONALITY + { + bDeviceClass = 1; + bDeviceSubClass = 2; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x000c; + bcdDevice = 2; + manufacturer= per_manufacturer2; + product = per_product2; + id = 2; + class_uids = "101fbf24"; + description = per_description2; + detailedDescription = per_detailedDescription2; + property = 0x00000000; + }, + PERSONALITY + { + bDeviceClass = 0; + bDeviceSubClass = 0; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x1113; + bcdDevice = 0; + manufacturer = per_manufacturer3; + product = per_product3; + id = 3; + class_uids = "10204bbc"; + description = per_description3; + detailedDescription = per_detailedDescription3; + property = 0x00000000; + }, + PERSONALITY + { + bDeviceClass = 0x00; + bDeviceSubClass = 0; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x1114; + bcdDevice = 0x0100; + manufacturer = per_manufacturer4; + product = per_product4; + id = 4; + class_uids = "102827B3"; + description = per_description4; + detailedDescription = per_detailedDescription4; + property = 0x00000000; + }, + PERSONALITY + { + bDeviceClass = 0x02; + bDeviceSubClass = 0x00; + protocol = 0x00; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x1115; + bcdDevice = 0x0100; + manufacturer = per_manufacturer5; + product = per_product5; + id = 5; + class_uids = "20013d2f"; + description = per_description5; + detailedDescription = per_detailedDescription5; + property = 0x00000000; + } + + // The productId's value of personalities to be implemented in the + // future should be > 0x1115, to avoid conflict with IDs used by + // other drivers or applications + + }; + } + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/SRC/usbmanrndis.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/SRC/usbmanrndis.rss Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,129 @@ +/* +* Copyright (c) 2008-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: +* Resource file for usbman configuration. +* +*/ + +/** +@file + */ + +NAME USBM + +#include +#include "usbman.rh" + +#ifdef LANGUAGE_01 // UK English + #include "usbman_01.rls" +#elif LANGUAGE_02 // French + #include "usbman_02.rls" +#elif defined LANGUAGE_03 // German + #include "usbman_03.rls" +#elif defined LANGUAGE_10 // US English + #include "usbman_10.rls" +#else // default to UK English strings in usbman.rsc + #include "usbman_01.rls" +#endif + +RESOURCE BA_RSS_SIGNATURE + { + signature = 3; + } + +RESOURCE usb_configuration usb_config + { + } + + +RESOURCE PERSONALITY_ARRAY device_personalities + { + personalities = + { + PERSONALITY + { + bDeviceClass = 02; + bDeviceSubClass = 0; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x000b; + bcdDevice = 0; + manufacturer = per_manufacturer1; + product = per_product1; + id = 1; + class_uids = "101FBF22"; + description = per_description1; + detailedDescription = per_detailedDescription1; + property = 0x00000000; + }, + PERSONALITY + { + bDeviceClass = 1; + bDeviceSubClass = 2; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x000c; + bcdDevice = 2; + manufacturer= per_manufacturer2; + product = per_product2; + id = 2; + class_uids = "101fbf24"; + description = per_description2; + detailedDescription = per_detailedDescription2; + property = 0x00000000; + }, + PERSONALITY + { + bDeviceClass = 0; + bDeviceSubClass = 0; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x1113; + bcdDevice = 0; + manufacturer = per_manufacturer3; + product = per_product3; + id = 3; + class_uids = "10204bbc"; + description = per_description3; + detailedDescription = per_detailedDescription3; + property = 0x00000000; + }, + PERSONALITY + { + bDeviceClass = 0x02; + bDeviceSubClass = 0x00; + protocol = 0x00; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x1115; + bcdDevice = 0x0100; + manufacturer = per_manufacturer5; + product = per_product5; + id = 4; + class_uids = "20013d2f"; + description = per_description5; + detailedDescription = per_detailedDescription5; + property = 0x00000000; + } + + // The productId's value of personalities to be implemented in the + // future should be > 0x1115, to avoid conflict with IDs used by + // other drivers or applications + + }; + } + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/conf/usbmanager_101fe1db.crml Binary file usbmgmt/usbmgr/usbman/server/conf/usbmanager_101fe1db.crml has changed diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/data/demo_mcci_usbman.rh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/data/demo_mcci_usbman.rh Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,27 @@ +/* +* Copyright (c) 2004-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: +* Resource header for usbman configuration. +* this file can be renamed usbman.rh and pasted to ser-comms\usb\usbman\inc +* +*/ + +STRUCT usb_configuration + { + WORD vendorId = 0x040E; //values matching demo mcci inf files on PC + WORD productId = 0xF10F; // use those to have the symbian device using mcci drivers + WORD bcdDevice = 0x0000; + LTEXT manufacturer = "Symbian Ltd."; + LTEXT product = "Symbian OS"; + } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/group/BLD.INF --- a/usbmgmt/usbmgr/usbman/server/group/BLD.INF Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/group/BLD.INF Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2003-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" @@ -21,13 +21,13 @@ PRJ_EXPORTS ../public/Usb_std.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb_std.h) ../public/MUsbDeviceNotify.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(musbdevicenotify.h) +../public/usbman.rh /epoc32/include/usbman.rh ../public/usberrors.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usberrors.h) ../public/UsbClassUids.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usbclassuids.h) ../public/usbshared.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/usbshared.h) ../public/usbotgdefs.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usbotgdefs.h) ../public/usbhostdefs.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usbhostdefs.h) -./backup_registration.xml /epoc32/data/z/private/101fe1db/backup_registration.xml -../conf/usbmanager_101fe1db.crml OS_LAYER_EXPORTS_CRML(usbmanager_101fe1db.crml) +./backup_registration.xml /epoc32/data/z/private/101fe1db/backup_registration.xml PRJ_TESTEXPORTS diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/group/usbsvrbase.mmp --- a/usbmgmt/usbmgr/usbman/server/group/usbsvrbase.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/group/usbsvrbase.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-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" @@ -37,14 +37,43 @@ source CUsbDeviceStateWatcher.cpp source UsbUtils.cpp source CPersonality.cpp -source usbmancenrepmanager.cpp userinclude ../INC userinclude ../public -userinclude ../../../host/fdf/production/client/public -userinclude ../traces +userinclude ../../../host/fdf/production/client/public OS_LAYER_SYSTEMINCLUDE_SYMBIAN +lang sc 01 02 03 10 // UK English, French, German, US English + +START RESOURCE usbman.rss +TARGETPATH /private/101fe1db +HEADER +END + +#ifdef SYMBIAN_USB_RNDIS +START RESOURCE usbmanrndis.rss +TARGETPATH /private/101fe1db +HEADER +END +#endif + +START RESOURCE usbmanmtp.rss +TARGETPATH /private/101fe1db +HEADER +END + +#ifdef SYMBIAN_USB_RNDIS +START RESOURCE usbmanmtprndis.rss +TARGETPATH /private/101fe1db +HEADER +END +#endif + +START RESOURCE usbmanlubbockobex.rss +TARGETPATH /private/101fe1db +HEADER +END + library euser.lib library usbclasscontroller.lib library ecom.lib @@ -52,8 +81,5 @@ library bafl.lib library usbmanextensionplugin.lib library sysutil.lib -library centralrepository.lib -#ifdef SYMBIAN_FEATURE_MANAGER -library featdiscovery.lib -#endif +#include diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/public/rusb.h --- a/usbmgmt/usbmgr/usbman/server/public/rusb.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgr/usbman/server/public/rusb.h Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2003-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" @@ -35,11 +35,7 @@ const TInt KUsbMaxSupportedPersonalities = 64; // Max number of supported personalities -#ifndef __OVER_DUMMYUSBDI__ _LIT(KUsbServerName, "!usbman"); -#else -_LIT(KUsbServerName, "!usbman_over_dummyusbdi"); -#endif enum TUsbMessages { @@ -85,6 +81,7 @@ EUsbGetOtgDescriptor, EUsbDbgAlloc, EUsbRequestSession, + EUsbGetDetailedDescription, EUsbGetPersonalityProperty }; diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/public/usbman.rh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgr/usbman/server/public/usbman.rh Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,133 @@ +/* +* Copyright (c) 2003-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: +* Resource header for usbman configuration. +* +*/ + +/** + @file + @publishedPartner + @released +*/ + +STRUCT usb_configuration + { + /** + vendorId is the 16-bit number that is assigned by USB-ORG. + */ + WORD vendorId = 0x0e22; + + /** + productId is a 16-bit number that is assigned by the licensee to + uniquely identify this particular type of device. + */ + WORD productId = 0x000b; + + /** + bcdDevice may be optionally used during enumeration, this depends on + the licensee's policy regarding device upgrades (new versions of a + device may require to use new host driver files) + */ + WORD bcdDevice = 0x0000; + + /** + manufacturerString is displayed on the Windows screen during first + enumeration of the device, and should identify the same company that + owns the USB vendorId given above + */ + LTEXT manufacturer = "Symbian Ltd."; + + /** + productString is displayed on the Windows screen during first + enumeration of the device, and should identify the same device that is + implied by the productId given above + */ + LTEXT product = "Symbian OS"; + } + +STRUCT PERSONALITY + { + /** Class code (assigned by the USB-IF). If this field is set to zero, each interface within + a configuration specifies its own class information and the various interfaces operate independently. + + If this field is set to a value between 1 and FEH, the device supports different class + specifications on different interfaces and the interfaces may not operate independently. + This value identifies the class definition used for the aggregate interfaces. + + If this field is set to FFH, the device class is vendor-specific. */ + BYTE bDeviceClass; + + /** Subclass code (assigned by the USB-IF). These codes are qualified by the value of the bDeviceClass field. + If the bDeviceClass field is set to zero, this field must also be set to zero. + If the bDeviceClass field is not set to FFH, all values are reserved for assignment by the USB-IF. */ + BYTE bDeviceSubClass; + + /** Protocol code (assigned by the USB-IF). These codes are qualified by the value of the bDeviceClass and the + bDeviceSubClass fields. If a device supports class-specific protocols on a device basis as opposed to an + interface basis, this code identifies the protocols that the device uses as defined by the specification of the device class. + If this field is set to zero, the device does not use class-specific protocols on a device basis. However, it may use + classspecific protocols on an interface basis. + If this field is set to FFH, the device uses a vendor-specific protocol on a device basis. */ + BYTE protocol; + + /** Number of possible configurations */ + BYTE numConfigurations; + + /** vendorId is the 16-bit number that is assigned by USB-ORG. */ + WORD vendorId; + + /** productId is a 16-bit number that is assigned by the licensee to + uniquely identify this particular personality as type of device . */ + WORD productId; + + /** bcdDevice may be optionally used during enumeration, this depends on + the licensee's policy regarding device upgrades */ + WORD bcdDevice; + + /** manufacturerString is displayed on the Windows screen during first + enumeration of the device, and should identify the same company that + owns the USB vendorId given above */ + LTEXT manufacturer; + + /** productString is displayed on the Windows screen during first + enumeration of the device, and should identify the same device that is + implied by the productId given above */ + LTEXT product; + + /** personality id - UID which identified this personality */ + WORD id; + + /** list of Class Controllers UIDs associated with this personality. + UIDs shoud be provided as list of hexadecimal numbers separated by space or comma. + Note Do not provide leading 0x or any trailing characters! + Example "1Abc3422, 12345678 FE43bc33" + Incorrect example "1abc3422, 0x12345678," */ + LTEXT class_uids; + + /** free text description of this personality. */ + LTEXT description; + + /** free text detailed description of this personality. */ + LTEXT detailedDescription; + + /** personality property - the property of this personality */ + LONG property; + + } + +STRUCT PERSONALITY_ARRAY + { + STRUCT personalities[]; // STRUCT PERSONALITY + } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgr/usbman/server/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgr/usbman/server/traces/fixed_id.definitions --- a/usbmgmt/usbmgr/usbman/server/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1117 +0,0 @@ -#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=0x2 -[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP1=0x3 -[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP10=0xc -[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP11=0xd -[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP12=0xe -[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP2=0x4 -[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP3=0x5 -[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP4=0x6 -[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP5=0x7 -[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP6=0x8 -[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP7=0x9 -[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP8=0xa -[TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_PRINTDESCRIPTOR_DUP9=0xb -[TRACE]TRACE_FATAL[0x81]_CPERSONALITY_CLASSSUPPORTED=0x75 -[TRACE]TRACE_FATAL[0x81]_CPERSONALITY_SUPPORTEDCLASSES=0x74 -[TRACE]TRACE_FATAL[0x81]_CUSBDEVICE_CONVERTUIDSL=0x52 -[TRACE]TRACE_FATAL[0x81]_CUSBDEVICE_DOCANCEL=0x2 -[TRACE]TRACE_FATAL[0x81]_CUSBDEVICE_RUNERROR_DUP1=0x51 -[TRACE]TRACE_FATAL[0x81]_CUSBDEVICE_RUNL_DUP5=0x1 -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_CONSTRUCTL=0x76 -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL=0x89 -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP1=0x8a -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP2=0x8b -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP3=0x8c -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP4=0x8d -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP2=0x77 -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP4=0x78 -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP6=0x79 -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP8=0x7a -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP7=0x7b -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNERROR=0x8e -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP1=0x84 -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP2=0x85 -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP3=0x86 -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP4=0x87 -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP5=0x88 -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_START=0x7c -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_START_DUP1=0x7d -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_START_DUP2=0x7e -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_START_DUP3=0x7f -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP=0x80 -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP1=0x81 -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP2=0x82 -[TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP3=0x83 -[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL=0x6c -[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL=0x70 -[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP4=0x71 -[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP5=0x72 -[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP5=0x6d -[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READPERSONALITIESL=0x6e -[TRACE]TRACE_FATAL[0x81]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP5=0x6f -[TRACE]TRACE_FATAL[0x81]_CUSBSERVER_DECREMENTSESSIONCOUNT_DUP1=0x1d -[TRACE]TRACE_FATAL[0x81]_CUSBSERVER_INCREMENTSESSIONCOUNT_DUP1=0x1c -[TRACE]TRACE_FATAL[0x81]_CUSBSERVER_LAUNCHSHUTDOWNTIMERIFNOSESSIONS=0x1e -[TRACE]TRACE_FATAL[0x81]_DUP1_CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL_DUP1=0x73 -[TRACE]TRACE_FLOW[0x8A]_CINIFILE_CINIFILE_CONS_ENTRY=0x629 -[TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_ENTRY=0x62a -[TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_EXIT=0x62b -[TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_TDESC_ENTRY=0x62c -[TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_TDESC_EXIT=0x62d -[TRACE]TRACE_FLOW[0x8A]_CPERSONALITYCONFIGURATIONS_CPERSONALITYCONFIGURATIONS_DES_ENTRY=0x623 -[TRACE]TRACE_FLOW[0x8A]_CPERSONALITYCONFIGURATIONS_CPERSONALITYCONFIGURATIONS_DES_EXIT=0x624 -[TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CONSTRUCTL_ENTRY=0x3 -[TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CONSTRUCTL_EXIT=0x4 -[TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CPERSONALITY_DES_ENTRY=0x454 -[TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CPERSONALITY_DES_EXIT=0x455 -[TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_NEWL_ENTRY=0x1 -[TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_NEWL_EXIT=0x2 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_DOCANCEL_ENTRY=0x105 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_DOCANCEL_EXIT=0x106 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_NEWL_ENTRY=0x103 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_NEWL_EXIT=0x104 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_START_ENTRY=0x107 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICESTATEWATCHER_START_EXIT=0x108 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ADDCLASSCONTROLLERL_ENTRY=0x12b -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ADDCLASSCONTROLLERL_EXIT=0x12c -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_BUSENUMERATIONCOMPLETED_ENTRY=0x139 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_BUSENUMERATIONCOMPLETED_EXIT=0x13a -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CONSTRUCTL_ENTRY=0x124 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CONSTRUCTL_EXIT=0x125 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CONVERTUIDSL_ENTRY=0x625 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CONVERTUIDSL_EXIT=0x626 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CREATECLASSCONTROLLERSL_ENTRY=0x21a -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CURRENTPERSONALITYID_ENTRY=0x207 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CUSBDEVICE_DES_ENTRY=0x366 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CUSBDEVICE_DES_EXIT=0x367 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DEREGISTEROBSERVER_ENTRY=0x12f -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DEREGISTEROBSERVER_EXIT=0x130 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DOCANCEL_ENTRY=0x143 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DOCANCEL_EXIT=0x144 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_ENTRY=0x129 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_EXIT=0x12a -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_GETPERSONALITY_ENTRY=0x209 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_GETPERSONALITY_EXIT=0x20a -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_GETPERSONALITY_EXIT_DUP1=0x368 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL=0x127 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_ENTRY=0x126 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_EXIT=0x128 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_LOADFALLBACKCLASSCONTROLLERSL_ENTRY=0x212 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_LOADFALLBACKCLASSCONTROLLERSL_EXIT=0x213 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_NEWL_ENTRY=0x120 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_NEWL_EXIT=0x121 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_PERSONALITIES_ENTRY=0x208 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_POWERUPANDCONNECT_ENTRY=0x13f -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_POWERUPANDCONNECT_EXIT=0x140 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_READPERSONALITIESL_ENTRY=0x627 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_READPERSONALITIESL_EXIT=0x628 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_REGISTEROBSERVERL_ENTRY=0x12d -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_REGISTEROBSERVERL_EXIT=0x12e -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_RUNL_ENTRY=0x141 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_RUNL_EXIT=0x142 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SELECTCLASSCONTROLLERSL_ENTRY=0x218 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SELECTCLASSCONTROLLERSL_EXIT=0x219 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETCURRENTPERSONALITYL_ENTRY=0x20c -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETCURRENTPERSONALITYL_EXIT=0x20d -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEFAULTPERSONALITYL_ENTRY=0x210 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEFAULTPERSONALITYL_EXIT=0x211 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEVICEDESCRIPTORL_ENTRY=0x1fc -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEVICEDESCRIPTORL_EXIT=0x1fd -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEVICESTATE_ENTRY=0x137 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEVICESTATE_EXIT=0x138 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETSERVICESTATE_ENTRY=0x135 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETSERVICESTATE_EXIT=0x136 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_ENTRY=0x203 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTCURRENTCLASSCONTROLLER_ENTRY=0x13b -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTCURRENTCLASSCONTROLLER_EXIT=0x13c -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTL_ENTRY=0x131 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTL_EXIT=0x132 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOPCURRENTCLASSCONTROLLER_ENTRY=0x13d -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOPCURRENTCLASSCONTROLLER_EXIT=0x13e -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOP_ENTRY=0x133 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOP_EXIT=0x134 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_TRYSTARTL_ENTRY=0x205 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_TRYSTARTL_EXIT=0x206 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_UCCNERROR_ENTRY=0x146 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_UCCNERROR_EXIT=0x147 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_UCCNGETCLASSCONTROLLERITERATORL_ENTRY=0x145 -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_VALIDATEPERSONALITIESL_ENTRY=0x20e -[TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_VALIDATEPERSONALITIESL_EXIT=0x20f -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_ENTRY=0x63e -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_EXIT=0x63f -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_DOGETCONFIGL_ENTRY=0x634 -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_DOGETCONFIGL_EXIT=0x635 -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_ENTRY=0x632 -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_EXIT=0x633 -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_ENTRY=0x636 -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_EXIT=0x637 -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_ENTRY=0x62e -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_EXIT=0x62f -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_TINT_ENTRY=0x630 -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_TINT_EXIT=0x631 -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_RUNL_ENTRY=0x63c -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_RUNL_EXIT=0x63d -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_START_ENTRY=0x638 -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_START_EXIT=0x639 -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_STOP_ENTRY=0x63a -[TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_STOP_EXIT=0x63b -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CHECKSIGNATUREL_ENTRY=0x616 -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CHECKSIGNATUREL_EXIT=0x617 -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CONSTRUCTL_ENTRY=0x60e -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CONSTRUCTL_EXIT=0x60f -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CUSBMANCENREPMANAGER_CONS_ENTRY=0x60a -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CUSBMANCENREPMANAGER_CONS_EXIT=0x60b -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CUSBMANCENREPMANAGER_DES_ENTRY=0x610 -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_CUSBMANCENREPMANAGER_DES_EXIT=0x611 -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL_ENTRY=0x61e -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL_EXIT=0x61f -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_ENTRY=0x620 -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_EXIT=0x621 -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_EXIT_DUP1=0x622 -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_NEWL_ENTRY=0x60c -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_NEWL_EXIT=0x60d -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_ENTRY=0x61c -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_EXIT=0x61d -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_ENTRY=0x618 -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_EXIT=0x619 -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READKEYL_ENTRY=0x614 -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READKEYL_EXIT=0x615 -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READPERSONALITIESL_ENTRY=0x61a -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READPERSONALITIESL_EXIT=0x61b -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READSTRINGKEYLC_ENTRY=0x612 -[TRACE]TRACE_FLOW[0x8A]_CUSBMANCENREPMANAGER_READSTRINGKEYLC_EXIT=0x613 -[TRACE]TRACE_FLOW[0x8A]_CUSBSCHEDULER_NEWL_ENTRY=0x2f -[TRACE]TRACE_FLOW[0x8A]_CUSBSCHEDULER_NEWL_EXIT=0x30 -[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_CUSBSERVER_DES_ENTRY=0x468 -[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_CUSBSERVER_DES_EXIT=0x469 -[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_INCREMENTSESSIONCOUNT_ENTRY=0x1f8 -[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_INCREMENTSESSIONCOUNT_EXIT=0x1f9 -[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_LAUNCHSHUTDOWNTIMERIFNOSESSIONS_ENTRY=0x1fa -[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_LAUNCHSHUTDOWNTIMERIFNOSESSIONS_EXIT=0x1fb -[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_NEWLC_ENTRY=0x15c -[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_NEWLC_EXIT=0x15d -[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_NEWSESSIONL_ENTRY=0x1f6 -[TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_NEWSESSIONL_EXIT=0x1f7 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSCLEARERROR_ENTRY=0x27f -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSCLEARERROR_EXIT=0x280 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSDROP_ENTRY=0x281 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSDROP_EXIT=0x282 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSREQUEST_ENTRY=0x27b -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSREQUEST_EXIT=0x27c -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSRESPONDSRP_ENTRY=0x27d -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_BUSRESPONDSRP_EXIT=0x27e -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CANCELINTEREST_ENTRY=0x25e -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CANCELINTEREST_EXIT=0x25f -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CANCELINTEREST_EXIT_DUP1=0x260 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CLASSSUPPORTED_ENTRY=0x276 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CLASSSUPPORTED_EXIT=0x277 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CLASSSUPPORTED_EXIT_DUP1=0x278 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CREATEL_ENTRY=0x223 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CREATEL_EXIT=0x224 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CUSBSESSION_CONS_ENTRY=0x21d -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CUSBSESSION_CONS_EXIT=0x21e -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CUSBSESSION_DES_ENTRY=0x21f -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_CUSBSESSION_DES_EXIT=0x220 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERDEVICEOBSERVER_ENTRY=0x249 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERDEVICEOBSERVER_EXIT=0x24a -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERDEVICEOBSERVER_EXIT_DUP1=0x24b -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERHOSTOBSERVER_ENTRY=0x294 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERHOSTOBSERVER_EXIT=0x295 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERHOSTOBSERVER_EXIT_DUP1=0x296 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERMSGOBSERVER_ENTRY=0x29a -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERMSGOBSERVER_EXIT=0x29b -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERMSGOBSERVER_EXIT_DUP1=0x29c -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERSERVICEOBSERVER_ENTRY=0x24c -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERSERVICEOBSERVER_EXIT=0x24d -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DEREGISTERSERVICEOBSERVER_EXIT_DUP1=0x24e -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DISABLEFUNCTIONDRIVERLOADING_ENTRY=0x285 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DISABLEFUNCTIONDRIVERLOADING_EXIT=0x286 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DISPATCHMESSAGEL_ENTRY=0x22f -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_DISPATCHMESSAGEL_EXIT=0x230 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_ENABLEFUNCTIONDRIVERLOADING_ENTRY=0x283 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_ENABLEFUNCTIONDRIVERLOADING_EXIT=0x284 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETCURRENTDEVICESTATE_ENTRY=0x248 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETCURRENTPERSONALITYID_ENTRY=0x261 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETCURRENTPERSONALITYID_EXIT=0x262 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETCURRENTSERVICESTATE_ENTRY=0x247 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETDESCRIPTION_ENTRY=0x26b -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETDESCRIPTION_EXIT=0x26c -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETDESCRIPTION_EXIT_DUP1=0x26d -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_ENTRY=0x28b -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_EXIT=0x28c -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETOTGDESCRIPTOR_ENTRY=0x28f -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETOTGDESCRIPTOR_EXIT=0x290 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYIDS_ENTRY=0x268 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYIDS_EXIT=0x269 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYIDS_EXIT_DUP1=0x26a -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYPROPERTY_ENTRY=0x272 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYPROPERTY_EXIT=0x273 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYPROPERTY_EXIT_DUP2=0x275 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPRODUCTSTRINGDESCRIPTOR_ENTRY=0x28d -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPRODUCTSTRINGDESCRIPTOR_EXIT=0x28e -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDCLASSES_ENTRY=0x263 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDCLASSES_EXIT=0x264 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDCLASSES_EXIT_DUP1=0x265 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDCLASSES_EXIT_DUP2=0x266 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDCLASSES_EXIT_DUP3=0x267 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDLANGUAGESL_ENTRY=0x289 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDLANGUAGESL_EXIT=0x28a -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDLANGUAGES_ENTRY=0x287 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETSUPPORTEDLANGUAGES_EXIT=0x288 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_ENTRY=0x227 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_EXIT=0x228 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_ENTRY=0x229 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_EXIT=0x22a -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_NEWL_ENTRY=0x21c -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERDEVICEOBSERVER_ENTRY=0x241 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERDEVICEOBSERVER_EXIT=0x242 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERDEVICEOBSERVER_EXIT_DUP1=0x243 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERHOSTOBSERVER_ENTRY=0x291 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERHOSTOBSERVER_EXIT=0x292 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERHOSTOBSERVER_EXIT_DUP1=0x293 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERMSGOBSERVER_ENTRY=0x297 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERMSGOBSERVER_EXIT=0x298 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERMSGOBSERVER_EXIT_DUP1=0x299 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERSERVICEOBSERVER_ENTRY=0x244 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERSERVICEOBSERVER_EXIT=0x245 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_REGISTERSERVICEOBSERVER_EXIT_DUP1=0x246 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_SERVICEL_ENTRY=0x221 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_SERVICEL_EXIT=0x222 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_SETCTLSESSIONMODE_ENTRY=0x279 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_SETCTLSESSIONMODE_EXIT=0x27a -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTCANCEL_ENTRY=0x23a -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTCANCEL_EXIT=0x23b -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTCANCEL_EXIT_DUP1=0x23c -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTDEVICEL_ENTRY=0x231 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTDEVICEL_EXIT=0x232 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTDEVICEL_EXIT_DUP1=0x233 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STARTDEVICEL_EXIT_DUP2=0x234 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPCANCEL_ENTRY=0x23d -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPCANCEL_EXIT=0x23e -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPCANCEL_EXIT_DUP1=0x23f -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPCANCEL_EXIT_DUP2=0x240 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPDEVICEL_ENTRY=0x235 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPDEVICEL_EXIT=0x236 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPDEVICEL_EXIT_DUP1=0x237 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPDEVICEL_EXIT_DUP2=0x238 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_STOPDEVICEL_EXIT_DUP3=0x239 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_ENTRY=0x24f -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT=0x250 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP1=0x251 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP2=0x252 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP3=0x253 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP4=0x254 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP5=0x255 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTARTDEVICEL_EXIT_DUP6=0x256 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_ENTRY=0x257 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT=0x258 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP1=0x259 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP2=0x25a -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP3=0x25b -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP4=0x25c -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_TRYSTOPDEVICEL_EXIT_DUP5=0x25d -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBDEVICEDEQUEUEEVENT_ENTRY=0x22d -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBDEVICEDEQUEUEEVENT_EXIT=0x22e -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBDEVICESTATECHANGE_ENTRY=0x22b -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBDEVICESTATECHANGE_EXIT=0x22c -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBHOSTEVENTDEQUEUE_ENTRY=0x2a3 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBHOSTEVENTDEQUEUE_EXIT=0x2a4 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBHOSTEVENT_ENTRY=0x29f -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBHOSTEVENT_EXIT=0x2a0 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBMSGDEQUEUE_ENTRY=0x2a1 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBMSGDEQUEUE_EXIT=0x2a2 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBOTGHOSTMESSAGE_ENTRY=0x29d -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBOTGHOSTMESSAGE_EXIT=0x29e -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBSERVICESTATECHANGE_ENTRY=0x225 -[TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_USBSERVICESTATECHANGE_EXIT=0x226 -[TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL=0x3e1 -[TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP1=0x3e2 -[TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP2=0x3e3 -[TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP3=0x3e4 -[TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP4=0x3e5 -[TRACE]TRACE_NORMAL[0x86]_CINIFILE_PANIC=0x3e0 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICESTATEWATCHER_CUSBDEVICESTATEWATCHER=0x89 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICESTATEWATCHER_RUNL=0x8a -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICESTATEWATCHER_RUNL_DUP1=0x8b -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICESTATEWATCHER_RUNL_DUP2=0x8c -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICESTATEWATCHER_RUNL_DUP3=0x8d -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_ADDCLASSCONTROLLERL=0x178 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_BUSENUMERATIONCOMPLETED=0xcb -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_BUSENUMERATIONFAILED=0xcc -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_BUSENUMERATIONFAILED_DUP1=0xcd -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL=0xbf -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP1=0x16f -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP10=0x171 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP11=0x172 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP12=0x174 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP13=0x175 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP2=0xc1 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP3=0xc2 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP4=0xc3 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP5=0xc4 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP6=0xc5 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP7=0xc6 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP8=0xc7 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP9=0x170 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONVERTUIDSL_DUP1=0x1a1 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CREATECLASSCONTROLLERSL=0x16e -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CREATECLASSCONTROLLERSL_DUP1=0x1a5 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE=0xbb -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE_DUP1=0xbc -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE_DUP2=0xbd -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE_DUP3=0xbe -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL=0x138 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_DUP1=0x139 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_DUP2=0x176 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_DUP3=0x192 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_DUP1=0xc8 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_MUEPODOREGISTERSTATEOBSERVERL=0x150 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_POWERUPANDCONNECT=0xce -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_POWERUPANDCONNECT_DUP1=0xcf -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_POWERUPANDCONNECT_DUP2=0xd0 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_REGISTEROBSERVERL=0x179 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNERROR=0xd5 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL=0xd1 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP1=0xd2 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP2=0xd3 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP3=0xd4 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP4=0x193 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETCURRENTPERSONALITYL=0x154 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETDEVICEDESCRIPTORL=0x146 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETDEVICEDESCRIPTORL_DUP1=0x147 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETDEVICEDESCRIPTORL_DUP2=0x148 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETDEVICEDESCRIPTORL_DUP3=0x3c6 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETDEVICESTATE=0xca -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETSERVICESTATE=0xc9 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL=0x151 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP1=0x157 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP2=0x158 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP3=0x19e -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP4=0x1a0 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP5=0x19f -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP6=0x19d -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_DUP7=0x19c -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_STARTL=0x17a -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_TRYSTARTL=0x18a -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_VALIDATEPERSONALITIESL=0x155 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_VALIDATEPERSONALITIESL_DUP1=0x3c7 -[TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_VALIDATEPERSONALITIESL_DUP2=0x3c8 -[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR=0x3e6 -[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP1=0x3e7 -[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP3=0x3e8 -[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP5=0x3e9 -[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP7=0x3ea -[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG=0x3eb -[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP1=0x3ec -[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP2=0x3ed -[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP3=0x3ee -[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP4=0x3ef -[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP5=0x3f0 -[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP6=0x3f1 -[TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_RUNL=0x3f2 -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_CHECKSIGNATUREL=0x3cc -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL=0x3dc -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_ISCLASSCONFIGURABLEL_DUP2=0x3dd -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_DUP2=0x3df -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP1=0x3d9 -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP2=0x3da -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READCONFIGURATIONSFORPERSONALITYL_DUP3=0x3db -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL=0x3cd -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP1=0x3d1 -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP2=0x3d2 -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP3=0x3cf -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READDEVICECONFIGURATIONL_DUP4=0x3d0 -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READKEYL=0x3c9 -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READKEYL_DUP1=0x3cb -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP1=0x3d4 -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP3=0x3d3 -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP4=0x3d6 -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP6=0x3d7 -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP7=0x3d8 -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READSTRINGKEYLC=0x3c4 -[TRACE]TRACE_NORMAL[0x86]_CUSBMANCENREPMANAGER_READSTRINGKEYLC_DUP1=0x3c5 -[TRACE]TRACE_NORMAL[0x86]_CUSBSCHEDULER_ERROR=0x1d -[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CONSTRUCTL=0x12c -[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CONSTRUCTL_DUP1=0x12d -[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CONSTRUCTL_DUP2=0x12e -[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CONSTRUCTL_DUP3=0x12f -[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER=0x124 -[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP1=0x125 -[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP2=0x126 -[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP3=0x127 -[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP4=0x128 -[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP5=0x129 -[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP6=0x12a -[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_CUSBSERVER_DUP7=0x12b -[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_DECREMENTSESSIONCOUNT=0x135 -[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_ERROR=0x132 -[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_INCREMENTSESSIONCOUNT=0x133 -[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_NEWSESSIONL=0x130 -[TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_NEWSESSIONL_DUP1=0x131 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CREATEL=0x1c8 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CREATEL_DUP1=0x1c9 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CREATEL_DUP2=0x1ca -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CUSBSESSION=0x1d2 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CUSBSESSION_DUP1=0x1d5 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CUSBSESSION_DUP2=0x1d6 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_CUSBSESSION_DUP3=0x1d7 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DEREGISTERHOSTOBSERVER=0x1ad -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DEREGISTERHOSTOBSERVER_DUP1=0x1ae -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL=0x1c2 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP1=0x1d0 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP2=0x1dd -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP3=0x1de -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP4=0x1df -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP5=0x1e0 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_DISPATCHMESSAGEL_DUP6=0x1e1 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETCURRENTDEVICESTATE=0x1ba -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETCURRENTPERSONALITYID=0x1bb -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETCURRENTSERVICESTATE=0x1b9 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR=0x1a9 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_DUP1=0x1db -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETOTGDESCRIPTOR=0x1ab -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETPERSONALITYIDS=0x1b8 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETPRODUCTSTRINGDESCRIPTOR=0x1aa -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETPRODUCTSTRINGDESCRIPTOR_DUP1=0x1dc -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDCLASSES=0x1bc -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDCLASSES_DUP1=0x1be -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDCLASSES_DUP2=0x1d9 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDLANGUAGESL=0x1a6 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDLANGUAGESL_DUP1=0x1a7 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETSUPPORTEDLANGUAGESL_DUP2=0x1a8 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING=0x1cb -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_DUP1=0x1cc -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_DUP2=0x1cd -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTARTING_DUP3=0x1ce -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING=0x1c4 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_DUP1=0x1c5 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_DUP2=0x1c6 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_HANDLESERVICESTATECHANGEWHILESTOPPING_DUP3=0x1c7 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_REGISTERDEVICEOBSERVER=0x1c3 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_REGISTERHOSTOBSERVER=0x1ac -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_REGISTERMSGOBSERVER=0x1af -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_SETCTLSESSIONMODE=0x1b7 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBDEVICEDEQUEUEEVENT=0x1c1 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBDEVICESTATECHANGE=0x1bf -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBDEVICESTATECHANGE_DUP1=0x1c0 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBHOSTEVENT=0x1b1 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBHOSTEVENTDEQUEUE=0x1b5 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBHOSTEVENTDEQUEUE_DUP1=0x1b6 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBHOSTEVENT_DUP1=0x1b2 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBHOSTEVENT_DUP2=0x1b3 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBMSGDEQUEUE=0x1b4 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBOTGHOSTMESSAGE=0x1b0 -[TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_USBSERVICESTATECHANGE=0x1d8 -[TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBMANCENREPMANAGER_ISFEATURESUPPORTEDL_DUP1=0x3de -[TRACE]TRACE_NORMAL[0x86]_DUP2_CUSBMANCENREPMANAGER_READPERSONALITIESL_DUP2=0x3d5 -[TRACE]TRACE_NORMAL[0x86]_USBSVR_RUNSERVERL=0x2ed -[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP10=0x12 -[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP11=0x13 -[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP12=0x14 -[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP13=0x15 -[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP14=0x16 -[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP15=0x17 -[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP16=0x18 -[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP17=0x19 -[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP18=0x1a -[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP19=0x1b -[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP20=0x1c -[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP21=0x1d -[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP7=0xf -[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP8=0x10 -[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_CUSBDEVICE_READPERSONALITIESL_DUP9=0x11 -[[OBSOLETE]][TRACE]TRACE_DUMP[0x89]_DUP1_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR=0x1 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_CONSTRUCTL=0x53 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL=0x66 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP1=0x67 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP2=0x68 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP3=0x69 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP4=0x6a -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP2=0x54 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP4=0x55 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP6=0x56 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP8=0x57 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP7=0x58 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNERROR=0x6b -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP1=0x61 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP2=0x62 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP3=0x63 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP4=0x64 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP5=0x65 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_START=0x59 -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_START_DUP1=0x5a -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_START_DUP2=0x5b -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_START_DUP3=0x5c -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP=0x5d -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP1=0x5e -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP2=0x5f -[[OBSOLETE]][TRACE]TRACE_FATAL[0x81]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP3=0x60 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_CONS_ENTRY=0x598 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_CONS_EXIT=0x599 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_DES_ENTRY=0x59a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_DES_EXIT=0x59b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_ENTRY=0x3e2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_ENTRY_DUP1=0x3e4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_EXIT=0x3e3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_CACTIVEUSBHOSTEVENTWATCHER_EXIT_DUP1=0x3e5 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_DOCANCEL_ENTRY=0x59e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_DOCANCEL_EXIT=0x59f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_POST_ENTRY=0x59c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTEVENTWATCHER_POST_EXIT=0x59d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_CONS_ENTRY=0x5a2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_CONS_EXIT=0x5a3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_DES_ENTRY=0x5a0 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_DES_EXIT=0x5a1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_ENTRY=0x3ea -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_ENTRY_DUP1=0x3ec -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_EXIT=0x3eb -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_CACTIVEUSBHOSTMESSAGEWATCHER_EXIT_DUP1=0x3ed -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_DOCANCEL_ENTRY=0x5a6 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_DOCANCEL_EXIT=0x5a7 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_POST_ENTRY=0x5a4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTMESSAGEWATCHER_POST_EXIT=0x5a5 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_CONS_ENTRY=0x592 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_CONS_EXIT=0x593 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_DES_ENTRY=0x594 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_DES_EXIT=0x595 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_ENTRY=0x2ee -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_ENTRY_DUP1=0x2f0 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_EXIT=0x2ef -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_CACTIVEUSBHOSTWATCHER_EXIT_DUP1=0x2f1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_RUNL_ENTRY=0x596 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CACTIVEUSBHOSTWATCHER_RUNL_EXIT=0x597 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_CINIFILE_CONS_ENTRY=0x549 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_CINIFILE_ENTRY=0x2a5 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_ENTRY=0x3a6 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_ENTRY_DUP1=0x3a8 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_ENTRY_DUP1_EXIT=0x2a9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_EXIT=0x3a7 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_EXIT_DUP1=0x3a9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_ENTRY=0x54a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_EXIT=0x54b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_TDESC_ENTRY=0x54c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CINIFILE_NEWL_TDESC_TDESC_EXIT=0x54d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CPERSONALITY_ENTRY=0x5 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CPERSONALITY_CPERSONALITY_EXIT=0x6 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_CONSTRUCTL_ENTRY=0x5f4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_CONSTRUCTL_EXIT=0x5f5 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_CREQUESTSESSIONWATCHER_CONS_ENTRY=0x5f6 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_CREQUESTSESSIONWATCHER_CONS_EXIT=0x5f7 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_CREQUESTSESSIONWATCHER_ENTRY=0x352 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_CREQUESTSESSIONWATCHER_EXIT=0x353 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_DOCANCEL_ENTRY=0x5fa -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_DOCANCEL_EXIT=0x5fb -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_RUNL_ENTRY=0x5f8 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CREQUESTSESSIONWATCHER_RUNL_EXIT=0x5f9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ADDCLASSCONTROLLERL_ENTRY=0x84 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ADDCLASSCONTROLLERL_EXIT=0x85 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_BUSENUMERATIONCOMPLETED_ENTRY=0x92 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_BUSENUMERATIONCOMPLETED_EXIT=0x93 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CONSTRUCTL_ENTRY=0x7d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CONSTRUCTL_EXIT=0x7e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CUSBDEVICE_ENTRY=0x122 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_CUSBDEVICE_EXIT=0x123 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DEREGISTEROBSERVER_ENTRY=0x88 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DEREGISTEROBSERVER_EXIT=0x89 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DOCANCEL_ENTRY=0x9c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_DOCANCEL_EXIT=0x9d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_ENTRY=0x82 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL_EXIT=0x83 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL=0x80 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_ENTRY=0x7f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_EXIT=0x81 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_NEWL_ENTRY=0x79 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_NEWL_EXIT=0x7a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_POWERUPANDCONNECT_ENTRY=0x98 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_POWERUPANDCONNECT_EXIT=0x99 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_READPERSONALITIESL_ENTRY=0x214 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_READPERSONALITIESL_EXIT=0x215 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_READPERSONALITIESL_EXIT_DUP1=0x369 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_READPERSONALITIESL_EXIT_DUP2=0x21b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_REGISTEROBSERVERL_ENTRY=0x86 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_REGISTEROBSERVERL_EXIT=0x87 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_RESOURCEFILENAMEL_ENTRY=0x201 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_RESOURCEFILENAMEL_EXIT=0x202 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_RUNL_ENTRY=0x9a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_RUNL_EXIT=0x9b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEVICESTATE_ENTRY=0x90 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETDEVICESTATE_EXIT=0x91 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETSERVICESTATE_ENTRY=0x8e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETSERVICESTATE_EXIT=0x8f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL_EXIT=0x204 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETUSBDEVICESETTINGSL_ENTRY=0x1fe -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETUSBDEVICESETTINGSL_EXIT=0x1ff -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_SETUSBDEVICESETTINGSL_EXIT_DUP1=0x200 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTCURRENTCLASSCONTROLLER_ENTRY=0x94 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTCURRENTCLASSCONTROLLER_EXIT=0x95 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTL_ENTRY=0x8a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STARTL_EXIT=0x8b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOPCURRENTCLASSCONTROLLER_ENTRY=0x96 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOPCURRENTCLASSCONTROLLER_EXIT=0x97 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOP_ENTRY=0x8c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_STOP_EXIT=0x8d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_UCCNERROR_ENTRY=0x9f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_UCCNERROR_EXIT=0xa0 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDEVICE_UCCNGETCLASSCONTROLLERITERATORL_ENTRY=0x9e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_ENTRY=0x55e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_EXIT=0x55f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_DOGETCONFIGL_ENTRY=0x554 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_DOGETCONFIGL_EXIT=0x555 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_ENTRY=0x552 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_EXIT=0x553 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_ENTRY=0x556 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_EXIT=0x557 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_ENTRY=0x456 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_ENTRY_DUP1=0x458 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_EXIT=0x457 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_EXIT_DUP1=0x459 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_ENTRY=0x54e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_EXIT=0x54f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_TINT_ENTRY=0x550 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_NEWL_MUSBCLASSCONTROLLERNOTIFY_TUINT_TINT_EXIT=0x551 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_RUNL_ENTRY=0x55c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_RUNL_EXIT=0x55d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_START_ENTRY=0x558 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_START_EXIT=0x559 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_STOP_ENTRY=0x55a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBDUMMYCLASSCONTROLLER_STOP_EXIT=0x55b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CONSTRUCTL_ENTRY=0x578 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CONSTRUCTL_EXIT=0x579 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CUSBHOST_CONS_ENTRY=0x576 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CUSBHOST_CONS_EXIT=0x577 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CUSBHOST_DES_ENTRY=0x574 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CUSBHOST_DES_EXIT=0x575 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CUSBHOST_ENTRY=0x2d0 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CUSBHOST_ENTRY_DUP1=0x2d2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CUSBHOST_EXIT=0x2d1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_CUSBHOST_EXIT_DUP1=0x2d3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_DEREGISTEROBSERVER_ENTRY=0x580 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_DEREGISTEROBSERVER_EXIT=0x581 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_DISABLEDRIVERLOADING_ENTRY=0x590 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_DISABLEDRIVERLOADING_EXIT=0x591 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_ENABLEDRIVERLOADING_ENTRY=0x58e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_ENABLEDRIVERLOADING_EXIT=0x58f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_GETMANUFACTURERSTRINGDESCRIPTOR_ENTRY=0x584 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_GETMANUFACTURERSTRINGDESCRIPTOR_EXIT=0x585 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_GETOTGDESCRIPTOR_ENTRY=0x588 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_GETOTGDESCRIPTOR_EXIT=0x589 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_GETPRODUCTSTRINGDESCRIPTOR_ENTRY=0x586 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_GETPRODUCTSTRINGDESCRIPTOR_EXIT=0x587 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_GETSUPPORTEDLANGUAGES_ENTRY=0x582 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_GETSUPPORTEDLANGUAGES_EXIT=0x583 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_NOTIFYHOSTEVENT_ENTRY=0x58a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_NOTIFYHOSTEVENT_EXIT=0x58b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_REGISTEROBSERVERL_ENTRY=0x57e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_REGISTEROBSERVERL_EXIT=0x57f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_STARTL_ENTRY=0x57a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_STARTL_EXIT=0x57b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_STOP_ENTRY=0x57c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_STOP_EXIT=0x57d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_UPDATENUMOFOBSERVERS_ENTRY=0x58c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBHOST_UPDATENUMOFOBSERVERS_EXIT=0x58d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_CONS_ENTRY=0x5a8 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_CONS_EXIT=0x5a9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_DES_ENTRY=0x5aa -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_DES_EXIT=0x5ab -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_ENTRY=0x304 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_ENTRY_DUP1=0x306 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_EXIT=0x305 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_CUSBOTGBASEWATCHER_EXIT_DUP1=0x307 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_START_ENTRY=0x5ac -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGBASEWATCHER_START_EXIT=0x5ad -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CONSTRUCTL_ENTRY=0x600 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CONSTRUCTL_EXIT=0x601 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_CONS_ENTRY=0x602 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_CONS_EXIT=0x603 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_DES_ENTRY=0x5fe -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_DES_EXIT=0x5ff -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_ENTRY=0x35a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_ENTRY_DUP1=0x35e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_EXIT=0x35b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_CUSBOTGCONNECTIONIDLEWATCHER_EXIT_DUP1=0x35f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_DOCANCEL_ENTRY=0x606 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_DOCANCEL_EXIT=0x607 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_NEWL_ENTRY=0x5fc -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_NEWL_EXIT=0x5fd -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_POST_ENTRY=0x608 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_POST_EXIT=0x609 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_RUNL_ENTRY=0x604 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGCONNECTIONIDLEWATCHER_RUNL_EXIT=0x605 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CONSTRUCTL_ENTRY=0x5dc -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CONSTRUCTL_EXIT=0x5dd -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_CONS_ENTRY=0x5de -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_CONS_EXIT=0x5df -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_DES_ENTRY=0x5da -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_DES_EXIT=0x5db -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_ENTRY=0x336 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_ENTRY_DUP1=0x33a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_EXIT=0x337 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_CUSBOTGEVENTWATCHER_EXIT_DUP1=0x33b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_DOCANCEL_ENTRY=0x5e2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_DOCANCEL_EXIT=0x5e3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_NEWL_ENTRY=0x5d8 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_NEWL_EXIT=0x5d9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_POST_ENTRY=0x5e4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_POST_EXIT=0x5e5 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_RUNL_ENTRY=0x5e0 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGEVENTWATCHER_RUNL_EXIT=0x5e1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CONSTRUCTL_ENTRY=0x5b2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CONSTRUCTL_EXIT=0x5b3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_CONS_ENTRY=0x5b4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_CONS_EXIT=0x5b5 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_DES_ENTRY=0x5b0 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_DES_EXIT=0x5b1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_ENTRY=0x30c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_ENTRY_DUP1=0x310 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_EXIT=0x30d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_CUSBOTGIDPINWATCHER_EXIT_DUP1=0x311 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_DOCANCEL_ENTRY=0x5b8 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_DOCANCEL_EXIT=0x5b9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_NEWL_ENTRY=0x5ae -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_NEWL_EXIT=0x5af -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_POST_ENTRY=0x5ba -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_POST_EXIT=0x5bb -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_RUNL_ENTRY=0x5b6 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGIDPINWATCHER_RUNL_EXIT=0x5b7 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CONSTRUCTL_ENTRY=0x5ce -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CONSTRUCTL_EXIT=0x5cf -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_CONS_ENTRY=0x5d0 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_CONS_EXIT=0x5d1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_DES_ENTRY=0x5cc -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_DES_EXIT=0x5cd -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_ENTRY=0x328 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_EXIT=0x329 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_DOCANCEL_ENTRY=0x5d4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_DOCANCEL_EXIT=0x5d5 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_NEWL_ENTRY=0x5ca -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_NEWL_EXIT=0x5cb -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_POST_ENTRY=0x5d6 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_POST_EXIT=0x5d7 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_RUNL_ENTRY=0x5d2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGSTATEWATCHER_RUNL_EXIT=0x5d3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CONSTRUCTL_ENTRY=0x5c0 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CONSTRUCTL_EXIT=0x5c1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_CONS_ENTRY=0x5c2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_CONS_EXIT=0x5c3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_DES_ENTRY=0x5be -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_DES_EXIT=0x5bf -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_ENTRY=0x31a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_ENTRY_DUP1=0x31e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_EXIT=0x31b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_CUSBOTGVBUSWATCHER_EXIT_DUP1=0x31f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_DOCANCEL_ENTRY=0x5c6 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_DOCANCEL_EXIT=0x5c7 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_NEWL_ENTRY=0x5bc -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_NEWL_EXIT=0x5bd -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_POST_ENTRY=0x5c8 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_POST_EXIT=0x5c9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_RUNL_ENTRY=0x5c4 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGVBUSWATCHER_RUNL_EXIT=0x5c5 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_CUSBOTGWATCHER_CONS_ENTRY=0x5e9 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_CUSBOTGWATCHER_CONS_EXIT=0x5ea -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_CUSBOTGWATCHER_DES_ENTRY=0x5e8 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_CUSBOTGWATCHER_ENTRY=0x344 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_CUSBOTGWATCHER_ENTRY_DUP1=0x345 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_CUSBOTGWATCHER_EXIT_DUP1=0x346 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_DOCANCEL_ENTRY=0x5ee -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_DOCANCEL_EXIT=0x5ef -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_NEWL_ENTRY=0x5e6 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_NEWL_EXIT=0x5e7 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_POST_ENTRY=0x5f2 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_POST_EXIT=0x5f3 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_RUNL_ENTRY=0x5eb -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_RUNL_EXIT=0x5ec -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_RUNL_EXIT_DUP1=0x5ed -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_START_ENTRY=0x5f0 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTGWATCHER_START_EXIT=0x5f1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_BUSCLEARERROR_ENTRY=0x572 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_BUSDROP_ENTRY=0x573 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_BUSREQUEST_ENTRY=0x570 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_BUSRESPONDSRP_ENTRY=0x571 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CONSTRUCTL_ENTRY=0x566 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CONSTRUCTL_EXIT=0x567 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_CONS_ENTRY=0x564 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_CONS_EXIT=0x565 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_DES_ENTRY=0x562 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_DES_EXIT=0x563 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_ENTRY=0x2be -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_ENTRY_DUP1=0x2c0 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_ENTRY_DUP1_EXIT=0x2c1 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_CUSBOTG_EXIT=0x2bf -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_DEREGISTEROBSERVER_ENTRY=0x56a -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_DEREGISTEROBSERVER_EXIT=0x56b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_NEWL_ENTRY=0x560 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_NEWL_EXIT=0x561 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_REGISTEROBSERVERL_ENTRY=0x568 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_REGISTEROBSERVERL_EXIT=0x569 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_STARTL_ENTRY=0x56c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_STARTL_EXIT=0x56d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_STOP_ENTRY=0x56e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBOTG_STOP_EXIT=0x56f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_CUSBSERVER_ENTRY=0x15e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBSERVER_CUSBSERVER_EXIT=0x15f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETDETAILEDDESCRIPTION_ENTRY=0x26e -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETDETAILEDDESCRIPTION_EXIT=0x26f -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETDETAILEDDESCRIPTION_EXIT_DUP1=0x270 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETDETAILEDDESCRIPTION_EXIT_DUP2=0x271 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_CUSBSESSION_GETPERSONALITYPROPERTY_EXIT_DUP1=0x274 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CUSBDEVICE_GETPERSONALITY_EXIT=0x20b -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CUSBDEVICE_READPERSONALITIESL_EXIT=0x216 -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_ENTRY=0x32c -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP1_CUSBOTGSTATEWATCHER_CUSBOTGSTATEWATCHER_EXIT=0x32d -[[OBSOLETE]][TRACE]TRACE_FLOW[0x8A]_DUP2_CUSBDEVICE_READPERSONALITIESL_EXIT=0x217 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL=0x361 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP1=0x362 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP2=0x363 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP3=0x364 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CINIFILE_CONSTRUCTL_DUP4=0x365 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CINIFILE_PANIC=0x360 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CREQUESTSESSIONWATCHER_RUNL=0x3bd -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CREQUESTSESSIONWATCHER_RUNL_DUP1=0x34c -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_BUSENUMERATIONCOMPLETED=0x52 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_BUSENUMERATIONFAILED=0x53 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_BUSENUMERATIONFAILED_DUP1=0x54 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL=0x46 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP1=0xc0 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP2=0x48 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP3=0x49 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP4=0x4a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP5=0x4b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP6=0x4c -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP7=0x4d -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONSTRUCTL_DUP8=0x4e -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CONVERTUIDSL=0x18b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE=0x42 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE_DUP1=0x43 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE_DUP2=0x44 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_CUSBDEVICE_DUP3=0x45 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_DOCANCEL=0x17d -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_INSTANTIATEEXTENSIONPLUGINSL_DUP1=0x4f -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_POWERUPANDCONNECT=0x55 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_POWERUPANDCONNECT_DUP1=0x56 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_POWERUPANDCONNECT_DUP2=0x57 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR=0xd6 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP1=0x13a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP10=0x143 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP11=0x144 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP12=0x145 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP2=0x13b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP3=0x13c -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP4=0x13d -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP5=0x13e -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP6=0x13f -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP7=0x140 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP8=0x141 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_PRINTDESCRIPTOR_DUP9=0x142 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL=0x156 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP1=0x159 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP10=0x162 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP11=0x163 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP12=0x164 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP13=0x165 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP14=0x166 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP15=0x167 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP16=0x168 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP17=0x169 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP18=0x16a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP19=0x16b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP2=0x15a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP20=0x16c -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP21=0x16d -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP22=0x1a2 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP23=0x1a3 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP24=0x1a4 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP3=0x15b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP4=0x15c -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP5=0x15d -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP6=0x15e -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP7=0x15f -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP8=0x160 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_READPERSONALITIESL_DUP9=0x161 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RESOURCEFILENAMEL=0x191 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNERROR=0x5c -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNERROR_DUP1=0x195 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL=0x58 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP1=0x59 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP2=0x5a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP3=0x5b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_RUNL_DUP5=0x194 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETDEVICESTATE=0x51 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETSERVICESTATE=0x50 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL=0x149 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP1=0x14a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP10=0x19b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP11=0x196 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP12=0x19a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP2=0x14b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP3=0x14c -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP4=0x14d -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP5=0x14e -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP6=0x14f -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP7=0x197 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP8=0x198 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDEVICE_SETUSBDEVICESETTINGSL_DUP9=0x199 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_CONSTRUCTL=0x260 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL=0x280 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP1=0x281 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP2=0x282 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP3=0x283 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_DOCANCEL_DUP4=0x284 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR=0x366 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP1=0x367 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP2=0x263 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP3=0x368 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP4=0x265 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP5=0x369 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP6=0x267 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP7=0x36a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR_DUP8=0x269 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG=0x36b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP1=0x36c -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP2=0x36d -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP3=0x36e -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP4=0x36f -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP5=0x370 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP6=0x371 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_GETCONFIG_DUP7=0x26a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_RUNERROR=0x285 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_RUNL=0x372 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP1=0x27b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP2=0x27c -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP3=0x27d -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP4=0x27e -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_RUNL_DUP5=0x27f -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_START=0x272 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_START_DUP1=0x273 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_START_DUP2=0x274 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_START_DUP3=0x275 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_STOP=0x276 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP1=0x277 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP2=0x278 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBDUMMYCLASSCONTROLLER_STOP_DUP3=0x279 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBHOST_DEREGISTEROBSERVER=0x38e -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBHOST_NOTIFYHOSTEVENT=0x38f -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBHOST_NOTIFYHOSTEVENT_DUP1=0x390 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBHOST_NOTIFYHOSTEVENT_DUP2=0x391 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBHOST_NOTIFYHOSTEVENT_DUP3=0x392 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBHOST_NOTIFYHOSTEVENT_DUP4=0x393 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBHOST_NOTIFYHOSTEVENT_DUP5=0x394 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBHOST_STARTL=0x38d -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_POST=0x3c0 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_POST_DUP1=0x3c1 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_POST_DUP2=0x3c2 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_POST_DUP3=0x3c3 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_RUNL=0x3be -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGCONNECTIONIDLEWATCHER_RUNL_DUP1=0x3bf -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT=0x3ae -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP1=0x3af -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP10=0x3b8 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP2=0x3b0 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP3=0x3b1 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP4=0x3b2 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP5=0x3b3 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP6=0x3b4 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP7=0x3b5 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP8=0x3b6 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_LOGEVENTTEXT_DUP9=0x3b7 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_POST=0x3b9 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_RUNL=0x3aa -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_RUNL_DUP1=0x3ac -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_RUNL_DUP2=0x3ad -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGEVENTWATCHER_RUNL_DUP3=0x3ab -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST=0x397 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST_DUP1=0x398 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST_DUP2=0x399 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST_DUP3=0x39a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST_DUP4=0x39b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_POST_DUP5=0x39c -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_RUNL=0x395 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGIDPINWATCHER_RUNL_DUP1=0x396 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGSTATEWATCHER_POST=0x3a7 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGSTATEWATCHER_POST_DUP1=0x3a8 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGSTATEWATCHER_POST_DUP2=0x3a9 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGSTATEWATCHER_RUNL=0x3a5 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGSTATEWATCHER_RUNL_DUP1=0x3a6 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST=0x39f -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST_DUP1=0x3a0 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST_DUP2=0x3a1 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST_DUP3=0x3a2 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST_DUP4=0x3a3 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_POST_DUP5=0x3a4 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_RUNL=0x39d -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGVBUSWATCHER_RUNL_DUP1=0x39e -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGWATCHER_POST=0x3bc -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGWATCHER_RUNL=0x3ba -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTGWATCHER_RUNL_DUP1=0x3bb -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL=0x382 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP1=0x383 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP2=0x386 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP3=0x384 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP4=0x385 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP5=0x387 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CONSTRUCTL_DUP6=0x388 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG=0x373 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP1=0x374 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP10=0x37d -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP11=0x37e -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP12=0x37f -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP13=0x380 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP14=0x381 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP2=0x375 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP3=0x376 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP4=0x377 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP5=0x378 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP6=0x379 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP7=0x37a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP8=0x37b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_CUSBOTG_DUP9=0x37c -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_NOTIFYOTGEVENT=0x389 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_REGISTEROBSERVERL=0x38a -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_STOP=0x38b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBOTG_STOP_DUP1=0x38c -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_DECREMENTSESSIONCOUNT_DUP1=0x136 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_INCREMENTSESSIONCOUNT_DUP1=0x134 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSERVER_LAUNCHSHUTDOWNTIMERIFNOSESSIONS=0x137 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR_DUP1=0x1d1 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_CONSTRUCTL=0x173 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_CONVERTUIDSL=0x18c -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_CREATECLASSCONTROLLERSL=0x190 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_ENUMERATECLASSCONTROLLERSL=0x177 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_READPERSONALITIESL=0x18d -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_RUNERROR=0x17e -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_RUNL=0x17b -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL=0x185 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDEVICE_SETUSBDEVICESETTINGSL=0x17f -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR=0x91 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBDUMMYCLASSCONTROLLER_RUNL=0xac -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBMANCENREPMANAGER_READKEYL=0x3ca -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBOTGCONNECTIONIDLEWATCHER_POST_DUP1=0x258 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBOTG_CONSTRUCTL=0x21e -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBOTG_CUSBOTG=0x28 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBSESSION_CUSBSESSION=0x1d3 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBSESSION_DISPATCHMESSAGEL=0x1cf -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBSESSION_GETMANUFACTURERSTRINGDESCRIPTOR=0x1da -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP1_CUSBSESSION_GETSUPPORTEDCLASSES=0x1bd -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP2_CUSBDEVICE_READPERSONALITIESL=0x18e -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP2_CUSBDEVICE_RUNL=0x17c -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP2_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL=0x186 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP2_CUSBDEVICE_SETUSBDEVICESETTINGSL=0x180 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP2_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR=0x92 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP2_CUSBDUMMYCLASSCONTROLLER_RUNL=0xad -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP2_CUSBSESSION_CUSBSESSION=0x1d4 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP3_CUSBDEVICE_READPERSONALITIESL=0x18f -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP3_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL=0x187 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP3_CUSBDEVICE_SETUSBDEVICESETTINGSL=0x181 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP3_CUSBDUMMYCLASSCONTROLLER_GETBEHAVIOUR=0x93 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP3_CUSBDUMMYCLASSCONTROLLER_RUNL=0xae -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP4_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL=0x189 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP4_CUSBDEVICE_SETUSBDEVICESETTINGSL=0x182 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP5_CUSBDEVICE_SETUSBDEVICESETTINGSFROMPERSONALITYL=0x188 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP5_CUSBDEVICE_SETUSBDEVICESETTINGSL=0x183 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_DUP6_CUSBDEVICE_SETUSBDEVICESETTINGSL=0x184 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]__RUNSERVERL=0x8e diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrautotest/TestExecute/USB/ncm_unit_test/ncmcctest/dummy_ncminternalsrv/group/bld.inf --- a/usbmgmt/usbmgrautotest/TestExecute/USB/ncm_unit_test/ncmcctest/dummy_ncminternalsrv/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This material, including documentation and any related - * computer programs, is protected by copyright controlled by - * Nokia. All rights are reserved. Copying, including - * reproducing, storing, adapting or translating, any - * or all of this material requires the prior written consent of - * Nokia. This material also contains confidential - * information which may not be disclosed to others without the - * prior written consent of Nokia. - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: - * - */ - -PRJ_PLATFORMS -ARMV5 winscw - -PRJ_TESTEXPORTS -../inc/dummy_ncminternalsrv.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(usb/testncmcc/dummy_ncminternalsrv.h) - -PRJ_TESTMMPFILES -dummy_ncminternalsrv.mmp diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrautotest/TestExecute/USB/ncm_unit_test/ncmcctest/dummy_ncminternalsrv/group/dummy_ncminternalsrv.mmp --- a/usbmgmt/usbmgrautotest/TestExecute/USB/ncm_unit_test/ncmcctest/dummy_ncminternalsrv/group/dummy_ncminternalsrv.mmp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). - * All rights reserved. - * This material, including documentation and any related - * computer programs, is protected by copyright controlled by - * Nokia. All rights are reserved. Copying, including - * reproducing, storing, adapting or translating, any - * or all of this material requires the prior written consent of - * Nokia. This material also contains confidential - * information which may not be disclosed to others without the - * prior written consent of Nokia. - * - * Initial Contributors: - * Nokia Corporation - initial contribution. - * - * Contributors: - * - * Description: - * - */ - -TARGET dummy_ncminternalsrv.dll -TARGETTYPE DLL - -UID 0x1000008d 0x2002EA86 -VENDORID 0x70000001 - -// Being run in usbsvr.exe(usbman) -CAPABILITY CommDD PowerMgmt TrustedUI ProtServ NetworkControl NetworkServices LocalServices ReadUserData WriteUserData ReadDeviceData WriteDeviceData - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -SOURCEPATH ../src - -LIBRARY euser.lib - -SOURCE dummy_ncminternalsrv.cpp - -USERINCLUDE ../inc ../../inc diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/ObexClassController/ObexUsbClassController/ObexClassController/group/CUsbObexClassController.mmp --- a/usbmgmt/usbmgrtest/ObexClassController/ObexUsbClassController/ObexClassController/group/CUsbObexClassController.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/ObexClassController/ObexUsbClassController/ObexClassController/group/CUsbObexClassController.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -42,6 +42,11 @@ target obexclasscontroller.rsc END +START RESOURCE obexusbman.rss +TARGETPATH /private/101fe1db +HEADER +END + LIBRARY classcontrollerclientsession.lib LIBRARY euser.lib LIBRARY usbclasscontroller.lib diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/ObexClassController/ObexUsbClassController/ObexClassController/group/bld.inf --- a/usbmgmt/usbmgrtest/ObexClassController/ObexUsbClassController/ObexClassController/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/ObexClassController/ObexUsbClassController/ObexClassController/group/bld.inf Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -20,6 +20,3 @@ PRJ_TESTMMPFILES CUsbObexClassController.mmp - -PRJ_TESTEXPORTS -../conf/obexusbman_101fe1db.txt /epoc32/data/z/private/10202be9/obexusbman_101fe1db.txt diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/ObexClassController/ObexUsbClassController/ObexClassController/src/obexusbman.rss --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbmgmt/usbmgrtest/ObexClassController/ObexUsbClassController/ObexClassController/src/obexusbman.rss Wed Sep 01 12:35:00 2010 +0100 @@ -0,0 +1,72 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Resource file for usbman configuration. +* This file is needed when implementing Obex over USB. +* This file needs to be placed in usbman\src\ and a new build needs +* to be made. +* +*/ + +/** + @file +*/ + +NAME USBM + +#include +#include "usbman.rh" + +#ifdef LANGUAGE_01 // UK English + #include "usbman_01.rls" +#elif LANGUAGE_02 // French + #include "usbman_02.rls" +#elif defined LANGUAGE_03 // German + #include "usbman_03.rls" +#elif defined LANGUAGE_10 // US English + #include "usbman_10.rls" +#endif + +RESOURCE BA_RSS_SIGNATURE + { + signature = 1; + } + +RESOURCE usb_configuration usb_config + { + } + + +RESOURCE PERSONALITY_ARRAY device_personalities + { + personalities = + { + PERSONALITY + { + bDeviceClass = 02; + bDeviceSubClass = 0; + protocol = 0; + numConfigurations = 1; + vendorId = 0x0e22; + productId = 0x000c; + bcdDevice = 0; + manufacturer = per_manufacturer1; + product = per_product1; + id = 1; + class_uids = "101fbf24, 10274339"; + description = per_description1; + } + }; + } + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/ObexClassController/test/src/simpleObexApp.cpp --- a/usbmgmt/usbmgrtest/ObexClassController/test/src/simpleObexApp.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/ObexClassController/test/src/simpleObexApp.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -455,33 +455,33 @@ CleanupStack::PushL(myScheduler); CActiveScheduler::Install(myScheduler); - CConsoleBase* console = + CConsoleBase* aConsole = Console::NewL(_L("Obex Program"),TSize(KConsFullScreen, KConsFullScreen)); // Load Device drivers TInt err; // Start C32 now - console->Printf(_L("Loading C32...\n")); + aConsole->Printf(_L("Loading C32...\n")); err=StartC32(); if (err!=KErrNone && err!=KErrAlreadyExists) - console->Printf(_L(" Failed %d\n"), err); + aConsole->Printf(_L(" Failed %d\n"), err); else - console->Printf(_L(" Sucess\n")); + aConsole->Printf(_L(" Sucess\n")); // If running on PC emulator // Load drivers for using Serial communication #ifdef __WINS__ TInt load = User::LoadLogicalDevice(KWinsLddName); - console->Printf(_L("Load LDD : %d\n"), load); + aConsole->Printf(_L("Load LDD : %d\n"), load); load = User::LoadPhysicalDevice(KWinsPddName); - console->Printf(_L("Load PDD : %d\n"), load); + aConsole->Printf(_L("Load PDD : %d\n"), load); #endif //__WINS__ - CleanupStack::PushL(console); - CActiveConsole* my_console = CActiveConsole::NewLC(console);// New active console + CleanupStack::PushL(aConsole); + CActiveConsole* my_console = CActiveConsole::NewLC(aConsole);// New active console my_console->RequestCharacter(); CActiveScheduler::Start(); CleanupStack::PopAndDestroy(3); diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/ObexClassController/test/src/simpleObexClient.cpp --- a/usbmgmt/usbmgrtest/ObexClassController/test/src/simpleObexClient.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/ObexClassController/test/src/simpleObexClient.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -119,16 +119,16 @@ // Create file session and create a new private path on drive C RFs fileSession; - User::LeaveIfError(fileSession.Connect()); + fileSession.Connect(); - User::LeaveIfError(fileSession.CreatePrivatePath(EDriveC)); - User::LeaveIfError(fileSession.SetSessionToPrivate(EDriveC)); - User::LeaveIfError(fileSession.SessionPath(iSessionPath)); + fileSession.CreatePrivatePath(EDriveC); + fileSession.SetSessionToPrivate(EDriveC); + fileSession.SessionPath(iSessionPath); // Copy the files from oby file ro the newly created path - User::LeaveIfError(BaflUtils::CopyFile(fileSession, KFilePath1, KFilename1,0)); - User::LeaveIfError(BaflUtils::CopyFile(fileSession, KFilePath2, KFilename2,0)); - User::LeaveIfError(BaflUtils::CopyFile(fileSession, KFilePath3, KFilename3,0)); + BaflUtils::CopyFile(fileSession, KFilePath1, KFilename1,0); + BaflUtils::CopyFile(fileSession, KFilePath2, KFilename2,0); + BaflUtils::CopyFile(fileSession, KFilePath3, KFilename3,0); fileSession.Close(); diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/ObexClassController/test/src/simpleObexServer.cpp --- a/usbmgmt/usbmgrtest/ObexClassController/test/src/simpleObexServer.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/ObexClassController/test/src/simpleObexServer.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -63,7 +63,7 @@ { // Start bluetooth socket and set security RSocketServ socketServ; - User::LeaveIfError(socketServ.Connect()); + socketServ.Connect(); RSocket listen; TInt test = listen.Open(socketServ, KRFCOMMDesC); @@ -129,7 +129,6 @@ // Update attribute iSdpdb.UpdateAttributeL(ftphandle, KProtocolDescriptorListUUID, *iProtDescList); // put into both records delete iProtDescList; - iProtDescList = NULL; User::LeaveIfError(listen.Bind(addr)); diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/csy/t_ecacm/src/t_csyaccess.cpp --- a/usbmgmt/usbmgrtest/csy/t_ecacm/src/t_csyaccess.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/csy/t_ecacm/src/t_csyaccess.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -24,10 +24,12 @@ #ifndef __WINS__ _LIT(KCommDriverName, "EUSBC"); +//_LIT(KCommDeviceName, "USBC"); #else _LIT(KCommPhysDriverName, "ECDRV"); _LIT(KCommPhysDeviceName, "Comm.Wins"); _LIT(KCommDriverName, "ECOMM"); +//_LIT(KCommDeviceName, "Comm"); #endif LOCAL_D RTest gTest(_L("T_CSYACCESS")); @@ -465,6 +467,21 @@ if ( !err ) { gTest.Printf(_L("\tsuccessful result from RComm::Open\n")); + + /* TCommServerConfigV01 serverConfig; + TCommServerConfig serverConfigBuf(serverConfig); + comm.Mode(serverConfigBuf); + + const TUint KBufSize = 0x1000; + serverConfig.iBufSize = KBufSize; + + err = comm.SetMode(serverConfig); + if ( !err ) + { + gTest.Printf(_L("\tsuccessful result from RComm::SetMode\n")); + // End of use case. + } + */ comm.Close(); } } @@ -734,10 +751,7 @@ TInt error = KErrNone; RCommServ sess; - gTest.Next(_L("Connecting to Comm Server")); - r = sess.Connect(); - gTest(r == KErrNone); - + sess.Connect(); sess.__DbgMarkHeap(); switch (key ) @@ -816,9 +830,7 @@ void RunAll() { RCommServ sess; - gTest.Next(_L("Connecting to Comm Server")); - TInt r = sess.Connect(); - gTest(r == KErrNone); + sess.Connect(); for ( TInt ii = 0 ; ii < 9 ; ii++ ) // TODO: keep 9 up-to-date with number of tests. { diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_acm/src/t_acm.cpp --- a/usbmgmt/usbmgrtest/t_acm/src/t_acm.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_acm/src/t_acm.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -34,6 +34,7 @@ const TInt KReceiveBufferLength = 4096; const TInt KMaxAcmPortNameLength = 8; +//_LIT(KUsbCsyName, "ECACM"); _LIT(KUsbPortName, "ACM::0"); _LIT(KUsbPortNameAcm1, "ACM::1"); @@ -942,6 +943,8 @@ _printf(_L("Writing data\n")); for (timeout = 10; timeout<100; timeout++) { +// FillBuffer(readBuf); + port.Write(status, readBuf); // Wait before cancelling @@ -1771,7 +1774,19 @@ _printf(_L("a. Event notification, flow control (test 2.8.2)\n")); _printf(_L("b. Event notification, config change (test 2.8.3)\n")); _printf(_L("c. Second client (test 2.9)\n")); - _printf(_L("p. Loopback test (test 2.12)\n")); +/* _printf(_L("d. ACM request, encapsulated command (test 2.10.1)\n")); + _printf(_L("e. ACM request, break (test 2.10.2)\n")); + _printf(_L("f. ACM request, setting feature (test 2.10.3)\n")); + _printf(_L("g. ACM request, clearing feature (test 2.10.4)\n")); + _printf(_L("h. ACM request, setting line coding (test 2.10.5)\n")); + _printf(_L("i. ACM request, control line state (test 2.10.6)\n")); + _printf(_L("j. ACM request, encapsualted response (test 2.10.7)\n")); + _printf(_L("k. ACM request, comms feature (test 2.10.8)\n")); + _printf(_L("l. ACM request, getting line coding (test 2.10.9)\n")); + _printf(_L("m. ACM Notifications, send serial state (test 2.11.1)\n")); + _printf(_L("n. ACM Notifications, network status (test 2.11.2)\n")); + _printf(_L("o. ACM Notifications, response available (test 2.11.3)\n")); +*/ _printf(_L("p. Loopback test (test 2.12)\n")); _printf(_L("q. Main menu\n")); ch = (char) _getch(); diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_acm_cc/src/t_acm_cc.cpp --- a/usbmgmt/usbmgrtest/t_acm_cc/src/t_acm_cc.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_acm_cc/src/t_acm_cc.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -119,6 +119,17 @@ current_test_state = EUSBManConnected; break; case EUSBManConnected: + // Register as primary client. + // *** Obsolete *** + /* + r = usbman->RegisterAsPrimarySession(); + if (r != KErrNone) + { + test.Printf(_L(" Failed to register as primary client. Error = %d\n"), r); + return r; + } + test.Printf(_L(" Registered as primary client.\n")); + */ current_test_state = EPrimaryRegistered; break; default: @@ -151,6 +162,8 @@ current_test_state = EPrimaryRegistered; break; case EPrimaryRegistered: + // *** Obsolete *** + // usbman->DeregisterAsPrimarySession(); current_test_state = EUSBManConnected; break; case EUSBManConnected: @@ -227,6 +240,44 @@ } /** + * Executes test B2 (as detailed in the USB Manager Test Specification). + * No longer a relevant test. + */ +/*static TInt RunTest_B2() + { + TInt r; + + test.Next(_L("Test B2.\n")); + + // Perform common startup + current_test_state = EStart; + r = CommonStart(); + if (r != KErrNone) + return r; + + // Start the USB Manager + TRequestStatus status; + test.Printf(_L("Starting.\n")); + usbman->Start(status); + + // Wait for specific time (has to be less than the time to process a start request) + timer.After(status, CANCEL_START_REQ_DELAY); + User::WaitForRequest(status); + + // Cancel the start request + test.Printf(_L("Cancelling.\n")); + usbman->StartCancel(); + + // Check service status + test.Printf(_L("Checking service status.\n")); + r = CheckServiceState(EUsbServiceIdle); + if ( r != KErrNone) + return r; + + return KErrNone; + } +*/ +/** * Executes test B3 (as detailed in the USB Manager Test Specification). */ static TInt RunTest_B3() @@ -263,6 +314,47 @@ } /** + * Executes test B4 (as detailed in the USB Manager Test Specification). + * No longer a relevant test. + */ +/*static TInt RunTest_B4() + { + TInt r; + + test.Next(_L("Test B4.\n")); + + // Perform common startup + current_test_state = EStart; + r = CommonStart(); + if (r != KErrNone) + return r; + + // Start the USB Manager + TRequestStatus status, timerStatus; + usbman->Start(status); + User::WaitForRequest(status); + test.Printf(_L("Start completed with status %d\n"), status.Int()); + current_test_state = EUSBManStarted; + + // Stop the USB Manager + usbman->Stop(status); + + // Wait for specific time (has to be less than the time to process a start request) + timer.After(timerStatus, CANCEL_STOP_REQ_DELAY); + User::WaitForRequest(status, timerStatus); + + // Cancel the stop request + usbman->StopCancel(); + + // Check service status + r = CheckServiceState(EUsbServiceStarted); + if ( r != KErrNone) + return r; + + return KErrNone; + } +*/ +/** * Executes test B5 (as detailed in the USB Manager Test Specification). */ static TInt RunTest_B5() @@ -415,6 +507,16 @@ test.Printf(_L("Test B1 passed.\n\n")); CommonCleanup(); +/* Depreciated test. + err=RunTest_B2(); + if (err != KErrNone) + { + test.Printf(_L("Test B2 failed, code: %d\n\n"), err); + } + else + test.Printf(_L("Test B2 passed.\n\n")); + CommonCleanup(); +*/ err=RunTest_B3(); if (err != KErrNone) { @@ -424,6 +526,16 @@ test.Printf(_L("Test B3 passed.\n\n")); CommonCleanup(); +/* Depreciated test. + err=RunTest_B4(); + if (err != KErrNone) + { + test.Printf(_L("Test B4 failed, code: %d\n\n"), err); + } + else + test.Printf(_L("Test B4 passed.\n\n")); + CommonCleanup(); +*/ err=RunTest_B5(); if (err != KErrNone) { diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_acm_pub_sub/src/t_acm_pub_sub.cpp --- a/usbmgmt/usbmgrtest/t_acm_pub_sub/src/t_acm_pub_sub.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_acm_pub_sub/src/t_acm_pub_sub.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -344,7 +344,7 @@ } //Connect to the file server - User::LeaveIfError(gFs.Connect()); + gFs.Connect(); TInt result = KErrNone; TRAPD(error, result = TestCase1L()); if(error) diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_acm_spec/src/t_acm_spec.cpp --- a/usbmgmt/usbmgrtest/t_acm_spec/src/t_acm_spec.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_acm_spec/src/t_acm_spec.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -35,6 +35,7 @@ const TInt KReceiveBufferLength = 8192; +//_LIT(KUsbCsyName, "ECACM"); _LIT(KUsbPortName, "ACM::0"); _LIT(KUsbLddName, "EUSBC"); @@ -420,6 +421,8 @@ _printf(_L("Writing data\n")); for (timeout = 10; timeout<100; timeout++) { +// FillBuffer(readBuf); + port.Write(status, readBuf); // Wait before cancelling @@ -524,6 +527,7 @@ if (status != KErrNone) // Error code ? TODO { + //LEAVE(status.Int()); _printf(_L("Read failed\n")); } @@ -981,6 +985,7 @@ break; } +// _printf(_L("Read %d bytes\n"), readBuf.Length()); port.Write(status, readBuf); User::WaitForRequest(status, consoleStatus); @@ -1130,6 +1135,14 @@ port.SetConfig(TheConfigBuf); +// _printf(_L("----------------------------------------\n")); +// _printf(_L("Initial port config:\n")); +// _printf(_L(" Rate: %d bps\n"), TheConfig.iRate); +// _printf(_L(" Data bits: %d. Parity type: %d. Stop bits: %d\n"), +// TheConfig.iStopBits, TheConfig.iParity, TheConfig.iStopBits); +// _printf(_L(" Handshaking options: 0x%X\n"), TheConfig.iHandshake); +// _printf(_L("----------------------------------------\n\n")); + CleanupStack::PopAndDestroy(); // port TBool noExit = ETrue; @@ -1172,7 +1185,19 @@ _printf(_L("a. Event notification, flow control (test 2.8.2)\n")); _printf(_L("b. Event notification, config change (test 2.8.3)\n")); _printf(_L("c. Second client (test 2.9)\n")); - _printf(_L("p. Loopback test (test 2.12)\n")); +/* _printf(_L("d. ACM request, encapsulated command (test 2.10.1)\n")); + _printf(_L("e. ACM request, break (test 2.10.2)\n")); + _printf(_L("f. ACM request, setting feature (test 2.10.3)\n")); + _printf(_L("g. ACM request, clearing feature (test 2.10.4)\n")); + _printf(_L("h. ACM request, setting line coding (test 2.10.5)\n")); + _printf(_L("i. ACM request, control line state (test 2.10.6)\n")); + _printf(_L("j. ACM request, encapsualted response (test 2.10.7)\n")); + _printf(_L("k. ACM request, comms feature (test 2.10.8)\n")); + _printf(_L("l. ACM request, getting line coding (test 2.10.9)\n")); + _printf(_L("m. ACM Notifications, send serial state (test 2.11.1)\n")); + _printf(_L("n. ACM Notifications, network status (test 2.11.2)\n")); + _printf(_L("o. ACM Notifications, response available (test 2.11.3)\n")); +*/ _printf(_L("p. Loopback test (test 2.12)\n")); _printf(_L("q. Main menu\n")); ch = (char) _getch(); diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_acm_wins/src/t_acm_wins.cpp --- a/usbmgmt/usbmgrtest/t_acm_wins/src/t_acm_wins.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_acm_wins/src/t_acm_wins.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -758,6 +758,7 @@ memset(writeBufbig, i, MAX_BUFFER_SIZE); // fill the write buffer with known data _printf(_L("%d: "), (TInt)i); WriteData(writeBufbig, 64); + //FlushFileBuffers(hSerial); ReadData(readBufbig, 64); for (int j=0; j<64; j++) { @@ -805,7 +806,19 @@ _printf(_L("a. Event notification, flow control (test 2.8.2)\n")); _printf(_L("b. Event notification, config change (test 2.8.3)\n")); _printf(_L("c. Second client (test 2.9)\n")); - _printf(_L("p. Loopback test (test 2.12)\n")); +/* _printf(_L("d. ACM request, encapsulated command (test 2.10.1)\n")); + _printf(_L("e. ACM request, break (test 2.10.2)\n")); + _printf(_L("f. ACM request, setting feature (test 2.10.3)\n")); + _printf(_L("g. ACM request, clearing feature (test 2.10.4)\n")); + _printf(_L("h. ACM request, setting line coding (test 2.10.5)\n")); + _printf(_L("i. ACM request, control line state (test 2.10.6)\n")); + _printf(_L("j. ACM request, encapsualted response (test 2.10.7)\n")); + _printf(_L("k. ACM request, comms feature (test 2.10.8)\n")); + _printf(_L("l. ACM request, getting line coding (test 2.10.9)\n")); + _printf(_L("m. ACM Notifications, send serial state (test 2.11.1)\n")); + _printf(_L("n. ACM Notifications, network status (test 2.11.2)\n")); + _printf(_L("o. ACM Notifications, response available (test 2.11.3)\n")); +*/ _printf(_L("p. Loopback test (test 2.12)\n")); _printf(_L("\n")); _printf(_L("\nSelection (x to exit): ")); diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_catc/src/t_catc.cpp --- a/usbmgmt/usbmgrtest/t_catc/src/t_catc.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_catc/src/t_catc.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -37,10 +37,12 @@ TCommConfigV01& TheConfig = TheConfigBuf(); const TInt KReceiveBufferLength = 65536/*16384*/; // TODO: speed enhancement! +//const TInt KMaxBufferSize = 8192; // TODO: speed enhancement! const TUint KChunkSize = 65536; //////////////////////////////////////////////////////////////////////////////// +//_LIT(KUsbCsyName, "ECACM"); _LIT(KUsbPortName, "ACM::0"); _LIT(KUsbLddName, "EUSBC"); @@ -135,6 +137,7 @@ TRequestStatus status; RComm port; +// static TBuf8<1024> OUT_Buf; // TODO: speed enhancement! static TBuf8 OUT_Buf; _printf(_L("\n")); @@ -159,6 +162,7 @@ console->Read(consoleStatus); TInt uReadCount = 0 ; + //TInt uThermoBar = 0 ; // TODO: speed enhancement! (remove ThermoBar fnality) _printf(_L("\tWatch : ")); @@ -212,6 +216,25 @@ } uReadCount += OUT_Buf.Length() ; + +/* if( uReadCount >= 1024 ) + { + // uThermoBar runs from 0..63 + + uThermoBar = ( uThermoBar + 1 ) & 0x3F ; + + if( uThermoBar < 32 ) + { + _printf(_L("*")); + } + else + { + _printf(_L("\b \b")); + } + + uReadCount -= 1024 ; + } + */ } else { @@ -247,6 +270,7 @@ TRequestStatus status; RComm port; +//#define uInBufSize 4096 // TODO: speed enhancement! reduce number of IPC calls #define uInBufSize 65536 static TBuf8 IN_Buf; @@ -313,6 +337,7 @@ TInt bNeedZLP = bUseZLP && ((IN_Buf.Length()%64)==0); TInt uWriteCount = 0 ; +// TInt uThermoBar = 0 ; // TODO: speed enhancement! _printf(_L("\tWatch : ")); @@ -353,6 +378,24 @@ // reassure watcher that there is something happening... +/* while( uWriteCount >= 1024 ) + { + // uThermoBar runs from 0..63 + + uThermoBar = ( uThermoBar + 1 ) & 0x3F ; + + if( uThermoBar < 32 ) + { + _printf(_L("*")); + } + else + { + _printf(_L("\b \b")); + } + + uWriteCount -= 1024 ; + } + */ } else { @@ -455,7 +498,49 @@ _printf(_L("Restarted USB.\n")); } +//////////////////////////////////////////////////////////////////////////////// +/*void ThermoBar() + { + TUint uCol = 0 ; + + TTime now; + + TDateTime WasDT; + TDateTime NowDT; + + now.HomeTime(); + WasDT = now.DateTime(); + + for( TUint line = 0 ; line < 30 ; ) + { + for( TUint dotO = 0 ; dotO < 1000 ; dotO++ ) + { + for( TUint dotI = 0 ; dotI < 1000 ; dotI++ ) + { + ; + } + } + + _printf(_L("*")); + + now.HomeTime(); + NowDT = now.DateTime(); + + if( ( ++uCol >= 79 ) || ( WasDT.Second() != NowDT.Second() ) ) + { + _printf(_L("\n")); + + uCol = 0 ; + + line++ ; + + WasDT = now.DateTime() ; + } + } + } +*/ +//////////////////////////////////////////////////////////////////////////////// void ToggleTermL() { @@ -574,6 +659,7 @@ _printf(_L("2. Bulk IN test \n")); _printf(_L("3. Set handshaking \n")); _printf(_L("4. Restart USB \n")); +// _printf(_L("5. Run ThermoBar \n")); _printf(_L("6. Swap Read Method \n")); _printf(_L("7. Swap ZLP Method \n")); _printf(_L("8. Swap Term Method \n")); @@ -589,6 +675,7 @@ case '2': Bulk_IN_TestL(); break; case '3': SetHandshakingL(); break; case '4': RestartUsbL(); break; +// case '5': ThermoBar(); break; case '6': bReadCall = ( bReadCall == EFalse ) ; break; case '7': bUseZLP = ( bUseZLP == EFalse ) ; break; case '8': ToggleTermL() ; break; diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_charging_arm/group/t_usbchargingarm.mmp --- a/usbmgmt/usbmgrtest/t_charging_arm/group/t_usbchargingarm.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_charging_arm/group/t_usbchargingarm.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -51,3 +51,4 @@ // -- Add specific libraries here LIBRARY centralrepository.lib +#include diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_charging_emu/group/TestPlugin.mmp --- a/usbmgmt/usbmgrtest/t_charging_emu/group/TestPlugin.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_charging_emu/group/TestPlugin.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -47,13 +47,13 @@ USERINCLUDE ../inc ../../../usbmgr/usbman/chargingplugin/inc USERINCLUDE ../../../usbmgr/usbman/chargingplugin/inc/default USERINCLUDE ../../../usbmgr/usbman/chargingplugin/public -USERINCLUDE ../traces OS_LAYER_SYSTEMINCLUDE_SYMBIAN LIBRARY euser.lib LIBRARY usbmanextensionplugin.lib LIBRARY centralrepository.lib +#include library flogger.lib diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_charging_emu/group/TestPluginotg.mmp --- a/usbmgmt/usbmgrtest/t_charging_emu/group/TestPluginotg.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_charging_emu/group/TestPluginotg.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -47,17 +47,16 @@ target usbbatterychargingtestpluginotg.rsc END -USERINCLUDE ../inc -USERINCLUDE ../../../usbmgr/usbman/chargingplugin/inc +USERINCLUDE ../inc ../../../usbmgr/usbman/chargingplugin/inc USERINCLUDE ../../../usbmgr/usbman/chargingplugin/inc/default USERINCLUDE ../../../usbmgr/usbman/chargingplugin/public -USERINCLUDE ../traces OS_LAYER_SYSTEMINCLUDE_SYMBIAN LIBRARY euser.lib LIBRARY usbmanextensionplugin.lib LIBRARY centralrepository.lib +#include library flogger.lib diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_charging_emu/inc/dummyldd.h --- a/usbmgmt/usbmgrtest/t_charging_emu/inc/dummyldd.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_charging_emu/inc/dummyldd.h Wed Sep 01 12:35:00 2010 +0100 @@ -42,7 +42,7 @@ inline TInt RDevUsbcClient::GetConfigurationDescriptor(TDes8& aConfigurationDescriptor) { // 8th byte is bMaxPower - aConfigurationDescriptor.Copy(iConfigDesc); + aConfigurationDescriptor.Copy(iConfigDesc);//[8] = iConfigDesc[8]; return KErrNone; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_charging_emu/inc/tbatterycharging.h --- a/usbmgmt/usbmgrtest/t_charging_emu/inc/tbatterycharging.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_charging_emu/inc/tbatterycharging.h Wed Sep 01 12:35:00 2010 +0100 @@ -120,6 +120,7 @@ RTest iTest; RTimer iTimer; + //CRepository* iRepository; TPtr8 iPtr; // data file TPtr8 iLine; // current line diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_charging_emu/inc/tpropertybatterycharging.h --- a/usbmgmt/usbmgrtest/t_charging_emu/inc/tpropertybatterycharging.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_charging_emu/inc/tpropertybatterycharging.h Wed Sep 01 12:35:00 2010 +0100 @@ -56,7 +56,9 @@ CActivePropertyReadChargingCurrent* iActiveReadChargingCurrent; CRepository* iRepository; + //RProperty iPropertyWrittenToRepositoryAck; + //RProperty iPropertyReadChargingCurrentAck; RProperty iProperty; // only one protected needed ? - }; + }; \ No newline at end of file diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_charging_emu/src/1020DEA7.rss --- a/usbmgmt/usbmgrtest/t_charging_emu/src/1020DEA7.rss Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_charging_emu/src/1020DEA7.rss Wed Sep 01 12:35:00 2010 +0100 @@ -29,7 +29,7 @@ { INTERFACE_INFO { - interface_uid = 0xE0208DD6; + interface_uid = 0x10208DD6; implementations = { IMPLEMENTATION_INFO diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_charging_emu/src/CUsbBatteryChargingTestPlugin.cpp --- a/usbmgmt/usbmgrtest/t_charging_emu/src/CUsbBatteryChargingTestPlugin.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_charging_emu/src/CUsbBatteryChargingTestPlugin.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -31,11 +31,6 @@ #include #define __D32USBC_H__ // ensure that d32usbc is ignored, and dummyldd used instead #include "CUsbBatteryChargingTestPlugin.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "CUsbBatteryChargingTestPluginTraces.h" -#endif - // Define the private interface UIDs const TImplementationProxy ImplementationTable[] = @@ -52,8 +47,8 @@ CUsbBatteryChargingTestPlugin* CUsbBatteryChargingTestPlugin::NewL(MUsbmanExtensionPluginObserver& aObserver) { - OstTrace0( TRACE_NORMAL, CUSBBATTERYCHARGINGTESTPLUGIN_NEWL, _L8("NewL Test plug-n")); - + LOGTEXT(_L8("NewL Test plug-n")); + CUsbBatteryChargingTestPlugin* self = new(ELeave) CUsbBatteryChargingTestPlugin(aObserver); CleanupStack::PushL(self); self->ConstructL(); diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_charging_emu/src/tbatterycharging.cpp --- a/usbmgmt/usbmgrtest/t_charging_emu/src/tbatterycharging.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_charging_emu/src/tbatterycharging.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include @@ -128,6 +129,7 @@ iPlugin = iExtensionPlugins[0]; iDummyLdd.Initialise(); + //iRepository = CRepository::NewL(KUsbBatteryChargingCentralRepositoryUid); User::LeaveIfError(iTimer.CreateLocal()); DefinePropertyL(KBattChargWriteRepositoryUid, KBattChargWriteRepositoryKey,RProperty::EInt); @@ -344,7 +346,7 @@ TInt CDummyUsbDevice::GetNextLine() { - TInt newLineOffset = (iPtr.Mid(iFileOffset)).Locate(13); + TInt newLineOffset = (iPtr.Mid(iFileOffset)).Locate(13);//Find(_L("\r\n")); if (newLineOffset < 0) { return newLineOffset; @@ -425,6 +427,7 @@ { TInt err = WriteToRepositoryProperty(iCommandValue); + //TInt err = iRepository->Set(KUsbBatteryChargingKeyEnabledUserSetting, iCommandValue); iTest(err == KErrNone); } break; @@ -480,6 +483,8 @@ TInt current; TInt err = GetChargingCurrentFromProperty(current); + //TInt err = RProperty::Get(KPropertyUidUsbBatteryChargingCategory, + // KPropertyUidUsbBatteryChargingChargingCurrent, current); iTest(err == KErrNone); iTest(current == iCheckValue); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_charging_emu/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgrtest/t_charging_emu/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_charging_emu/traces/fixed_id.definitions --- a/usbmgmt/usbmgrtest/t_charging_emu/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_NORMAL[0x86]_CUSBBATTERYCHARGINGTESTPLUGIN_NEWL=0x1 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_headlessecacm/group/t_headlessecacm.mmp --- a/usbmgmt/usbmgrtest/t_headlessecacm/group/t_headlessecacm.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_headlessecacm/group/t_headlessecacm.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -80,3 +80,4 @@ // performance testing at the level of RDevUsbcClient. MACRO __HEADLESS_ACM_TEST_CODE__ +#include diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_multi_acm/src/t_multiple_acm.cpp --- a/usbmgmt/usbmgrtest/t_multi_acm/src/t_multiple_acm.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_multi_acm/src/t_multiple_acm.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -33,6 +33,7 @@ const TInt KReceiveBufferLength = 4096; const TInt KMaxAcmPortNameLength = 8; +//_LIT(KUsbCsyName, "ECACM"); _LIT(KUsbPortName, "ACM::0"); _LIT(KUsbPortNameAcm1, "ACM::1"); diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/group/bld.inf --- a/usbmgmt/usbmgrtest/t_ncm/group/bld.inf Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -PRJ_PLATFORMS -ARMV5 winscw - -PRJ_TESTEXPORTS -ncmtestconsole.iby /epoc32/rom/include/ncmtestconsole.iby - -PRJ_TESTMMPFILES -ncmtestconsole.mmp diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/group/ncmtestconsole.iby --- a/usbmgmt/usbmgrtest/t_ncm/group/ncmtestconsole.iby Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -#ifndef NCM_TEST_CONSOLE_IBY -#define NCM_TEST_CONSOLE_IBY - - -#ifdef _DEBUG -file= ABI_DIR\DEBUG_DIR\ncmtestconsole.exe sys\bin\ncmtestconsole.exe -#else -file= ABI_DIR\BUILD_DIR\ncmtestconsole.exe sys\bin\ncmtestconsole.exe -#endif - -#endif //NCM_TEST_CONSOLE_IBY diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/group/ncmtestconsole.mmp --- a/usbmgmt/usbmgrtest/t_ncm/group/ncmtestconsole.mmp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -target ncmtestconsole.exe -targettype exe -UID 0 0xE228E991 - -capability All -Tcb - -OS_LAYER_SYSTEMINCLUDE_SYMBIAN - -userinclude ../inc - -sourcepath ../src - -library euser.lib -library usbman.lib -library centralrepository.lib -library esock.lib -library commdb.lib -library insock.lib -library esocksvr.lib - -source ncmtestconsole.cpp commandengine.cpp devicewatcher.cpp servicewatcher.cpp -source exitcommand.cpp -source simpancommand.cpp -source setncmiapcommand.cpp tcptest.cpp tcpcommand.cpp -source ncmwatcher.cpp - -#include -#include - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/inc/commandengine.h --- a/usbmgmt/usbmgrtest/t_ncm/inc/commandengine.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,119 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - - -#ifndef COMMANDENGINE_H -#define COMMANDENGINE_H - -#include "ncmtestdefines.hrh" - -#include -#include - -#define COMMAND_MAX_COUNT_PER_PAGE NUM_EVENT_ON_SCREEN -#define COMMAND_MAX_PAGE 9 - -class CUsbNcmConsole; - -NONSHARABLE_CLASS(CNcmCommandBase) : public CActive -/** - The CNcmCommandBase class is the base class of command classes - */ - { - friend class CNcmCommandEngine; -public: - virtual ~CNcmCommandBase(); - - //Set the command key - void SetKey(TUint aKey); - //Get the command key - TUint Key() const; - - //The command action when user choose a command. It must be implemneted by command classes. - virtual void DoCommandL() = 0; - - //Set the command description. which will be displayed in command help. - void SetDescription(const TDesC& aDescription); - const virtual TDesC& Description(); - -protected: - CNcmCommandBase(TInt aPriority, CUsbNcmConsole& aConsole, TUint aKey); - -protected: - //From CActive - virtual void DoCancel(); - virtual void RunL(); - -protected: - //Main console - CUsbNcmConsole& iTestConsole; - - //The character which indicates the command - TUint iKey; - //The command's description - TBuf iDescription; - - }; - -NONSHARABLE_CLASS(CNcmCommandEngine) : public CActive -/** - CNcmCommandEngine manages all command classes. - */ - { -public: - static CNcmCommandEngine* NewL(CUsbNcmConsole& aUsb); - ~CNcmCommandEngine(); - - //Add command to command engine. - void RegisterCommand(CNcmCommandBase* aCommand); - //Destroy all commands in command engine. - void RemoveAllCommand(); - - //Get command help info. - void PrintHelp(TInt aPage); - -private: - CNcmCommandEngine(CUsbNcmConsole& aUsb); - void ConstructL(); - - //From CActive - void DoCancel(); - void RunL(); - TInt RunError(TInt aError); - -private: - //Main console - CUsbNcmConsole& iTestConsole; - - //The mapping of key and commands. - RHashMap iCommandMap; - //keep the key infomation, the command will be displayed in which page and which line. - TUint iCommandKeys[COMMAND_MAX_PAGE][COMMAND_MAX_COUNT_PER_PAGE]; - //Indicate the page of the last command . - TInt iLastPage; - //Indicate the place of the last command in the last page. - TInt iLastItem; - //Indicate the rest lines in the last used page. - TInt iRemainLine; - }; - -#endif // COMMANDENGINE_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/inc/devicewatcher.h --- a/usbmgmt/usbmgrtest/t_ncm/inc/devicewatcher.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,80 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -#ifndef DEVICEWATCHER_H -#define DEVICEWATCHER_H - -#include -#include - -class CUsbNcmConsole; - -//The mode of CDeviceWatcher -enum TDeviceWatchMode - { - EWatchMode, //Only monitor the device state - EWatchAndStartMode //monitor the device state and start/stop NCM and NCM control app - //when usb cable plugin/unplug - }; - -NONSHARABLE_CLASS(CDeviceWatcher) : public CActive -/** -Monitor the USB device state. -*/ - { -public: - - static CDeviceWatcher* NewL(CUsbNcmConsole& aUsb); - ~CDeviceWatcher(); - - void SetWatchMode(TDeviceWatchMode aWatchMode); - TDeviceWatchMode GetWatchMode() const; - -private: - CDeviceWatcher(CUsbNcmConsole& aUsb); - void ConstructL(); - -private: - //From CActive - void DoCancel(); - void RunL(); - TInt RunError(TInt aError); - -private: - void DisplayDeviceState(TUint aDeviceState); - -private: - //Main console - CUsbNcmConsole& iTestConsole; - RDevUsbcClient iLdd; - - //Usb device state - TUint iDeviceState; - //Usb old device state - TUint iOldDeviceState; - //Indicate whether start/stop behavior are used. ETrue means start/stop is needed. - TBool iStartNcm; - TDeviceWatchMode iWatchMode; - }; - - -#endif //DEVICEWATCHER_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/inc/exitcommand.h --- a/usbmgmt/usbmgrtest/t_ncm/inc/exitcommand.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - - -#ifndef EXITCOMMAND_H -#define EXITCOMMAND_H - -#include "commandengine.h" - -NONSHARABLE_CLASS(CExitCommand) : public CNcmCommandBase -/** -Quit from the main console -*/ - { -public: - static CExitCommand* NewL(CUsbNcmConsole& aUsb, TUint aKey); - ~CExitCommand(); - -public: - //From CNcmCommandBase - void DoCommandL(); - -private: - CExitCommand(CUsbNcmConsole& aUsb, TUint aKey); - void ConstructL(); - -private: - - }; - -#endif // EXITCOMMAND_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/inc/ncmtestconsole.h --- a/usbmgmt/usbmgrtest/t_ncm/inc/ncmtestconsole.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,196 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - - -#ifndef NCMTESTCONSOLE_H -#define NCMTESTCONSOLE_H - -#include -#include -#include -#include -#include - -void Panic(TInt aPanic); - -#ifdef __FLOG_ACTIVE -_LIT8(KSubSys, "NCM"); -_LIT8(KLogComponent, "TEST"); -#endif - - -class CConsoleBase; -class CNcmCommandEngine; -class CDeviceWatcher; -class CServiceWatcher; -class CSharedStateWatcher; - -_LIT(KUsbNcmConsoleTitle, "NCM Test Console"); - -//Display item index -enum TDisplayItemIndex - { - EUsbServiceStateItem = 0, - EUsbDeviceStateItem, - ENcmConnStatusItem, - ENcmConnIpItem, - EUplinkConnStatusItem, - EUplinkConnIpItem, - ENcmBtPanItem, - ENcmAgentStateItem, - EAuthorisationSettingItem, - ENcmConnectionStateItem, - ELastItem //not used, just for count - }; - -#define DISPLAY_USB_SERVICE_STATE_LEN 11 //EUsbServiceStateItem -#define DISPLAY_USB_DEVICE_STATE_LEN 11 //EUsbDeviceStateItem -#define DISPLAY_NCM_CONN_STATE_LEN 16 //ENcmConnStatusItem -#define DISPLAY_NCM_CONN_IP_LEN 15 //ENcmConnIpItem -#define DISPLAY_UPLINK_CONN_STATE_LEN 16 //EUplinkConnStatusItem -#define DISPLAY_UPLINK_CONN_IP_LEN 15 //EUplinkConnIpItem -#define DISPLAY_NCM_BTPAN_LEN 10 //ENcmBtPanItem -#define DISPLAY_AGENT_STATE_LEN 30 //ENcmAgentStateItem -#define DISPLAY_AUTH_SETTING_LEN 15 //EAuthorisationSettingItem -#define DISPLAY_NCM_CONNECTION_STATE 16 - -//The SID of Ncm state P&S key used -const TUid KC32ExeSid = {0x101F7989}; - -NONSHARABLE_CLASS(CUsbNcmConsoleEvent) -/** -Event reported by running commands and watcher classes -*/ - { -public: - static CUsbNcmConsoleEvent* NewL(); - ~CUsbNcmConsoleEvent(); -private: - CUsbNcmConsoleEvent(); - void ConstructL(); -public: - //Event queue link - TDblQueLink iLink; - //Event description - RBuf iEvent; - }; - - -NONSHARABLE_CLASS(CUsbNcmConsole) : public CActive -/** -The Main Console of NCM manual test -*/ - { -friend class CNcmCommandEngine; - -public: - static CUsbNcmConsole* NewLC(TBool aDemo); - ~CUsbNcmConsole(); - -public: - void StartL(); - void Stop() const; - - RUsb& Usb(); - -public: - //commands use it to report event to main console - void NotifyEvent(CUsbNcmConsoleEvent* aEvent); - - //Set the Ncm IAP and monitor the related connection status - void SetLocalIapId(TInt aId); - //Set the Uplink IAP and monitor the related connection status - void SetUplinkIapId(TInt aId); - - //Get Ncm Iap ID - TInt LocalIapId() const; - //Get Uplink Iap ID - TInt UplinkIapId() const; - - //Called by commands and watchers to notify main console refresh the screen - void ScheduleDraw(TUint aKey); - - //Set the permanent info to display on screen - void SetDisplayItem(TInt aIndex, TDes& aInfo); - //Get the permanent info on screen - const TDes& GetDisplayItem(TInt aIndex); - - //Display all Iaps configured in commsdb - TInt DrawAvailableIapsL(); - - //Attach the connection specified by aIap - TBool AttachConnectionL(TInt aIap, RConnection& aConnection); - -private: - CUsbNcmConsole(TBool aDemo); - void ConstructL(); - - //Display all kinds of info. - void DrawL(); - //Init the items which are displayed on screen permanently - void CreateDisplayItemL(); - - //Call back function - static TInt DoCommandCallback(TAny *aThisPtr); - -private: - //From Active - void DoCancel(); - void RunL(); - TInt RunError(TInt aError); - -private: - CConsoleBase* iConsole; - RUsb iUsb; - - //The info displayed on screen permanently - RArray iDisplayArray; - - TVersion iVersion; - - //The Uplink IAP id - TInt iLocalIapId; - - CNcmCommandEngine* iKeys; - - //monitor the USB device state - CDeviceWatcher* iDeviceWatcher; - //monitor the USB service state - CServiceWatcher* iServiceWatcher; - - //Get the agent state of Ncm - CSharedStateWatcher* iSharedStateWatcher; - //Indicate current operation is display the help or not. - TInt iHelp; - - //If 'DEMO' is used as application parameter, iDemo will be set true. The Ncm - //Control app will be started automaticly and start Ncm automicly when usb cable - //plugin. This is used to demo for licencee. - TBool iDemo; -// CAsyncCallBack* iStartWatcherCallback; - - // Event list - TDblQue iEventList; - }; - - -#endif // NCMTESTCONSOLE_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/inc/ncmtestdefines.hrh --- a/usbmgmt/usbmgrtest/t_ncm/inc/ncmtestdefines.hrh Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,54 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - - - -#ifndef NCMTESTDEFINES_HRH -#define NCMTESTDEFINES_HRH - -// H4 screen can have 22 lines of text on it at once -// H4 screen can have 53 characters per line. -#define NUM_CHARACTERS_ON_LINE 53 -#define NUM_EVENT_ON_SCREEN 12 - - -enum TNcmTestConsolePanic - { - //The event is null. - ENcmEventIsNull = 300000, - //The lengh of event info is larger than allowed - ENcmEventLengthValid, - //The index of display item is valid - ENcmDisplayItemVaild, - //The command instance is null - ENcmCommandIsNull, - //The ncm start command is null - ENcmStartCommandIsNull, - //The command key exists - ENcmCommandKeyExists, - //InsertCommandError - ENcmInsertCommandError, - //The index of array item is valid - ENcmArrayBound - - }; -#endif // NCMTESTDEFINES_HRH diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/inc/ncmwatcher.h --- a/usbmgmt/usbmgrtest/t_ncm/inc/ncmwatcher.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - - -#ifndef NCMWATCHER_H -#define NCMWATCHER_H - -#include -#include -#include - -class CUsbNcmConsole; - -NONSHARABLE_CLASS(CSharedStateWatcher) : public CActive - { -public: - static CSharedStateWatcher* NewL(CUsbNcmConsole& aConsole); - ~CSharedStateWatcher(); - -private: - CSharedStateWatcher(CUsbNcmConsole& aConsole); - void ConstructL(); - void reportState(); - - //From CActive - void RunL(); - void DoCancel(); - -private: - RProperty iProperty; - TInt iIapId; - TInt iErrCode; - TPtr8 iNcmStateDes; - UsbNcm::TNcmConnectionEvent iSharedState; - CUsbNcmConsole& iConsole; - }; - -#endif // NCMWATCHER_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/inc/servicewatcher.h --- a/usbmgmt/usbmgrtest/t_ncm/inc/servicewatcher.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - - -#ifndef SERVICEWATCHER_H -#define SERVICEWATCHER_H - -#include -#include - -class CUsbNcmConsole; - -NONSHARABLE_CLASS(CServiceWatcher) : public CActive -/** -Monitor USB service state -*/ - { -public: - static CServiceWatcher* NewL(CUsbNcmConsole& aUsb); - ~CServiceWatcher(); - -private: - CServiceWatcher(CUsbNcmConsole& aUsb); - void ConstructL(); - - //Display USB service state on main console - void DisplayServiceState(TUsbServiceState aServiceState); - -private: - //From CActive - void DoCancel(); - void RunL(); - TInt RunError(TInt aError); - -private: - CUsbNcmConsole& iTestConsole; - TUsbServiceState iServiceState; - }; - - -#endif // SERVICEWATCHER_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/inc/setncmiapcommand.h --- a/usbmgmt/usbmgrtest/t_ncm/inc/setncmiapcommand.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -#ifndef SETNCMIAPCOMMAND_H -#define SETNCMIAPCOMMAND_H - -#include "commandengine.h" -#include - -NONSHARABLE_CLASS(CSetNcmIapCommand) : public CNcmCommandBase -/** -Set the Ncm Iap Id into central repository -*/ - { -public: - enum TSetNcmIapCommandState - { - EIapId, //The command is in state of wait user input iap - EIapPriority //The command is in state of wait user input iap index - }; -public: - static CSetNcmIapCommand* NewL(CUsbNcmConsole& aUsb, TUint aKey); - ~CSetNcmIapCommand(); - - //Get the first IAP ID stored in central repository. - void GetDefaultIapL(TInt& aDefaultIap); - -public: - //From CNcmCommandBase - void DoCommandL(); - -private: - CSetNcmIapCommand(CUsbNcmConsole& aUsb, TUint aKey); - void ConstructL(); - -private: - //From CActive - void DoCancel(); - void RunL(); - TInt RunError(TInt aError); - -private: - //Display all IAPs stored in central repository which are used for Ncm - void ListAllNcmIapL(); - //Set the Iap Id inputed by user into central repository - void SetNcmIapL(); - - //Init work for run this command - void InitWorkL(); - //Stop work when finish or terminate this command - void EndWork(); - -private: - - TSetNcmIapCommandState iCommandState; - - //The console used to display iap info and get user input for ncm iap - CConsoleBase* iConsole; - //user current input - RBuf iChars; - //the Iap id user want to store in central repository - TInt iIapId; - //the position of the Iap id which will be stored in central repository - TInt iIndex; - //central repository handle - CRepository* iRepository; - //all Iaps get from central repository - RArray iRows; - - //followed are used for finding Iap Id stored in central repository - static const TUint KPartialKey = 0x01010000; - static const TUint KMask = 0xFFFF0000; - static const TInt KMaxNumOfChars = 255; - - - }; - - -_LIT(KSetIapMemo ,"Input the NcmIap you want to set:"); -_LIT(KSetIapIndexMemo, "Input the index of iap you want to set:"); -_LIT(KErrInput, "Error input. Input again.\n"); - -const TUid KNcmIapIdRepositoryUID = {0x10286a43}; - -#endif // SETNCMIAPCOMMAND_H - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/inc/simpancommand.h --- a/usbmgmt/usbmgrtest/t_ncm/inc/simpancommand.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -#ifndef SIMPANCOMMAND_H -#define SIMPANCOMMAND_H - -#include "commandengine.h" -#include - -// This is a local definition of this shared enum of P&S key values. These values should not be changed without changing -// the equivalent definition in the other IP bearer code. -enum TIPBearerCoexistenceStatus - { - ENoneIsActive, - ENcmIsActive, - EBTPanIsActive - }; - -// This is a local definition of this shared P&S id. This value should not be changed without changing -// the equivalent definition in the other IP bearer code. -const TInt KIPBearerCoexistenceProperty = 0x10286a95; - -// This is the identifer of the shared mutex used to allow safe read / write of the coexistence P&S key. -// This can only be changed if all other existing definitions of the mutex name are also changed. -_LIT(KIPBearerCoexistenceMutex, "IPBearerCoexistenceMutex"); - -//static _LIT_SECURITY_POLICY_PASS(KAllowAllPolicy); -//static _LIT_SECURITY_POLICY_C1(KNetworkControlPolicy, ECapabilityNetworkControl); - - -NONSHARABLE_CLASS(CSimPANCommand) : public CNcmCommandBase -/** -Simulate PAN has an active connection or not. -It is also response for display the exclusive state on main console -*/ - { -public: - static CSimPANCommand* NewL(CUsbNcmConsole& aUsb, TUint aKey); - ~CSimPANCommand(); - -public: - //From CNcmCommandBase - void DoCommandL(); - -private: - CSimPANCommand(CUsbNcmConsole& aUsb, TUint aKey); - void ConstructL(); - -private: - //From CActive - void RunL(); - void DoCancel(); - TInt RunError(TInt aError); - -private: - //Display the exclusive state on main screen - void DisplayExclusive(TInt aState); - //When the PAN is active, the command description should be - //changed to 'Simulate PAN disactive' - void ChangeDescription(); - -private: - //Indicate the PAN is active or not - TBool iSetPAN; - //The property which store the exclusive state - RProperty iNcmExclusiveProp; - }; - -#endif // SIMPANCOMMAND_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/inc/startwatchercommand.h --- a/usbmgmt/usbmgrtest/t_ncm/inc/startwatchercommand.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -#ifndef STARTWATCHERCOMMAND_H -#define STARTWATCHERCOMMAND_H - -#include "commandengine.h" - -class CDeviceWatcher; - -NONSHARABLE_CLASS(CStartWatcherCommand) : public CNcmCommandBase -/** -Set the test mode to run NCM automaticly when usb cable plugin. -*/ - { -public: - static CStartWatcherCommand* NewL(CUsbNcmConsole& aUsb, TUint aKey, CDeviceWatcher& aDeviceWatch); - ~CStartWatcherCommand(); - -public: - //From CNcmCommandBase - void DoCommandL(); - -private: - CStartWatcherCommand(CUsbNcmConsole& aUsb, TUint aKey, CDeviceWatcher& aDeviceWatch); - void ConstructL(); - -private: - CDeviceWatcher& iDeviceWatcher; - }; - -#endif // STARTWATCHERCOMMAND_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/inc/tcpcommand.h --- a/usbmgmt/usbmgrtest/t_ncm/inc/tcpcommand.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -#ifndef TCPCOMMAND_H -#define TCPCOMMAND_H - -#include "commandengine.h" - -//The max count of tcp test in a same time -const static TInt KMaxTcpTestCount = 5; - -class CTcpTestConsole; - -NONSHARABLE_CLASS(CTcpCommand) : public CNcmCommandBase -/** -Make TCP test: Create a tcp connection and tansfer data on it. -*/ - { -public: - static CTcpCommand* NewL(CUsbNcmConsole& aUsb, TUint aKey, TBool aIsTcp, TBool aIsServer); - ~CTcpCommand(); - -public: - //From CNcmCommandBase - void DoCommandL(); - -public: - void CloseTcpTest(TInt aIndex); - -private: - CTcpCommand(CUsbNcmConsole& aUsb, TUint aKey, TBool aIsTcp, TBool aIsServer); - void ConstructL(); - -private: - //Indicate the tcp type: ETrue - as TCP server; EFalse - as TCP client - TBool iIsServer; - TBool iIsTcp; - //Store the instances of tcp test console - CTcpTestConsole* iTestArray[KMaxTcpTestCount]; - }; - -#endif // TCPCOMMAND_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/inc/tcptest.h --- a/usbmgmt/usbmgrtest/t_ncm/inc/tcptest.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,190 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -#ifndef TCPTEST_H -#define TCPTEST_H - -#include -#include -#include - -class CTcpProcess : public CActive -/** -Run TCP test: Create a tcp connection and make data transfer on it. -*/ - { -public: - static CTcpProcess* NewL(CConsoleBase& aConsole, TInetAddr& aAddr, TInt aPort, TInt aSize, TBool aMode); - ~CTcpProcess(); - -private: - CTcpProcess(CConsoleBase& aConsole, TInetAddr& aAddr, TInt aPort, TInt aSize, TBool aMode); - void ConstructL(); - - void RecvDataL(); - TInt SendDataL(TDes8& aData, TInt aSize); - void PrintData(TDes8& aData); - -private: - //From CActive - virtual void RunL(); - virtual void DoCancel(); - TInt RunError(TInt aError); - -private: - enum TProcessState - { - ECreateConnection, //Create tcp connection - EDataTransfer //Data transfer - }; - -private: - CConsoleBase& iConsole; - - RSocketServ iSockServ; - RSocket iListenSocket; - RSocket iSocket; - - TInetAddr& iAddr; - TInt iPort; - - //The size of send buf and receive buf - TInt iSize; - - RBuf8 iRecvBuf; - RBuf8 iSendBuf; - - TSockXfrLength iRecvSize; - - TBool iMode; //ETrue: as a Server, and data transfer is receive first, then send back - //EFalse: as a client, and data transfer is send first, then receive. - - TProcessState iProcessState; - - }; - - -class CUdpProcess : public CActive - /** - Run TCP test: Create a udp connection and make data transfer on it. - */ -{ - public: - static CUdpProcess* NewL(CConsoleBase& aConsole, TInetAddr& aAddr, TInt aPort, TInt aSize, TBool aMode); - ~CUdpProcess(); - - private: - CUdpProcess(CConsoleBase& aConsole, TInetAddr& aAddr, TInt aPort, TInt aSize, TBool aMode); - void ConstructL(); - - void RecvDataL(); - TInt SendDataL(TDes8& aData, TInetAddr& aAddr, TInt aSize); - void PrintData(TDes8& aData); - - private: - //From CActive - virtual void RunL(); - virtual void DoCancel(); - TInt RunError(TInt aError); - - private: - enum TProcessState - { - EDataSending, //Data Sending - EDataTransfer //Data Recving - }; - - private: - CConsoleBase& iConsole; - - RSocketServ iSockServ; - RSocket iListenSocket; - RSocket iSocket; - - TInetAddr iAddr; - TInetAddr iPeerAddr; - TInt iPort; - - //The size of send buf and receive buf - TInt iSize; - - RBuf8 iRecvBuf; - RBuf8 iSendBuf; - - TSockXfrLength iRecvSize; - - TBool iMode; //ETrue: as a Server, and data transfer is receive first, then send back - //EFalse: as a client, and data transfer is send first, then receive. - - TProcessState iProcessState; - -}; - - -class CTcpCommand; -class CTcpTestConsole : public CActive -/** -The console of tcp test. -*/ - { -public: - static CTcpTestConsole* NewL(TBool aIsTcp, TBool aMode, TDesC& aDefautAddr, TInt aIndex, CTcpCommand& aOwner); - ~CTcpTestConsole(); - - TBool StartL(); - void Help(); - -private: - CTcpTestConsole(TBool aIsTcp, TBool aMode, TDesC& aDefautAddr, TInt aIndex, CTcpCommand& aOwner); - void ConstructL(); - -private: - //From CActive - virtual void RunL(); - virtual void DoCancel(); - TInt RunError(TInt aError); - -private: - enum TCommandMode - { - ECommandInit, //Get parameter from user input - ECommandRunning //tcp test run - }; - -private: - CConsoleBase* iConsole; - RBuf iChars; - TCommandMode iCommandMode; - - CTcpProcess* iTcp; - CUdpProcess* iUdp; - TBool iMode; //ETrue server EFalse client - TBool iIsTcp; - - //The defaut addr, format like 'addr port' (192.168.2.101 5000) - const TDesC& iDefaultAddr; - TInt iIndex; - CTcpCommand& iOwner; - - }; - -#endif //TCPTEST_H diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/sis/ncmtestconsole.pkg --- a/usbmgmt/usbmgrtest/t_ncm/sis/ncmtestconsole.pkg Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -; Installation file for Symbian OS 9.x for generic console application -; Installation file for ncmtestconsole EXE -; -; This is an auto-generated PKG file by Carbide. -; This file uses variables specific to Carbide builds that will not work -; on command-line builds. If you want to use this generated PKG file from the -; command-line tools you will need to modify the variables with the appropriate -; values: $(EPOCROOT), $(PLATFORM), $(TARGET) -; - -; -; UID is the exe's UID -; -#{"ncmtestconsole"},(0xE228E991),1,0,0 - - -;Localised Vendor name -%{"Vendor-EN"} - -;Unique Vendor name -:"Vendor" - -"$(EPOCROOT)Epoc32\release\$(PLATFORM)\$(TARGET)\ncmtestconsole.exe" -"!:\sys\bin\ncmtestconsole.exe" - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/src/commandengine.cpp --- a/usbmgmt/usbmgrtest/t_ncm/src/commandengine.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,249 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -#include "commandengine.h" -#include "ncmtestconsole.h" - -CNcmCommandEngine* CNcmCommandEngine::NewL(CUsbNcmConsole& aTestConsole) -/** -Constructs a CNcmCommandEngine object. - @param aTestConsole The main console -*/ - { - LOG_STATIC_FUNC_ENTRY - CNcmCommandEngine* self = new(ELeave) CNcmCommandEngine(aTestConsole); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -CNcmCommandEngine::~CNcmCommandEngine() - { - Cancel(); - RemoveAllCommand(); - } - -CNcmCommandEngine::CNcmCommandEngine(CUsbNcmConsole& aTestConsole) - : CActive(EPriorityStandard) - , iTestConsole(aTestConsole) - , iLastPage(0), iLastItem(-1), iRemainLine(COMMAND_MAX_COUNT_PER_PAGE) - { - CActiveScheduler::Add(this); - } - -void CNcmCommandEngine::ConstructL() - { - //wait user select command - iTestConsole.iConsole->Read(iStatus); - SetActive(); - } - -void CNcmCommandEngine::DoCancel() - { - iTestConsole.iConsole->ReadCancel(); - } - -void CNcmCommandEngine::RunL() - { - LOG_FUNC - - User::LeaveIfError(iStatus.Int()); - - TUint key = iTestConsole.iConsole->KeyCode(); - - __FLOG_STATIC1(KSubSys, KLogComponent , _L8("key = %c"), key); - - if((key >= '0') && (key <= '9')) - { - iTestConsole.ScheduleDraw(key-0x30); - } - else - { - CNcmCommandBase* command = NULL; - if(iCommandMap.Find(key)) - { - command = *(iCommandMap.Find(key)); - if(command) - { - command->DoCommandL(); - } - else - { - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("The command in hashmap is NULL")); - } - } - else - { - CUsbNcmConsoleEvent* event = CUsbNcmConsoleEvent::NewL(); - event->iEvent.AppendFormat(_L("G:Unknown:Key[%c]"), key); - iTestConsole.NotifyEvent(event); - } - - } - iTestConsole.iConsole->Read(iStatus); - - SetActive(); - } - -void CNcmCommandEngine::RegisterCommand(CNcmCommandBase* aCommand) -/** -Add command object into command map - @param aCommand a command which will be used by user -*/ - { - //Assert if aCommand is NULL - __ASSERT_ALWAYS(aCommand, Panic(ENcmCommandIsNull)); - //Assert if the key exists in command map - __ASSERT_ALWAYS(!iCommandMap.Find(aCommand->Key()), Panic(ENcmCommandKeyExists)); - - //add command - TInt err = iCommandMap.Insert(aCommand->Key(), aCommand); - if(err != KErrNone) - { - User::Panic(_L("RegisterCommand"), err); - } - - //make the command to be displayed in which page, which line - TInt line = (aCommand->Description().Length() + NUM_CHARACTERS_ON_LINE + 4) / (NUM_CHARACTERS_ON_LINE); - iRemainLine -= line; - if(iRemainLine < 0) - { - iLastPage ++; - iRemainLine = COMMAND_MAX_COUNT_PER_PAGE - line; - iLastItem = 0; - } - else - { - iLastItem ++; - } - iCommandKeys[iLastPage][iLastItem] = aCommand->Key(); - - } - -void CNcmCommandEngine::RemoveAllCommand() -/** -Destroy all commands in command map -*/ - { - CNcmCommandBase* currentitem; - - RHashMap::TIter hashMapIter(iCommandMap); - TInt count = iCommandMap.Count(); - for(TInt i=0; i< count; i++) - { - currentitem = *(hashMapIter.NextValue()); - if(currentitem) - { - hashMapIter.RemoveCurrent(); - delete currentitem; - } - } - iCommandMap.Close(); - - } - - -void CNcmCommandEngine::PrintHelp(TInt aPage) -/** -Get command help info (command key - command description) -@param aPage the command help info of specified page -*/ - { - LOG_FUNC - - __ASSERT_ALWAYS(((aPage <= COMMAND_MAX_PAGE) && (aPage > 0)), Panic(ENcmArrayBound)); - - TUint key = iCommandKeys[aPage-1][0]; - if(key == 0) - { - //No commands in this page - iTestConsole.iConsole->Printf(_L("No commands\n")); - } - else - { - //Display command - TInt i = 0; - while((key != 0) && (i < COMMAND_MAX_COUNT_PER_PAGE)) - { - CNcmCommandBase* command = NULL; - command = *(iCommandMap.Find(key)); - iTestConsole.iConsole->Printf(_L("%c - %S\n"), command->Key(), &command->Description()); - i++; - key = iCommandKeys[aPage-1][i]; - } - } - - } - -CNcmCommandBase::CNcmCommandBase(TInt aPriority, CUsbNcmConsole& aConsole, TUint aKey) - : CActive(aPriority), iTestConsole(aConsole), iKey(aKey) -/** -Constructor -@param aPriority Active object's priority -@param aConsole The main console -@param aKey command key -*/ - { - } - -CNcmCommandBase::~CNcmCommandBase() - { - } - -TUint CNcmCommandBase::Key() const - { - return iKey; - } - -void CNcmCommandBase::SetKey(TUint aKey) - { - iKey = aKey; - } - - -const TDesC& CNcmCommandBase::Description() - { - return iDescription; - } - -void CNcmCommandBase::SetDescription(const TDesC& aDescription) -/** -Set command description -@param aDescription the new description for the command -*/ - { - iDescription.SetLength(0); - iDescription.Copy(aDescription.Left(NUM_CHARACTERS_ON_LINE)); - } -void CNcmCommandBase::RunL() - { - } - -void CNcmCommandBase::DoCancel() - { - } -TInt CNcmCommandEngine::RunError(TInt aError) - { - User::Panic(_L("CNcmCommandEngine"), aError); - return aError; - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/src/devicewatcher.cpp --- a/usbmgmt/usbmgrtest/t_ncm/src/devicewatcher.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,179 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -#include "devicewatcher.h" -#include "ncmtestconsole.h" - -CDeviceWatcher* CDeviceWatcher::NewL(CUsbNcmConsole& aTestConsole) - { - LOG_STATIC_FUNC_ENTRY - - CDeviceWatcher* self = new(ELeave) CDeviceWatcher(aTestConsole); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } -CDeviceWatcher::~CDeviceWatcher() - { - Cancel(); - iLdd.Close(); - } - -CDeviceWatcher::CDeviceWatcher(CUsbNcmConsole& aTestConsole) - : CActive(EPriorityStandard), iTestConsole(aTestConsole), iWatchMode(EWatchMode) - { - CActiveScheduler::Add(this); - } - -void CDeviceWatcher::ConstructL() - { - User::LeaveIfError(iLdd.Open(0)); - iLdd.AlternateDeviceStatusNotify(iStatus, iDeviceState); - - SetActive(); - - //Get current device state - TUsbcDeviceState deviceState; - User::LeaveIfError(iLdd.DeviceStatus(deviceState)); - - DisplayDeviceState(deviceState); - - } - -void CDeviceWatcher::DoCancel() - { - iLdd.AlternateDeviceStatusNotifyCancel(); - } - -void CDeviceWatcher::RunL() - { - //Get USB device state change - iLdd.AlternateDeviceStatusNotify(iStatus, iDeviceState); - SetActive(); - - LOG_FUNC - __FLOG_STATIC1(KSubSys, KLogComponent , _L8("CDeviceWatcherCommand::RunL - iStatus = %d"), iStatus.Int()); - - //Display the current state on main console - DisplayDeviceState(iDeviceState); - - TUsbServiceState serviceState; - User::LeaveIfError(iTestConsole.Usb().GetServiceState(serviceState)); - - __FLOG_STATIC3(KSubSys, KLogComponent , - _L8("iDeviceState = %d, serviceState = %d, iStartNcm=%d"), - iDeviceState, serviceState, iStartNcm); - - iOldDeviceState = iDeviceState; - } - -TInt CDeviceWatcher::RunError(TInt aError) - { - User::Panic(_L("CDeviceWatcher"), aError); - return aError; - } - -TDeviceWatchMode CDeviceWatcher::GetWatchMode() const - { - return iWatchMode; - } - -void CDeviceWatcher::SetWatchMode(TDeviceWatchMode aWatchMode) -/** -Set the watch mode : If the mode is EWatchMode, only monitor the USB device status. -If the mode is EWatchAndStartMode, when cable plugin, NCM will be started automaticly - @param aWatchMode The mode user want to set -*/ - { - iWatchMode = aWatchMode; - switch(iWatchMode) - { - case EWatchMode: - iStartNcm = EFalse; - break; - case EWatchAndStartMode: - iStartNcm = ETrue; - break; - } - //When USB device state changed, CDeviceWatcher will check iStartNcm. The detail please see - //RunL() - } - -void CDeviceWatcher::DisplayDeviceState(TUint aDeviceState) -/** -Display device status on main console - @param aDeviceState the device state -*/ - { - TBuf devStatus; - switch(aDeviceState) - { - case EUsbcDeviceStateUndefined: - devStatus = - // 12345678901 - _L("Undefined "); - break; - - case EUsbcDeviceStateDefault: - devStatus = - // 12345678901 - _L("Default "); - break; - - case EUsbcDeviceStateAttached: - devStatus = - // 12345678901 - _L("Attached "); - break; - - case EUsbcDeviceStatePowered: - devStatus = - // 12345678901 - _L("Powered "); - break; - - case EUsbcDeviceStateConfigured: - devStatus = - // 12345678901 - _L("Configured "); - break; - - case EUsbcDeviceStateAddress: - devStatus = - // 12345678901 - _L("Address "); - break; - - case EUsbcDeviceStateSuspended: - devStatus = - // 12345678901 - _L("Suspended "); - break; - default: - devStatus = - // 12345678901 - _L("Unknown "); - break; - } - iTestConsole.SetDisplayItem(EUsbDeviceStateItem, devStatus); - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/src/exitcommand.cpp --- a/usbmgmt/usbmgrtest/t_ncm/src/exitcommand.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -#include "exitcommand.h" -#include "ncmtestconsole.h" - -_LIT(KExitCommandDescription, "Exit"); - -CExitCommand* CExitCommand::NewL(CUsbNcmConsole& aTestConsole, TUint aKey) - { - LOG_STATIC_FUNC_ENTRY - - CExitCommand* self = new(ELeave) CExitCommand(aTestConsole, aKey); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } -CExitCommand::~CExitCommand() - { - } - -CExitCommand::CExitCommand(CUsbNcmConsole& aTestConsole, TUint aKey) - : CNcmCommandBase(EPriorityStandard, aTestConsole, aKey) - { - } - -void CExitCommand::ConstructL() - { - SetDescription(KExitCommandDescription()); - } - -void CExitCommand::DoCommandL() - { - LOG_FUNC - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("CExitCommand::DoCommandL - Stop scheduler")); - - //Quit the main console - iTestConsole.Stop(); - } - - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/src/ncmtestconsole.cpp --- a/usbmgmt/usbmgrtest/t_ncm/src/ncmtestconsole.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,565 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - - -#include "ncmtestconsole.h" -#include "ncmtestdefines.hrh" -#include "commandengine.h" -#include "devicewatcher.h" -#include "servicewatcher.h" -#include "ncmwatcher.h" -#include "exitcommand.h" -#include "setncmiapcommand.h" -#include "simpancommand.h" -#include "tcpcommand.h" - -#include -#include -#include -#include - -//#include -using namespace UsbNcm; - -//The app parameter -_LIT(KArgDemo, "DEMO"); - -//Set the display item length -//every display item has fixed length. It will be displayed screen permanently. -//The details about how to use display item is in CUsbNcmConsole::DrawL() -TInt gDisplayItemLength[] = { - DISPLAY_USB_SERVICE_STATE_LEN, //EUsbServiceStateItem - DISPLAY_USB_DEVICE_STATE_LEN, //EUsbDeviceStateItem - DISPLAY_NCM_CONN_STATE_LEN, //ENcmConnStatusItem - DISPLAY_NCM_CONN_IP_LEN, //ENcmConnIpItem - DISPLAY_UPLINK_CONN_STATE_LEN, //EUplinkConnStatusItem - DISPLAY_UPLINK_CONN_IP_LEN, //EUplinkConnIpItem - DISPLAY_NCM_BTPAN_LEN, //ENcmBtPanItem - DISPLAY_AGENT_STATE_LEN, //ENcmAgentStateItem - DISPLAY_AUTH_SETTING_LEN, //EAuthorisationSettingItem - DISPLAY_NCM_CONNECTION_STATE - }; - -void Panic(TInt aPanic) - { - User::Panic(_L("NcmTestConsole"), aPanic); - } - - -void RunConsoleL() - { - TInt cmdLineLength(User::CommandLineLength()); - HBufC* cmdLine = HBufC::NewMaxLC(cmdLineLength); - TPtr cmdLinePtr = cmdLine->Des(); - User::CommandLine(cmdLinePtr); - - TLex args(*cmdLine); - // args are separated by spaces - args.SkipSpace(); - - TPtrC cmdToken = args.NextToken(); - HBufC* tc = HBufC::NewLC(80); - *tc = cmdToken; - - TBool isDemo = EFalse; - - //Find if there is 'DEMO' or not. - while (tc->Length()) - { - TInt pos = tc->FindF(KArgDemo); - if ( pos != KErrNotFound ) - { - isDemo = ETrue; - break; - } - - // next parameter - *tc = args.NextToken(); - } - CleanupStack::PopAndDestroy(tc); - CleanupStack::PopAndDestroy(cmdLine); - - CUsbNcmConsole* console = CUsbNcmConsole::NewLC(isDemo); - console->StartL(); - CleanupStack::PopAndDestroy(console); - } - -TInt E32Main() - { - __UHEAP_MARK; - CTrapCleanup* cleanup = CTrapCleanup::New(); - CActiveScheduler* activeScheduler = new CActiveScheduler; - TInt err = KErrNoMemory; - if(cleanup && activeScheduler) - { - CActiveScheduler::Install(activeScheduler); - TRAP(err,RunConsoleL()); - } - delete activeScheduler; - delete cleanup; - __UHEAP_MARKEND; - return err; - } - -CUsbNcmConsoleEvent* CUsbNcmConsoleEvent::NewL() - { - CUsbNcmConsoleEvent* self = new(ELeave) CUsbNcmConsoleEvent(); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - - } - -CUsbNcmConsoleEvent::CUsbNcmConsoleEvent() - { - } - -CUsbNcmConsoleEvent::~CUsbNcmConsoleEvent() - { - iLink.Deque(); - iEvent.Close(); - } - -void CUsbNcmConsoleEvent::ConstructL() - { - User::LeaveIfError(iEvent.Create(NUM_CHARACTERS_ON_LINE-1)); - } - - -CUsbNcmConsole* CUsbNcmConsole::NewLC(TBool aDemo) -/** -Constructs a CUsbNcmConsole object. - @param aDemo Indicate start NCM control app and NCM automaticly or manually - -When iDemo is ETrue, means ncmtestconsole starts as a demo. It will ask user to set ncm iap and -uplink iap.Then user can experience the NCM function by plug/unplug usb cable. -*/ - { - LOG_STATIC_FUNC_ENTRY - - CUsbNcmConsole* self = new(ELeave) CUsbNcmConsole(aDemo); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -CUsbNcmConsole::~CUsbNcmConsole() - { - LOG_FUNC - - //If Ncm control app is not stopped, stop it. - //destroy all commands - delete iKeys; - - //destroy event list - TDblQueIter iter(iEventList); - CUsbNcmConsoleEvent* event = NULL; - while((event = iter++) != NULL) - { - delete event; - } - - //delete iStartWatcherCallback; - - //destroy all watches - delete iSharedStateWatcher; - delete iDeviceWatcher; - delete iServiceWatcher; - - iUsb.Close(); - - delete iConsole; - - //Destroy all display items - for(TInt i=0; iRegisterCommand(command); - //Get the default iap used by ncm - TInt defaultIap = 0; - ((CSetNcmIapCommand*)command)->GetDefaultIapL(defaultIap); - SetLocalIapId(defaultIap); - - //the command to simulate PAN actvie/inactive - command = CSimPANCommand::NewL(*this, 'p'); - iKeys->RegisterCommand(command); - - //the command to create a connection from PC to H4 and make data transfer - command = CTcpCommand::NewL(*this, 'v', ETrue, ETrue); - iKeys->RegisterCommand(command); - //the command to create a connection from H4 to PC and make data transfer - command = CTcpCommand::NewL(*this, 'i', ETrue, EFalse); - iKeys->RegisterCommand(command); - - command = CTcpCommand::NewL(*this , 'r', EFalse, ETrue); - iKeys->RegisterCommand(command); - command = CTcpCommand::NewL(*this , 's', EFalse, EFalse); - iKeys->RegisterCommand(command); - - //here to add new command - - //the command to quit - command = CExitCommand::NewL(*this, 'q'); - iKeys->RegisterCommand(command); - - //Monitor the status published by NCM agent - iSharedStateWatcher = CSharedStateWatcher::NewL(*this); - } - -void CUsbNcmConsole::StartL() - { - //Output the init state to screen - DrawL(); - //Do StartWatcherCommand if 'demo' is the command parameter - if(iDemo) - { -// iStartWatcherCallback->CallBack(); - } - CActiveScheduler::Start(); - } - -void CUsbNcmConsole::Stop() const - { - CActiveScheduler::Stop(); - } - -void CUsbNcmConsole::DoCancel() - { - } - -void CUsbNcmConsole::RunL() - { - DrawL(); - } - -TInt CUsbNcmConsole::RunError(TInt aError) - { - User::Panic(_L("CUsbNcmConsole"), aError); - return aError; - } - -void CUsbNcmConsole::ScheduleDraw(TUint aKey) -/** -Called by commands and monitors.To notify main console there's new infomation to show. - @param aKey Display type. '1'-'9' - display the command help - 'E' - display the events. - '0' - back from command help -*/ - { - iHelp = aKey; - if(!IsActive()) - { - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete(status, KErrNone); - } - } - -RUsb& CUsbNcmConsole::Usb() - { - return iUsb; - } - -void CUsbNcmConsole::SetLocalIapId(TInt aId) -/** -Set the Ncm Iap which will be monitored and displayed on screen - @param aId The Ncm Iap Id -*/ - { - iLocalIapId = aId; - ScheduleDraw('E'); - } - -void CUsbNcmConsole::NotifyEvent(CUsbNcmConsoleEvent* aEvent) -/** -Called by commands and monitors. To tell main console to display the new event. - @param aEvent Event reported by commands and monitors -*/ - { - //Console can't display a NULL event - __ASSERT_ALWAYS(aEvent, Panic(ENcmEventIsNull)); - //Console can't display a string more than one line - __ASSERT_ALWAYS(aEvent->iEvent.Length() <= NUM_CHARACTERS_ON_LINE, Panic(ENcmEventLengthValid)); - - iEventList.AddFirst(*aEvent); - CUsbNcmConsoleEvent* theLastEvent = iEventList.Last(); - delete theLastEvent; - - ScheduleDraw('E'); - } - -void CUsbNcmConsole::DrawL() -/** -Display all infomation on screen. -There are two parts on the screen. One is permanent info. It will display all kinds of states such as USB device state, -USB service state, NCM state, and so on. The other is event info show. It will display the events reported by monitors -and commands. It also used to show command help when user need command help. -*/ - { - iConsole->ClearScreen(); - // First line is the server version number - TVersionName versionName = iVersion.Name(); - iConsole->Printf(_L( - // 1 2 3 4 5 - // 12345678901234567890123456789012345678901234567890123 - "Server Version: %S %S\n" - ), - &versionName, &iDisplayArray[EAuthorisationSettingItem] - ); - - - iConsole->Printf(_L("Service: %S Device: %S\n"), - &iDisplayArray[EUsbServiceStateItem], &iDisplayArray[EUsbDeviceStateItem]); - iConsole->Printf(_L("NCM Iap:%2d state:%S IP:%S\n"), - iLocalIapId, &iDisplayArray[ENcmConnStatusItem], &iDisplayArray[ENcmConnIpItem]); - iConsole->Printf(_L("Active:%S NcmConnection:%S\n"), - &iDisplayArray[ENcmBtPanItem], &iDisplayArray[ENcmAgentStateItem]); - iConsole->Printf(_L("Ncm connection:%S\n"), &iDisplayArray[ENcmConnectionStateItem]); - - if ((iHelp > 0) && (iHelp <=9)) - { - iConsole->Printf(_L("Press 0 to quit help\n\n")); - //Display the command help - iKeys->PrintHelp(iHelp); - } - else - { - iConsole->Printf(_L("Press 1 to 9 to get menu help\n\n")); - //Display the event list - TDblQueIter iter(iEventList); - CUsbNcmConsoleEvent* event = NULL; - while((event = iter++) != NULL) - { - iConsole->Printf(event->iEvent.Left(NUM_CHARACTERS_ON_LINE-1)); - iConsole->Printf(_L("\n")); - } - } - } - - -void CUsbNcmConsole::CreateDisplayItemL() -/** -Init the display item. -*/ - { - for(TInt i = 0; i < ELastItem; i++) - { - RBuf buf; - iDisplayArray.AppendL(buf); - iDisplayArray[i].CreateL(gDisplayItemLength[i]); - } - } - -void CUsbNcmConsole::SetDisplayItem(TInt aIndex, TDes& aInfo) -/** -Called by commands and monitors to show the changed info in screen -*/ - { - //Prevent array is out of bound - __ASSERT_ALWAYS(((aIndex < ELastItem) && (aIndex >= 0)), Panic(ENcmDisplayItemVaild)); - - iDisplayArray[aIndex].SetLength(0); - iDisplayArray[aIndex].Copy(aInfo); - - ScheduleDraw('E'); - } - -TInt CUsbNcmConsole::LocalIapId() const - { - return iLocalIapId; - } - -const TDes& CUsbNcmConsole::GetDisplayItem(TInt aIndex) - { - //Prevent array is out of bound - __ASSERT_ALWAYS(((aIndex < ELastItem) && (aIndex >= 0)), Panic(ENcmDisplayItemVaild)); - - return iDisplayArray[aIndex]; - } - - -TInt CUsbNcmConsole::DoCommandCallback(TAny *aThisPtr) - { - CNcmCommandBase* command = static_cast(aThisPtr); - TRAPD(err,command->DoCommandL()); - if(err != KErrNone) - { - User::Panic(_L("DoCommandCallback"), err); - } - return err; - } - - -TInt CUsbNcmConsole::DrawAvailableIapsL() -/** -Display commsdb's iaps on console -@return the count of iaps -*/ - { - LOG_FUNC - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("CNcmTestUtil::DrawAvailableIapsL")); - - iConsole->Printf(_L("CommDB IAPs:\n")); - iConsole->Printf(_L("ID: Name\n")); - - //Get commsdb handle - CCommsDatabase* db = CCommsDatabase::NewL(); - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Get CommsDatabase ok")); - CleanupStack::PushL(db); - - //Get Iap table infomation - CCommsDbTableView* iapTableView = db->OpenTableLC(TPtrC(IAP)); - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("OpenTableLC ok")); - - - TUint32 iapId; - TBuf<128> iapName; - TInt iapCount = 0; - - for (TInt iapTableErr = iapTableView->GotoFirstRecord(); iapTableErr == KErrNone; iapTableErr = iapTableView->GotoNextRecord()) - { - //Get every IAP - iapTableView->ReadTextL(TPtrC(COMMDB_NAME), iapName); - iapTableView->ReadUintL(TPtrC(COMMDB_ID), iapId); - - __FLOG_STATIC2(KSubSys, KLogComponent , _L8("Read: %d: %S"), iapId, &iapName); - - iConsole->Printf(_L("%d: %S\n"), iapId, &iapName); - iapCount++; - } - - if (0 == iapCount) - { - iConsole->Printf(_L("No available IAP!\n")); - } - - CleanupStack::PopAndDestroy(2); // iapTableView, db - return iapCount; - - } - -TBool CUsbNcmConsole::AttachConnectionL(TInt aIap, RConnection& aConnection) -/** -Try to attach the connection specified by iIapId. If attach failed or no specified connection,return false -*/ - { - LOG_FUNC - __FLOG_STATIC1(KSubSys, KLogComponent , _L8("AttachConnectionL aIap=%d"), aIap); - - TBool result = ETrue; - TUint count = 0; - //Get active connections - User::LeaveIfError(aConnection.EnumerateConnections(count)); - __FLOG_STATIC2(KSubSys, KLogComponent , _L8("active connection count = %d, watch iap = %d"), count, aIap); - - TBool hasConnection = EFalse; - for(TInt i = 1; i <= count; i++) - { - TPckgBuf info; - User::LeaveIfError(aConnection.GetConnectionInfo(i,info)); - TUint32 id = info().iIapId; - __FLOG_STATIC2(KSubSys, KLogComponent , _L8("aIap=%d, id=%d"), aIap, id); - - if(id == aIap) - { - hasConnection = ETrue; - //The connection is the connection specified by aIap - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Got it!")); - - //Attach the connection - TInt err = aConnection.Attach(info, RConnection::EAttachTypeMonitor); - if(err != KErrNone) - { - result = EFalse; - __FLOG_STATIC1(KSubSys, KLogComponent , _L8("Attach error[%d]"), err); - } - else - { - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Attach it!")); - } - break; - } - } - - if(!hasConnection) - { - //connection not found; - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("No connection found!")); - result = EFalse; - } - - return result; - - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/src/ncmwatcher.cpp --- a/usbmgmt/usbmgrtest/t_ncm/src/ncmwatcher.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,103 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -#include "ncmwatcher.h" -#include "ncmtestconsole.h" - -using namespace UsbNcm; - -// -// CSharedStateWatcher -// -CSharedStateWatcher* CSharedStateWatcher::NewL(CUsbNcmConsole& aConsole) - { - CSharedStateWatcher* self = new (ELeave) CSharedStateWatcher(aConsole); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -CSharedStateWatcher::CSharedStateWatcher(CUsbNcmConsole& aConsole) : - CActive(EPriorityStandard), iConsole(aConsole), iNcmStateDes( - reinterpret_cast (&iSharedState), sizeof(iSharedState), - sizeof(iSharedState)) - { - CActiveScheduler::Add(this); - } - -CSharedStateWatcher::~CSharedStateWatcher() - { - Cancel(); - iProperty.Close(); - } - -void CSharedStateWatcher::ConstructL() - { - User::LeaveIfError(iProperty.Attach(KC32ExeSid, KKeyNcmConnectionEvent)); - reportState(); - iProperty.Subscribe(iStatus); - SetActive(); - } - -void CSharedStateWatcher::RunL() - { - TInt err = iStatus.Int(); - iProperty.Subscribe(iStatus); - SetActive(); - - if (KErrNone == err) - { - reportState(); - } - } - -void CSharedStateWatcher::reportState() - { - iProperty.Get(iNcmStateDes); - TBuf stateBuf; - switch (iSharedState.iState) - { - case ENcmStateDisconnected: - stateBuf = _L("DisConnected"); - break; - case ENcmStateConnected: - stateBuf = _L("Connected"); - break; - default: - stateBuf = _L("Unknown"); - break; - } - __FLOG_STATIC2(KSubSys, KLogComponent , - _L8("NCM state=%d, iapid=%d"), iSharedState.iState, iSharedState.iIapId); - - iConsole.SetLocalIapId(iSharedState.iIapId); - iConsole.SetDisplayItem(ENcmConnectionStateItem, stateBuf); - } - -/** - Stop checking the shared state - */ -void CSharedStateWatcher::DoCancel() - { - iProperty.Cancel(); - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/src/servicewatcher.cpp --- a/usbmgmt/usbmgrtest/t_ncm/src/servicewatcher.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,135 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -#include "servicewatcher.h" -#include "ncmtestconsole.h" -#include "ncmtestdefines.hrh" - -CServiceWatcher* CServiceWatcher::NewL(CUsbNcmConsole& aTestConsole) - { - LOG_STATIC_FUNC_ENTRY - - CServiceWatcher* self = new(ELeave) CServiceWatcher(aTestConsole); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } -CServiceWatcher::~CServiceWatcher() - { - Cancel(); - } - -CServiceWatcher::CServiceWatcher(CUsbNcmConsole& aTestConsole) - : CActive(EPriorityStandard), iTestConsole(aTestConsole) - { - CActiveScheduler::Add(this); - } - -void CServiceWatcher::ConstructL() - { - iTestConsole.Usb().ServiceStateNotification(iServiceState, iStatus); - SetActive(); - - TUsbServiceState serviceState; - User::LeaveIfError(iTestConsole.Usb().GetServiceState(serviceState)); - DisplayServiceState(serviceState); - } - -void CServiceWatcher::DoCancel() - { - iTestConsole.Usb().ServiceStateNotificationCancel(); - } - -void CServiceWatcher::RunL() - { - LOG_FUNC - __FLOG_STATIC2(KSubSys, KLogComponent , - _L8("CServiceWatcherCommand::RunL - iStatus = %d, iServiceState = %d"), - iStatus.Int(), iServiceState); - - User::LeaveIfError(iStatus.Int()); - - iTestConsole.Usb().ServiceStateNotification(iServiceState, iStatus); - SetActive(); - - iTestConsole.Usb().GetServiceState(iServiceState); - //Display the service state on main console - DisplayServiceState(iServiceState); - - } - -TInt CServiceWatcher::RunError(TInt aError) - { - User::Panic(_L("CServiceWatcher"), aError); - return aError; - } - -void CServiceWatcher::DisplayServiceState(TUsbServiceState aServiceState) -/** -Display the service state on main console - @param aServiceState Service state -*/ - { - TBuf servStatus; - switch(aServiceState) - { - case EUsbServiceIdle: - servStatus = - // 12345678901 - _L("Idle "); - break; - - case EUsbServiceStarting: - servStatus = - // 12345678901 - _L("Starting "); - break; - - case EUsbServiceStarted: - servStatus = - // 12345678901 - _L("Started "); - break; - - case EUsbServiceStopping: - servStatus = - // 12345678901 - _L("Stopping "); - break; - - case EUsbServiceFatalError: - servStatus = - // 12345678901 - _L("Error "); - break; - - default: - servStatus = - _L("Unknown "); - - break; - } - - iTestConsole.SetDisplayItem(EUsbServiceStateItem, servStatus); - - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/src/setncmiapcommand.cpp --- a/usbmgmt/usbmgrtest/t_ncm/src/setncmiapcommand.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,308 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -#include "setncmiapcommand.h" -#include "ncmtestconsole.h" - -_LIT(KSetNcmIapCommandDescription, "Set Ncm Iap ID"); - -CSetNcmIapCommand* CSetNcmIapCommand::NewL(CUsbNcmConsole& aTestConsole, TUint aKey) - { - LOG_STATIC_FUNC_ENTRY - - CSetNcmIapCommand* self = new(ELeave) CSetNcmIapCommand(aTestConsole, aKey); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } -CSetNcmIapCommand::~CSetNcmIapCommand() - { - EndWork(); - } - -CSetNcmIapCommand::CSetNcmIapCommand(CUsbNcmConsole& aTestConsole, TUint aKey) - : CNcmCommandBase(EPriorityStandard, aTestConsole, aKey) - { - CActiveScheduler::Add(this); - } - -void CSetNcmIapCommand::ConstructL() - { - SetDescription(KSetNcmIapCommandDescription()); - } - -void CSetNcmIapCommand::DoCommandL() -/** -Main function of set ncm iap. -It will start a new console to display all Iaps in commsdb and current setting for ncm. -Then prompt user to input ncm iap id and the index of this iap will be placed in central -repository. Press 'ESC' for give up this function. After the setting is successful, the -console will be destroyed and return to main console -*/ - { - LOG_FUNC - - if(!IsActive()) - { - //If the console has existed, close the old console. The work on old console will be - //gived up. - if(iConsole) - { - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Close old console")); - EndWork(); - } - InitWorkL(); - - iConsole->Printf(_L("Press \'ESC\' to exit without change\n")); - - //Display all iaps in commsdb - ListAllNcmIapL(); - - //wait user input iap id - iConsole->Printf(KSetIapMemo()); - iCommandState = EIapId; - iConsole->Read(iStatus); - SetActive(); - } - } - -void CSetNcmIapCommand::ListAllNcmIapL() -/** -Display all iaps in commsdb on console and get current config in cental repoistory -*/ - { - LOG_FUNC - - //Display commsdb's iaps - TInt iapcount = iTestConsole.DrawAvailableIapsL(); - - TInt iapId = 0; - - //Get iap config from central repository - TInt err = iRepository->FindL(KPartialKey, KMask, iRows); - if(err == KErrNone) - { - TUint count = iRows.Count(); - for (TInt row = 0; row < count; ++row) - { - // Read each IAP ID - User::LeaveIfError(iRepository->Get(iRows[row], iapId)); - __FLOG_STATIC2(KSubSys, KLogComponent , _L8("index[%d]: iap = %d"), row, iapId); - iConsole->Printf(_L("index[%d]: iap = %d\n"), row, iapId); - } - } - else - { - __FLOG_STATIC1(KSubSys, KLogComponent , _L8("FindL() err[%d]"), err); - } - } - -void CSetNcmIapCommand::GetDefaultIapL(TInt& aDefaultIap) -/** -Get the default iap id (The first one) stored in central repository. -@return the default iap id -*/ - { - LOG_FUNC - aDefaultIap = 13; - return ; - } - -void CSetNcmIapCommand::SetNcmIapL() -/** -Set iap id into central repository. The iap id is iIapId. The place of iap id in central -repository is iIndex. iIndex is started from 0. If the iIndex is not exist in central -repository, iIapId will be placed at last place. -*/ - { - LOG_FUNC - - TUint count = iRows.Count(); - __FLOG_STATIC1(KSubSys, KLogComponent , _L8("now iap count = %d"), count); - - TInt idx; - if(iIndex >= count) - { - //iIndex is not exist in central repository, create a new entry in central repository - idx = iRows[count-1]+1; - User::LeaveIfError(iRepository->Create(idx, iIapId)); - __FLOG_STATIC2(KSubSys, KLogComponent , _L8("add iap: idx = %d, iIapId"), idx, iIapId); - } - else - { - //iIndex exists, just set in the new value - idx = iRows[iIndex]; - User::LeaveIfError(iRepository->Set(idx, iIapId)); - __FLOG_STATIC2(KSubSys, KLogComponent , _L8("set iap: aIdx = %d, iIapId"), idx, iIapId); - } - - } - -void CSetNcmIapCommand::RunL() - { - LOG_FUNC - __FLOG_STATIC1(KSubSys, KLogComponent , _L8("CSetNcmIapCommand::RunL - iStatus = %d"), iStatus.Int()); - - User::LeaveIfError(iStatus.Int()); - - TKeyCode code = iConsole->KeyCode(); - switch(code) - { - case EKeyEnter: - { - iConsole->Printf(_L("\n")); - - //get value - TInt val; - TBool typeErr = EFalse; - if(iChars.Length() != 0) - { - TLex lex(iChars); - lex.SkipSpaceAndMark(); - - if(KErrNone != lex.Val(val)) - { - typeErr = ETrue; - } - } - else - { - typeErr = ETrue; - } - - if(typeErr) - { - //Prompt user input again - iConsole->Printf(KErrInput()); - iConsole->Printf(KSetIapMemo()); - iChars.SetLength(0); - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Input error")); - break; - } - - //The input is correct - __FLOG_STATIC1(KSubSys, KLogComponent , _L8("Get val = %d"), val); - - if(iCommandState == EIapId) - { - //if the command state is wait iap id, now get the iap id, wait for iap index - iIapId = val; - iChars.SetLength(0); - iConsole->Printf(KSetIapIndexMemo()); - iCommandState = EIapPriority; - } - else //(iCommandState == EIapPriority) - { - //if the command state is wait iap index, now the index. set into central repoistory. - //Then destroy the current console and update the value displayed on main console if the - //setting value is ncm default value. - iIndex = val; - SetNcmIapL(); - EndWork(); - if(iIndex == 0) - { - iTestConsole.SetLocalIapId(iIapId); - } - __FLOG_STATIC2(KSubSys, KLogComponent , _L8("Set Ncm Iap, idx = %d, id = %d"), - iIndex, iIapId); - - return; - } - } - break; - case EKeyEscape: - //delete this; - EndWork(); - return; - case EKeyBackspace: - if(iChars.Length() > 0) - { - iConsole->SetCursorPosRel(TPoint(-1, 0)); - iConsole->ClearToEndOfLine(); - iChars.SetLength(iChars.Length()-1); - } - break; - default: - iChars.Append(code); - iConsole->Printf(_L("%c"), code); - break; - } - iConsole->Read(iStatus); - SetActive(); - - } - -void CSetNcmIapCommand::DoCancel() - { - iConsole->ReadCancel(); - } - -TInt CSetNcmIapCommand::RunError(TInt aError) - { - User::Panic(_L("CSetNcmIapCommand"), aError); - return aError; - } - -void CSetNcmIapCommand::InitWorkL() -/** -Initialize work. Including start a new console, create buf for getting user input, get repoistory handle. -*/ - { - LOG_FUNC - - if(!iConsole) - { - iConsole = Console::NewL(_L("Set Ncm IAP Console"), TSize(-1,-1)); - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Create Console ok!")); - - User::LeaveIfError(iChars.Create(KMaxNumOfChars)); - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Create iChars ok!")); - - iRepository = CRepository::NewL(KNcmIapIdRepositoryUID); - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Get CRepository ok!")); - - iIapId = 1; - iIndex = 0; - } - } - -void CSetNcmIapCommand::EndWork() -/** -Finalize work. Including delete console, delete the buf used for getting user input, close repoistory handle. -*/ - { - LOG_FUNC - - if(iConsole) - { - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Destroy console...")); - Cancel(); - iChars.Close(); - iRows.Close(); - delete iRepository; - delete iConsole; - iConsole = NULL; - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Destroy console ok!")); - } - } - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/src/simpancommand.cpp --- a/usbmgmt/usbmgrtest/t_ncm/src/simpancommand.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,269 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -#include - -#include "simpancommand.h" -#include "ncmtestconsole.h" - -static _LIT_SECURITY_POLICY_PASS(KAllowAllPolicy); -static _LIT_SECURITY_POLICY_C1(KNetworkControlPolicy, ECapabilityNetworkControl); - -_LIT(KSimPANCommandActive, "Simulate PAN connection is active"); -_LIT(KSimPANCommandNone, "Simulate PAN connection is not active"); - -CSimPANCommand* CSimPANCommand::NewL(CUsbNcmConsole& aTestConsole, TUint aKey) - { - LOG_STATIC_FUNC_ENTRY - - CSimPANCommand* self = new(ELeave) CSimPANCommand(aTestConsole, aKey); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } -CSimPANCommand::~CSimPANCommand() - { - Cancel(); - iNcmExclusiveProp.Close(); - } - -CSimPANCommand::CSimPANCommand(CUsbNcmConsole& aTestConsole, TUint aKey) - : CNcmCommandBase(EPriorityStandard, aTestConsole, aKey) - { - } - -void CSimPANCommand::ConstructL() - { - //Attach the property of Exclusive state - User::LeaveIfError(iNcmExclusiveProp.Attach(KC32ExeSid, KIPBearerCoexistenceProperty)); - CActiveScheduler::Add(this); - iNcmExclusiveProp.Subscribe(iStatus); - SetActive(); - - //Get the current value of exclusive state - TInt state; - TInt err = iNcmExclusiveProp.Get(state); - switch(err) - { - case KErrNotFound: - //The property is not defined. means BtPAN and Ncm didn't start. - DisplayExclusive(ENoneIsActive); - break; - case KErrNone: - //Display the exclusive state on main console - DisplayExclusive(state); - break; - default: - User::LeaveIfError(err); - break; - } - - } - -void CSimPANCommand::RunL() -/** -Get the current exclusive state and update on main console when the state changed -*/ - { - LOG_FUNC - __FLOG_STATIC1(KSubSys, KLogComponent , _L8("CNcmExclusiveStateAO::RunL - iStatus = %d"), iStatus.Int()); - - User::LeaveIfError(iStatus.Int()); - - iNcmExclusiveProp.Subscribe(iStatus); - SetActive(); - - TInt exclusiveState; - TInt err = iNcmExclusiveProp.Get(exclusiveState); - - __FLOG_STATIC2(KSubSys, KLogComponent , _L8("Get[IPBearerCoexistence]=%d, err=%d"), exclusiveState, err); - - if(err == KErrNone) - { - //Display the exclusive state on main console - DisplayExclusive(exclusiveState); - } - } - -void CSimPANCommand::DoCancel() - { - iNcmExclusiveProp.Cancel(); - } - -TInt CSimPANCommand::RunError(TInt aError) - { - User::Panic(_L("CSimPANCommand"), aError); - return aError; - } - -void CSimPANCommand::DoCommandL() -/** -Main function of simualate Pan active/inactive. -It will try to get the exclusive state from P&S key. And set the value based on the iSetPAN. -There's three value for this P&S key: EExclusiveNone,ENcmOwned,EBtPanOwned - -If now the command is 'active PAN'(iSetPAN=ETrue), then set the value of property to Pan active. -If now the command is 'inactive PAN'(iSetPAN=EFalse), then set the value of property to Pan inactive. -*/ - { - LOG_FUNC - - //Get the mutex which used to protect the P&S key. - RMutex mtx; - TInt ret; - ret = mtx.CreateGlobal(KIPBearerCoexistenceMutex); - if (ret == KErrAlreadyExists) - { - ret = mtx.OpenGlobal(KIPBearerCoexistenceMutex); - } - User::LeaveIfError(ret); - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Get Mutex, wait()")); - CleanupClosePushL(mtx); - mtx.Wait(); - - RProperty prop; - TInt state; - TBool bSet = ETrue; - - //Get the exclusive state. - ret = prop.Get(KC32ExeSid, KIPBearerCoexistenceProperty, state); - CleanupClosePushL(prop); - __FLOG_STATIC2(KSubSys, KLogComponent , _L8("Get Property[IPBearerCoexistence]: ret=%d, val=%d"), ret, state); - - switch(ret) - { - case KErrNotFound: - { - //The property not exists. (NCM not start.) - - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Not define property yet. define it")); - CUsbNcmConsoleEvent* event = CUsbNcmConsoleEvent::NewL(); - event->iEvent.AppendFormat(_L("Not define property yet. define it.")); - iTestConsole.NotifyEvent(event); - - //Define the property - User::LeaveIfError(RProperty::Define(KC32ExeSid, KIPBearerCoexistenceProperty, RProperty::EInt, KAllowAllPolicy, KNetworkControlPolicy)); - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("Define Property[IPBearerCoexistence] ok")); - break; - } - case KErrNone: - { - //property exists. - if(state == ENcmIsActive) - { - //Ncm hold the key. PAN can't active. Do nothing in this command. - CUsbNcmConsoleEvent* event = CUsbNcmConsoleEvent::NewL(); - event->iEvent.AppendFormat(_L("NCM hold the P&S key!")); - iTestConsole.NotifyEvent(event); - bSet = EFalse; - } - break; - } - default: - { - //error when get P&S key. - CUsbNcmConsoleEvent* event = CUsbNcmConsoleEvent::NewL(); - event->iEvent.AppendFormat(_L("Get P&S key error! err = %d"), ret); - iTestConsole.NotifyEvent(event); - bSet = EFalse; - break; - } - } - - if(bSet) - { - //Set the property value - CUsbNcmConsoleEvent* event = CUsbNcmConsoleEvent::NewL(); - CleanupStack::PushL(event); - if(this->iSetPAN) - { - User::LeaveIfError(prop.Set(KC32ExeSid, KIPBearerCoexistenceProperty, EBTPanIsActive)); - __FLOG_STATIC1(KSubSys, KLogComponent , _L8("Set Property[IPBearerCoexistence]: val = %d"), EBTPanIsActive); - event->iEvent.AppendFormat(_L("Set PAN active! prop=%d"), EBTPanIsActive); - } - else - { - User::LeaveIfError(prop.Set(KC32ExeSid, KIPBearerCoexistenceProperty, ENoneIsActive)); - __FLOG_STATIC1(KSubSys, KLogComponent , _L8("Set Property[IPBearerCoexistence]: val = %d"), ENoneIsActive); - event->iEvent.AppendFormat(_L("Set PAN disactive! prop=%d"), ENoneIsActive); - } - CleanupStack::Pop(event); - iTestConsole.NotifyEvent(event); - - } - - CleanupStack::Pop(2, &mtx); //prop, mtx - mtx.Signal(); - prop.Close(); - mtx.Close(); - - } - -void CSimPANCommand::ChangeDescription() - { - if(iSetPAN) - { - SetDescription(KSimPANCommandActive()); - } - else - { - SetDescription(KSimPANCommandNone()); - } - } - -void CSimPANCommand::DisplayExclusive(TInt aState) -/** -Display the exclusive state on main console and change the description of command by the -value of aState - @param aState Exclusive state -*/ - { - TBuf exclusive; - iSetPAN = ETrue; - switch(aState) - { - case ENoneIsActive: - { - exclusive = _L("None "); - } - break; - case ENcmIsActive: - { - exclusive = _L("NCM "); - } - break; - case EBTPanIsActive: - { - exclusive = _L("BT PAN "); - //If Bt Pan is active, the command description should be 'disactive BT PAN' - iSetPAN = EFalse; - } - break; - default: - exclusive = _L(" "); - break; - } - - ChangeDescription(); - iTestConsole.SetDisplayItem(ENcmBtPanItem, exclusive); - } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/src/tcpcommand.cpp --- a/usbmgmt/usbmgrtest/t_ncm/src/tcpcommand.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,142 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -#include "tcpcommand.h" -#include "tcptest.h" -#include "ncmtestconsole.h" - -_LIT(KTcpClientCommandDescription, "Create tcp connection from H4 to PC"); -_LIT(KTcpServerCommandDescription, "Create tcp connection from PC to H4"); -_LIT(KUdpClientCommandDescription, "Create udp connection from H4 to PC"); -_LIT(KUdpServerCommandDescription, "Create udp connection from PC to H4"); - - -const TInt KDefaultPortFrom = 5000; - -CTcpCommand* CTcpCommand::NewL(CUsbNcmConsole& aTestConsole, TUint aKey, TBool aIsTcp, TBool aIsServer) - { - LOG_STATIC_FUNC_ENTRY - - CTcpCommand* self = new(ELeave) CTcpCommand(aTestConsole, aKey, aIsTcp, aIsServer); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } -CTcpCommand::~CTcpCommand() - { - for(TInt i = 0; i < KMaxTcpTestCount; i++) - { - delete iTestArray[i]; - } - } - -CTcpCommand::CTcpCommand(CUsbNcmConsole& aTestConsole, TUint aKey, TBool aIsTcp, TBool aIsServer) - : CNcmCommandBase(EPriorityStandard, aTestConsole, aKey), iIsTcp(aIsTcp), iIsServer(aIsServer) - { - } - -void CTcpCommand::ConstructL() - { - if (iIsServer) - { - if (iIsTcp) - { - SetDescription(KTcpServerCommandDescription()); - } - else - { - SetDescription(KUdpServerCommandDescription()); - } - } - else - { - if (iIsTcp) - { - SetDescription(KTcpClientCommandDescription()); - } - else - { - SetDescription(KUdpClientCommandDescription()); - } - } - } - -void CTcpCommand::DoCommandL() - { - LOG_FUNC - - //Create an CTcpTestConsole object to run the tcp test. - TBool noRun = ETrue; - for(TInt i = 0; i < KMaxTcpTestCount; i++) - { - if(!iTestArray[i]) - { - //create the default parameter for tcp test - // as a server : the parameter is port (Listen at which port) - // as a client : the parameter is ip and port. IP is got from NCM's IP + 1 - // (The DHCP server will assign "NCM's IP+1" to PC.) - RBuf addr; - addr.CreateL(30); - - if(!iIsServer) - { - TInetAddr serverIP; - serverIP.Input(_L("192.168.3.100")); - //serverIP.Input(iTestConsole.GetDisplayItem(ENcmConnIpItem)); - TUint32 serverAddr = serverIP.Address(); - TUint32 hostId = (serverAddr & ~KInetAddrNetMaskC) + 1; - if (hostId >= 255) - { - hostId = 1; - } - TUint32 clientAddr = (serverAddr & KInetAddrNetMaskC) | hostId; - TInetAddr clientIP(clientAddr, 0); - clientIP.Output(addr); - } - - addr.AppendFormat(_L(" %d"), KDefaultPortFrom+i); - //Create a tcp test console - iTestArray[i] = CTcpTestConsole::NewL(iIsTcp, iIsServer, addr, i, *this); - noRun = EFalse; - addr.Close(); - break; - } - } - if(noRun) - { - //The count of tcp test is up to the max value. - CUsbNcmConsoleEvent* event = CUsbNcmConsoleEvent::NewL(); - TInt count = KMaxTcpTestCount; - event->iEvent.AppendFormat(_L("The test connection is up to %d.Please close some."), count); - iTestConsole.NotifyEvent(event); - } - } - -void CTcpCommand::CloseTcpTest(TInt aIndex) - { - __ASSERT_ALWAYS(((aIndex < KMaxTcpTestCount) && (aIndex >= 0)), Panic(ENcmArrayBound)); - - delete iTestArray[aIndex]; - iTestArray[aIndex] = NULL; - } - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_ncm/src/tcptest.cpp --- a/usbmgmt/usbmgrtest/t_ncm/src/tcptest.cpp Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,612 +0,0 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* -*/ - -/** @file - @internalComponent - @test - */ - -#include "tcptest.h" -#include -#include -#include -#include "tcpcommand.h" -#include "ncmtestconsole.h" - -_LIT8(KSendData, "TCP-Packet::HelloWorld\n"); - -static const TInt KMaxNumOfChars = 255; - -//The title of TCP test console -_LIT(KTcpServerMode, "Tcp Server"); -_LIT(KTcpClientMode, "Tcp Client"); - -//The default value of data size -static const TInt KDefaultDataSize = 30; - -CTcpProcess* CTcpProcess::NewL(CConsoleBase& aConsole, TInetAddr& aAddr, TInt aPort, TInt aSize, TBool aMode) - { - CTcpProcess* self = new(ELeave) CTcpProcess(aConsole, aAddr, aPort, aSize, aMode); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -CTcpProcess::~CTcpProcess() - { - Cancel(); - iRecvBuf.Close(); - iSendBuf.Close(); - iSocket.Close(); - iListenSocket.Close(); - iSockServ.Close(); - } - -CTcpProcess::CTcpProcess(CConsoleBase& aConsole, TInetAddr& aAddr, TInt aPort, TInt aSize, TBool aMode) - : CActive(EPriorityStandard), iConsole(aConsole), iAddr(aAddr), iPort(aPort), iSize(aSize), iMode(aMode) - { - CActiveScheduler::Add(this); - } - -void CTcpProcess::ConstructL() - { - //Create the data buffer - User::LeaveIfError(iSendBuf.Create(iSize)); - User::LeaveIfError(iRecvBuf.Create(iSize)); - iRecvSize = iSize; - - iProcessState = ECreateConnection; - - User::LeaveIfError(iSockServ.Connect()); - if(iMode) - { - //Listen at specified port - TBuf<5> protocol = _L("tcp"); - User::LeaveIfError(iListenSocket.Open(iSockServ, protocol)); - User::LeaveIfError(iListenSocket.SetOpt(KSoReuseAddr, KProtocolInetIp, 1)); - User::LeaveIfError(iListenSocket.SetLocalPort(iPort)); - User::LeaveIfError(iListenSocket.Listen(5)); - User::LeaveIfError(iSocket.Open(iSockServ)); - iListenSocket.Accept(iSocket, iStatus); - iConsole.Printf(_L("\nWait for a connection at port[%d].\n"), iPort); - } - else - { - RConnection conn; - User::LeaveIfError(conn.Open(iSockServ)); - TCommDbConnPref pref; - pref.SetIapId(13); - pref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); - User::LeaveIfError(conn.Start(pref)); - - //Connect to specified server - User::LeaveIfError(iSocket.Open(iSockServ, KAfInet, KSockStream, KProtocolInetTcp, conn)); - iSocket.Connect(iAddr, iStatus); - - iConsole.Printf(_L("\nConnecting....\n")); - } - SetActive(); - } - - -void CTcpProcess::RunL() - { - switch(iProcessState) - { - case ECreateConnection: - //Get result of connect - if(iStatus.Int() != KErrNone) - { - iConsole.Printf(_L("Connect err[%d].\nPress any key to quit."), iStatus.Int()); - return; - } - else - { - //A TCP connection is created. - if(iMode) - { - iConsole.Printf(_L("Get a connection.\n")); - } - else - { - iConsole.Printf(_L("\nConnected.\n")); - } - iProcessState = EDataTransfer; - - //Ready for read data - iSocket.RecvOneOrMore(iRecvBuf, 0, iStatus, iRecvSize); - __FLOG_STATIC1(KSubSys, KLogComponent , _L8("Ready for read data"), iRecvSize); - SetActive(); - if(!iMode) - { - //As a client, send data first. - iSendBuf.SetLength(iSize); - iSendBuf.Repeat(KSendData()); - - iConsole.Printf(_L("Send data.")); - PrintData(iSendBuf); - TInt sendLen = SendDataL(iSendBuf, iSize); - if(sendLen != iSize) - { - iConsole.Printf(_L("The length of data sent is not equal to requested! requested[%d], sent[%d]"), - iSize, sendLen); - } - } - } - break; - - case EDataTransfer: - //In data transfer, some data is received - iConsole.Printf(_L("recv Package, size[%d], status[%d]\n"), iRecvSize(), iStatus.Int()); - if((KErrEof == iStatus.Int()) || (KErrDisconnected == iStatus.Int())) - { - iConsole.Printf(_L("Connection closed!")); - return; - } - else if(KErrNone == iStatus.Int()) - { - iConsole.Printf(_L("Receive data.")); - PrintData(iRecvBuf); - - if(iMode) - { - //As a server, send back the data received - TInt len = SendDataL(iRecvBuf, iRecvSize()); - iConsole.Printf(_L("Send back the data. len[%d]"), len); - } - } - iRecvBuf.SetLength(0); - iRecvSize = iSize; - iSocket.RecvOneOrMore(iRecvBuf, 0, iStatus, iRecvSize); - SetActive(); - - break; - } - } - -void CTcpProcess::DoCancel() - { - switch(iProcessState) - { - case ECreateConnection: - if(iMode) - { - iListenSocket.CancelAccept(); - } - else - { - iSocket.CancelConnect(); - } - break; - case EDataTransfer: - iSocket.CancelRecv(); - break; - } - } - -TInt CTcpProcess::RunError(TInt aError) - { - User::Panic(_L("CTcpProcess"), aError); - return aError; - } - -TInt CTcpProcess::SendDataL(TDes8& aData, TInt aSize) -/** -Send data. - @return the size of data sent - */ - { - TRequestStatus status; - TSockXfrLength sendSize = aSize; - iSocket.Send(aData, 0, status, sendSize); - User::WaitForRequest(status); - - switch(status.Int()) - { - case KErrEof: - iConsole.Printf(_L("Connection closed!")); - return 0; - case KErrNone: - iConsole.Printf(_L("Send successfully.")); - break; - default: - User::LeaveIfError(status.Int()); - break; - } - return sendSize(); - } - -void CTcpProcess::PrintData(TDes8& aData) - { - iConsole.Printf(_L("The data is: \n")); - for(TInt i=0; i< aData.Length();i++) - { - iConsole.Printf(_L("%c"), aData[i]); - } - iConsole.Printf(_L("\n")); - } - -CUdpProcess* CUdpProcess::NewL(CConsoleBase& aConsole, TInetAddr& aAddr, - TInt aPort, TInt aSize, TBool aMode) - { - CUdpProcess* self = new (ELeave) CUdpProcess(aConsole, aAddr, aPort, - aSize, aMode); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -CUdpProcess::~CUdpProcess() - { - Cancel(); - iRecvBuf.Close(); - iSendBuf.Close(); - iSocket.Close(); - iListenSocket.Close(); - iSockServ.Close(); - } - -CUdpProcess::CUdpProcess(CConsoleBase& aConsole, TInetAddr& aAddr, - TInt aPort, TInt aSize, TBool aMode) : - CActive(EPriorityStandard), iConsole(aConsole), iAddr(aAddr), - iPort(aPort), iSize(aSize), iMode(aMode) - { - CActiveScheduler::Add(this); - } - -void CUdpProcess::ConstructL() - { - //Create the data buffer - User::LeaveIfError(iSendBuf.Create(iSize)); - User::LeaveIfError(iRecvBuf.Create(iSize)); - iRecvSize = iSize; - - User::LeaveIfError(iSockServ.Connect()); - - // Start NCM IAP - RConnection conn; - User::LeaveIfError(conn.Open(iSockServ)); - TCommDbConnPref pref; - pref.SetIapId(13); - pref.SetDialogPreference(ECommDbDialogPrefDoNotPrompt); - User::LeaveIfError(conn.Start(pref)); - - User::LeaveIfError(iSocket.Open(iSockServ, KAfInet, KSockDatagram, - KProtocolInetUdp, conn)); - - iConsole.Printf(_L("In constructL, port=%d"), iAddr.Port()); - - if (iMode) - { - iProcessState = EDataTransfer; - - User::LeaveIfError(iSocket.SetLocalPort(iPort)); - iSocket.RecvFrom(iRecvBuf, iPeerAddr, 0, iStatus); - iConsole.Printf(_L("\nWait for UDP incoming data at port[%d]...\n"),iPort); - SetActive(); - } - else - { - iProcessState = EDataSending; - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete(status, KErrNone); - } - } - - -void CUdpProcess::RunL() - { - __FLOG_STATIC0(KSubSys, KLogComponent , _L8("CUdpProcess::RunL")); - switch (iProcessState) - { - case EDataSending: - //As a client, send data first. - iSendBuf.SetLength(iSize); - iSendBuf.Repeat(KSendData()); - iConsole.Printf(_L("Send data..")); - PrintData(iSendBuf); - iConsole.Printf(_L("In RunL, port=%d"), iAddr.Port()); - TInt sendLen = SendDataL(iSendBuf, iAddr, iSize); - - if (sendLen != iSize) - { - iConsole.Printf( - _L("The length of data sent is not equal to requested! requested[%d], sent[%d]"), - iSize, sendLen); - } - break; - - case EDataTransfer: - //In data transfer, some data is received - iConsole.Printf(_L("recv Package, size[%d], status[%d]\n"), - iRecvSize(), iStatus.Int()); - if (KErrNone == iStatus.Int()) - { - iConsole.Printf(_L("Receive data.")); - PrintData(iRecvBuf); - - if (iMode) - { - //As a server, send back the data received - TInt len = SendDataL(iRecvBuf, iPeerAddr, iRecvBuf.Length()); - iConsole.Printf(_L("Send back the data. len[%d]"), len); - } - } - else - { - iConsole.Printf(_L("Something is wrong...")); - return; - } - - iRecvBuf.SetLength(0); - iRecvSize = iSize; - //iListenSocket.RecvFrom(iRecvBuf, iPeerAddr, 0, iStatus); - iSocket.RecvFrom(iRecvBuf, iPeerAddr, 0, iStatus); - SetActive(); - iConsole.Printf(_L("\nWait for UDP incoming data at port[%d]...\n"),iPort); - break; - } - } - -void CUdpProcess::DoCancel() -{ - switch(iProcessState) - { - case EDataTransfer: - //iListenSocket.CancelRecv(); - iSocket.CancelRecv(); - break; - } -} - -TInt CUdpProcess::RunError(TInt aError) -{ - User::Panic(_L("CUdpProcess"), aError); - return aError; -} - -TInt CUdpProcess::SendDataL(TDes8& aData, TInetAddr& aAddr, TInt aSize) - /** - Send data. - @return the size of data sent - */ -{ - TRequestStatus status; - - TInt port = aAddr.Port(); - iConsole.Printf(_L("Before sending, size = %d, port=%d\n"), aSize, port); - TSockXfrLength sendSize = 0; //aSize; - iSocket.SendTo(aData, aAddr, 0, status, sendSize); - User::WaitForRequest(status); - iConsole.Printf(_L("Sending result = %d, and sent=%d\n"), status.Int(), sendSize()); - - switch(status.Int()) - { - case KErrEof: - iConsole.Printf(_L("Connection closed!")); - return 0; - case KErrNone: - iConsole.Printf(_L("Send successfully.\n")); - break; - default: - User::LeaveIfError(status.Int()); - break; - } - return sendSize(); -} - -void CUdpProcess::PrintData(TDes8& aData) -{ - iConsole.Printf(_L("The data is: \n")); - for(TInt i=0; i< aData.Length();i++) - { - iConsole.Printf(_L("%c"), aData[i]); - } - iConsole.Printf(_L("\n")); -} - - - -CTcpTestConsole* CTcpTestConsole::NewL(TBool aIsTcp, TBool aMode, TDesC& aDefautAddr, TInt aIndex, CTcpCommand& aOwner) - { - CTcpTestConsole* self = new(ELeave) CTcpTestConsole(aIsTcp, aMode, aDefautAddr, aIndex, aOwner); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - - } - -CTcpTestConsole::CTcpTestConsole(TBool aIsTcp, TBool aMode, TDesC& aDefautAddr, TInt aIndex, CTcpCommand& aOwner) - : CActive(EPriorityStandard),iCommandMode(ECommandInit), iIsTcp(aIsTcp), iMode(aMode), - iDefaultAddr(aDefautAddr), iIndex(aIndex), iOwner(aOwner) - { - CActiveScheduler::Add(this); - } - -CTcpTestConsole::~CTcpTestConsole() - { - Cancel(); - delete iTcp; - delete iUdp; - delete iConsole; - iChars.Close(); - } - - -void CTcpTestConsole::ConstructL() - { - if(iMode) - { - iConsole = Console::NewL(KTcpServerMode(),TSize(KConsFullScreen,KConsFullScreen)); - } - else - { - iConsole = Console::NewL(KTcpClientMode(),TSize(KConsFullScreen,KConsFullScreen)); - } - User::LeaveIfError(iChars.Create(KMaxNumOfChars)); - //Generate the default value and display on screen, user can modify it if they want to use other value. - iChars.AppendFormat(_L("%S %d"), &iDefaultAddr, KDefaultDataSize); - Help(); - //wait user input - iConsole->Read(iStatus); - SetActive(); - } - -void CTcpTestConsole::Help() - { - iConsole->Printf(_L("Please change the parameters, then press enter\n")); - if(iMode) - { - iConsole->Printf(_L(" The parameters are port size \n")); - iConsole->Printf(_L(" port - The port of the Tcp/udp Server listen to \n")); - iConsole->Printf(_L(" size - the max package size \n")); - } - else - { - iConsole->Printf(_L(" The parameters are destAddr port size \n")); - iConsole->Printf(_L(" destAddr - The ip address of Tcp/udp Client connect to.\n")); - iConsole->Printf(_L(" port - The port of Tcp Client connect to \n")); - iConsole->Printf(_L(" size - the package size \n")); - } - //Display the default value - iConsole->Printf(_L("%S"), &iChars); - - } -TBool CTcpTestConsole::StartL() - { - TLex args(iChars); - // args are separated by spaces - args.SkipSpace(); - - TInetAddr addr; - TInt size; - - if(!iMode) - { - //Get ip addr - TPtrC cmdAddr = args.NextToken(); - if(!args.Eos()) - { - if(KErrNone == addr.Input(cmdAddr)) - { - args.Inc(); - } - else - { - return EFalse; - } - } - else - { - return EFalse; - } - } - - //Get port - TInt port; - if(KErrNone != args.Val(port)) - { - return EFalse; - } - addr.SetPort(port); - - //Get pkg size - args.Inc(); - if(KErrNone != args.Val(size)) - { - return EFalse; - } - - iCommandMode = ECommandRunning; - if (iIsTcp) - { - iConsole->Printf(_L("Test for TCP...\n")); - iTcp = CTcpProcess::NewL(*iConsole, addr, port, size, iMode); - } - else - { - iConsole->Printf(_L("Test for UDP...\n")); - iUdp = CUdpProcess::NewL(*iConsole, addr, port, size, iMode); - } - - return ETrue; - - } - -void CTcpTestConsole::DoCancel() - { - iConsole->ReadCancel(); - } - -void CTcpTestConsole::RunL() - { - User::LeaveIfError(iStatus.Int()); - switch(iCommandMode) - { - case ECommandInit: - { - TKeyCode code = iConsole->KeyCode(); - switch(code) - { - case EKeyEnter: - { - //User input ok - if(!StartL()) - { - Help(); - } - } - break; - case EKeyEscape: - //connection has not been created. User want to cancel and quit - iOwner.CloseTcpTest(iIndex); - return; - case EKeyBackspace: - if(iChars.Length() > 0) - { - iConsole->SetCursorPosRel(TPoint(-1, 0)); - iConsole->ClearToEndOfLine(); - iChars.SetLength(iChars.Length()-1); - } - break; - default: - iChars.Append(code); - iConsole->Printf(_L("%c"), code); - break; - } - iConsole->Read(iStatus); - SetActive(); - } - break; - case ECommandRunning: - //Connection has been created. User quit by press any key. - iOwner.CloseTcpTest(iIndex); - break; - } - } - -TInt CTcpTestConsole::RunError(TInt aError) - { - User::Panic(_L("CTcpTestConsole"), aError); - return aError; - } - - diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_termusb/src/t_termusb.cpp --- a/usbmgmt/usbmgrtest/t_termusb/src/t_termusb.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_termusb/src/t_termusb.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -205,6 +205,11 @@ aBuf.Append(_L("DSR/DTR ")); if (aConfig.iHandshake&KConfigWriteBufferedComplete) aBuf.Append(_L("Early ")); + //|KConfigObeyDCD|KConfigFailDCD|)) + + +// if (aConfig.iBreak==TEiger::EBreakOn) +// aBuf.Append(_L("Brk ")); if (aConfig.iFifo==EFifoEnable) aBuf.Append(_L("Fifo ")); @@ -218,6 +223,10 @@ aBuf.Append(_L("LpBk")); else if ((aSettings.iRxMode&~ECapture)==ECountChars) aBuf.Append(_L("CtCh")); + //else if (aSettings.iRxMode==ERxOff) + //{ + //aBuf.Append(_L("NoRx")); + //} aBuf.Append(_L(" ")); aBuf.AppendNum((TInt)(RThread().Priority())); if (aSettings.iInfraRed==1) @@ -348,6 +357,23 @@ aWait=ETrue; } +/*LOCAL_C void GetBreak(const TDesC &aDes) + { + + if (aDes==_L("")) + { + if (data.iBreak==TEiger::EBreakOn) + data.iBreak=TEiger::EBreakOff; + else + data.iBreak=TEiger::EBreakOn; + } + if (aDes.FindF(_L("N"))>=0) + data.iBreak=TEiger::EBreakOn; + if (aDes.FindF(_L("F"))>=0) + data.iBreak=TEiger::EBreakOff; + SetConfig(); + } +*/ LOCAL_C void GetFifo(TUint& aFifo, const TDesC &aDes) { @@ -442,6 +468,8 @@ TPtrC s(&a,1); dialog.Write(s); aSettings.iDumpData.Append(k.Code()); + //if (a=='\r') + // dialog.Write(_L("\n")); } while (aSettings.iDumpData.Length()=0) + data.iBreak=TEiger::EBreakOn; + if (aDes.FindF(_L("F"))>=0) + data.iBreak=TEiger::EBreakOff; + SetConfig(); + } +*/ LOCAL_C void GetFifo(TUint& aFifo, const TDesC &aDes) { @@ -440,6 +466,8 @@ TPtrC s(&a,1); dialog.Write(s); aSettings.iDumpData.Append(k.Code()); + //if (a=='\r') + // dialog.Write(_L("\n")); } while (aSettings.iDumpData.Length() cmd; + User::CommandLine(cmd); + TInt port=0; + if ((cmd.Length()>0) && (cmd[0]>='1' && cmd[0]<='4')) + port=(TInt)(cmd[0]-'0'); +*/ // Load Device Drivers TInt r; @@ -720,7 +761,7 @@ RDebug::Print(_L("E32Main: Open USB Comm Port")); TheCommPort.Config(TheConfigBuf); // get config - TheConfig.iHandshake=0; + TheConfig.iHandshake=0; //KConfigObeyXoff|KConfigSendXoff; TheConfig.iTerminator[0] = 'Z'; TheConfig.iTerminatorCount = 1; TheCommPort.SetConfig(TheConfigBuf); diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usb_cable_detect/src/t_usb_cable_detect.cpp --- a/usbmgmt/usbmgrtest/t_usb_cable_detect/src/t_usb_cable_detect.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_usb_cable_detect/src/t_usb_cable_detect.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -136,7 +136,7 @@ TUsbServiceState serviceState; User::LeaveIfError(iUsbMan.GetServiceState(serviceState)); - +// RDebug::Print(_L("Service state: %d. Device state: %d"), serviceState, iDeviceState); if ((serviceState != EUsbServiceIdle) && (iDeviceState == EUsbDeviceStateUndefined)) diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbman/src/t_usbman.cpp --- a/usbmgmt/usbmgrtest/t_usbman/src/t_usbman.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_usbman/src/t_usbman.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -41,6 +41,8 @@ RUsb TheSecondUsbSession; TBool ThePrimaryClient; +//_LIT(KUsbCsyName, "ECACM"); +//_LIT(KUsbPortName, "ACM::0"); _LIT(KUsbLddName, "EUSBC"); // These are used in the startup stress test. @@ -654,7 +656,19 @@ TheSecondUsbSession.Close(); } +/* +void RegisterAsPrimaryClientL() + { + LEAVEIFERROR(TheUsb.RegisterAsPrimarySession()); + ThePrimaryClient = ETrue; + } +void DeregisterAsPrimaryClientL() + { + LEAVEIFERROR(TheUsb.DeregisterAsPrimarySession()); + ThePrimaryClient = EFalse; + } +*/ void DbgCheckHeapL() { _printf(_L("Expected number of allocated heap cells: ")); @@ -1036,7 +1050,9 @@ case '5': SetUsbSerialNumberL(); break; case 's': case 'S': SanityTestL(); break; #ifndef HURRICANE - case 'm': MemoryTestsL(); break; +/* case 'r': RegisterAsPrimaryClientL(); break; + case 'd': DeregisterAsPrimaryClientL(); break; +*/ case 'm': MemoryTestsL(); break; #endif // HURRICANE case 'c': case 'C': CloseUsbL(); break; case 'o': case 'O': OpenUsbL(); break; @@ -1089,7 +1105,9 @@ _printf(_L("5. Publish Serial Number\n")); _printf(_L("S. Sanity test- quickly calls all APIs to make sure they don't panic\n")); #ifndef HURRICANE - _printf(_L("M. Memory tests\n")); +/* _printf(_L("R. Register as primary client\n")); + _printf(_L("D. Deregister as primary client\n")); +*/ _printf(_L("M. Memory tests\n")); #endif // HURRICANE _printf(_L("C. Close connection to USB Manager\n")); _printf(_L("O. Connect to USB Manager\n")); diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmanager_suite/Stub1CC/group/BLD.INF --- a/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub1CC/group/BLD.INF Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub1CC/group/BLD.INF Wed Sep 01 12:35:00 2010 +0100 @@ -29,3 +29,4 @@ Stub1CC.mmp #endif + diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmanager_suite/Stub1CC/group/Stub1CC.mmp --- a/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub1CC/group/Stub1CC.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub1CC/group/Stub1CC.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -34,8 +34,7 @@ SOURCE Stub1CC.cpp USERINCLUDE ../inc -USERINCLUDE ../../../../usbmgr/usbman/server/public -USERINCLUDE ../traces +USERINCLUDE ../../../../usbmgr/usbman/server/public OS_LAYER_SYSTEMINCLUDE_SYMBIAN @@ -48,3 +47,4 @@ LIBRARY usbclasscontroller.lib LIBRARY esock.lib +#include diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmanager_suite/Stub1CC/inc/Stub1CC.h --- a/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub1CC/inc/Stub1CC.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub1CC/inc/Stub1CC.h Wed Sep 01 12:35:00 2010 +0100 @@ -40,7 +40,12 @@ const TInt Kstub1NumberOfInterfacesPerstub1Function = 2; // data and control interfaces - +// The name of the ini file specifying the number of functions required different from default +/* +_LIT(Kstub1FunctionsIniFileName, "NumberOfstub1Functions.ini"); +_LIT(Kstub1ConfigSection,"stub1_CONF"); +_LIT(KNumberOfstub1FunctionsKeyWord,"NumberOfstub1Functions"); +*/ // Lengths of the various bits of the descriptor. Taken from the USB // WMCDC specification, v1.0. const TInt Kstub1InterfaceDescriptorLength = 3; diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmanager_suite/Stub1CC/src/Stub1CC.cpp --- a/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub1CC/src/Stub1CC.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub1CC/src/Stub1CC.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -22,10 +22,11 @@ @file */ +#include "Stub1CC.h" #include #include #include -#include "Stub1CC.h" +#include #ifdef __FLOG_ACTIVE _LIT8(KLogComponent, "STUB1CC"); @@ -33,11 +34,6 @@ #include "usbmaninternalconstants.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "Stub1CCTraces.h" -#endif - // Panic category @@ -164,37 +160,32 @@ */ void CUsbstub1ClassController::Start(TRequestStatus& aStatus) { - OstTraceFunctionEntry0( CUSBSTUB1CLASSCONTROLLER_START_ENTRY ); - + LOG_FUNC + aStatus = KRequestPending; iReportStatus = &aStatus; //If we are already started then just complete the request. if (iState == EUsbServiceStarted) { User::RequestComplete(iReportStatus, KErrNone); - OstTraceFunctionExit0( CUSBSTUB1CLASSCONTROLLER_START_EXIT ); return; } if (iFailToStart) { User::RequestComplete(iReportStatus, KErrGeneral); - OstTraceFunctionExit0( CUSBSTUB1CLASSCONTROLLER_START_EXIT_DUP1 ); return; } iState = EUsbServiceStarting; #ifndef __WINS__ TInt ret = iLdd.Open(0); - OstTrace1( TRACE_NORMAL, CUSBSTUB1CLASSCONTROLLER_START, _L8("Open LDD, ret=%d"), ret ); - + LOGTEXT2(_L8("Open LDD, ret=%d"), ret); ret = SetUpInterface(); - OstTrace1( TRACE_NORMAL, CUSBSTUB1CLASSCONTROLLER_START_DUP1, _L8("SetUpInterface(), ret=%d"), ret ); - + LOGTEXT2(_L8("SetUpInterface(), ret=%d"), ret); #endif iTimer.After(iStatus, iStartDelay*1000); //convert from usec to msec SetActive(); - OstTraceFunctionExit0( CUSBSTUB1CLASSCONTROLLER_START_EXIT_DUP2 ); } /** @@ -204,7 +195,7 @@ */ void CUsbstub1ClassController::Stop(TRequestStatus& aStatus) { - OstTraceFunctionEntry0( CUSBSTUB1CLASSCONTROLLER_STOP_ENTRY ); + LOG_FUNC aStatus = KRequestPending; iReportStatus = &aStatus; @@ -212,14 +203,12 @@ if (iState == EUsbServiceIdle) { User::RequestComplete(iReportStatus, KErrNone); - OstTraceFunctionExit0( CUSBSTUB1CLASSCONTROLLER_STOP_EXIT ); return; } if (iFailToStop) { User::RequestComplete(iReportStatus, KErrGeneral); - OstTraceFunctionExit0( CUSBSTUB1CLASSCONTROLLER_STOP_EXIT_DUP1 ); return; } @@ -231,7 +220,6 @@ iTimer.After(iStatus, iStopDelay*1000); //convert from usec to msec SetActive(); - OstTraceFunctionExit0( DUP2_CUSBSTUB1CLASSCONTROLLER_STOP_EXIT ); } /** @@ -241,11 +229,10 @@ */ void CUsbstub1ClassController::GetDescriptorInfo(TUsbDescriptor& aDescriptorInfo) const { - OstTraceFunctionEntry0( CUSBSTUB1CLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY ); - + LOG_FUNC + aDescriptorInfo.iLength = Kstub1DescriptorLength; aDescriptorInfo.iNumInterfaces = Kstub1NumberOfInterfacesPerstub1Function; - OstTraceFunctionExit0( CUSBSTUB1CLASSCONTROLLER_GETDESCRIPTORINFO_EXIT ); } @@ -254,15 +241,9 @@ */ void CUsbstub1ClassController::RunL() { - OstTraceFunctionEntry0( CUSBSTUB1CLASSCONTROLLER_RUNL_ENTRY ); - - if(iStatus != KErrNone) - { - OstTrace1( TRACE_FATAL, CUSBSTUB1CLASSCONTROLLER_RUNL, - "CUsbstub1ClassController::RunL panic with error %d", - EPanicUnexpectedState); - __ASSERT_DEBUG(EFalse,User::Panic(Kstub1CcPanicCategory,EPanicUnexpectedStatus)); - } + LOG_FUNC + + __ASSERT_DEBUG( iStatus == KErrNone, _USB_PANIC(Kstub1CcPanicCategory, EPanicUnexpectedStatus) ); switch (iState) { case EUsbServiceStarting: @@ -272,14 +253,10 @@ iState = EUsbServiceIdle; break; default: - OstTrace1( TRACE_FATAL, CUSBSTUB1CLASSCONTROLLER_RUNL_DUP1, - "CUsbstub1ClassController::RunL panic with error %d", - EPanicUnexpectedState); - User::Panic(Kstub1CcPanicCategory,EPanicUnexpectedStatus); + _USB_PANIC(Kstub1CcPanicCategory, EPanicUnexpectedState); } *iReportStatus = KErrNone; User::RequestComplete(iReportStatus, iStatus.Int()); - OstTraceFunctionExit0( CUSBSTUB1CLASSCONTROLLER_RUNL_EXIT ); } /** @@ -302,9 +279,7 @@ iState = EUsbServiceStarted; break; default: - OstTrace1( TRACE_FATAL, CUSBSTUB1CLASSCONTROLLER_DOCANCEL, - "CUsbstub1ClassController::DoCancel panic with error %d", EPanicUnexpectedState ); - User::Panic(Kstub1CcPanicCategory,EPanicUnexpectedStatus); + _USB_PANIC(Kstub1CcPanicCategory, EPanicUnexpectedState); } *iReportStatus = KErrNone; User::RequestComplete(iReportStatus, KErrCancel); @@ -319,9 +294,7 @@ */ TInt CUsbstub1ClassController::RunError(TInt /*aError*/) { - OstTrace1( TRACE_FATAL, CUSBSTUB1CLASSCONTROLLER_RUNERROR, - "CUsbstub1ClassController::RunError panic with error %d", EUnusedFunction); - __ASSERT_DEBUG(EFalse,User::Panic(Kstub1CcPanicCategory,EPanicUnexpectedStatus)); + __ASSERT_DEBUG( EFalse, _USB_PANIC(Kstub1CcPanicCategory, EUnusedFunction) ); return KErrNone; } @@ -331,33 +304,25 @@ * endpoint and, if found, configuring the interface. */ { - OstTrace0( TRACE_NORMAL, CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE, - _L8(">>CCdcControlInterface::SetUpInterface")); - + LOGTEXT(_L8(">>CCdcControlInterface::SetUpInterface")); + TUsbDeviceCaps dCaps; TInt ret = iLdd.DeviceCaps(dCaps); - OstTrace0( TRACE_NORMAL, CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP1, - _L8("\tchecking result of DeviceCaps")); - + LOGTEXT(_L8("\tchecking result of DeviceCaps")); if ( ret ) { - OstTrace1( TRACE_ERROR, CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP2, - _L8("<(dCaps().iTotalEndpoints); - OstTrace1( TRACE_NORMAL, CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP3, - _L8("\tiTotalEndpoints = %d"), totalEndpoints); - + LOGTEXT2(_L8("\tiTotalEndpoints = %d"), totalEndpoints); if ( totalEndpoints < KRequiredNumberOfEndpoints ) { - OstTrace1( TRACE_ERROR, CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP4, - _L8("<(data), sizeof(data), sizeof(data)); ret = iLdd.EndpointCaps(dataptr); - OstTrace0( TRACE_NORMAL, CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP5, - _L8("\tchecking result of EndpointCaps")); - + LOGTEXT(_L8("\tchecking result of EndpointCaps")); if ( ret ) { - OstTrace1( TRACE_ERROR, CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP6, - _L8("< -#endif diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmanager_suite/Stub1CC/traces/fixed_id.definitions --- a/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub1CC/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_ERROR=0x82 -[GROUP]TRACE_FATAL=0x81 -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_ERROR[0x82]_CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP2=0x1 -[TRACE]TRACE_ERROR[0x82]_CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP4=0x2 -[TRACE]TRACE_ERROR[0x82]_CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP6=0x3 -[TRACE]TRACE_ERROR[0x82]_CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP9=0x4 -[TRACE]TRACE_FATAL[0x81]_CUSBSTUB1CLASSCONTROLLER_DOCANCEL=0x3 -[TRACE]TRACE_FATAL[0x81]_CUSBSTUB1CLASSCONTROLLER_RUNERROR=0x4 -[TRACE]TRACE_FATAL[0x81]_CUSBSTUB1CLASSCONTROLLER_RUNL=0x1 -[TRACE]TRACE_FATAL[0x81]_CUSBSTUB1CLASSCONTROLLER_RUNL_DUP1=0x2 -[TRACE]TRACE_FATAL[0x81]_CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP7=0x5 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB1CLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY=0xb -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB1CLASSCONTROLLER_GETDESCRIPTORINFO_EXIT=0xc -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB1CLASSCONTROLLER_RUNL_ENTRY=0x9 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB1CLASSCONTROLLER_RUNL_EXIT=0xa -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB1CLASSCONTROLLER_START_ENTRY=0x1 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB1CLASSCONTROLLER_START_EXIT=0x2 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB1CLASSCONTROLLER_START_EXIT_DUP1=0x3 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB1CLASSCONTROLLER_START_EXIT_DUP2=0x4 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB1CLASSCONTROLLER_STOP_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB1CLASSCONTROLLER_STOP_EXIT=0x6 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB1CLASSCONTROLLER_STOP_EXIT_DUP1=0x7 -[TRACE]TRACE_FLOW[0x8A]_DUP2_CUSBSTUB1CLASSCONTROLLER_STOP_EXIT=0x8 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE=0x7 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP1=0x8 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP10=0x11 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP11=0x12 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP3=0xa -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP5=0xc -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP8=0xf -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_START=0x1 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_START_DUP1=0x2 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_DOCANCEL=0x5 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_RUNERROR=0x6 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_RUNL=0x3 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_RUNL_DUP1=0x4 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP2=0x9 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP4=0xb -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP6=0xd -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP7=0xe -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB1CLASSCONTROLLER_SETUPINTERFACE_DUP9=0x10 diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmanager_suite/Stub2CC/group/Stub2CC.mmp --- a/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub2CC/group/Stub2CC.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub2CC/group/Stub2CC.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -34,8 +34,7 @@ SOURCE Stub2CC.cpp USERINCLUDE ../inc -USERINCLUDE ../../../../usbmgr/usbman/server/public -USERINCLUDE ../traces +USERINCLUDE ../../../../usbmgr/usbman/server/public OS_LAYER_SYSTEMINCLUDE_SYMBIAN @@ -48,3 +47,4 @@ LIBRARY usbclasscontroller.lib LIBRARY esock.lib +#include diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmanager_suite/Stub2CC/inc/Stub2CC.h --- a/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub2CC/inc/Stub2CC.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub2CC/inc/Stub2CC.h Wed Sep 01 12:35:00 2010 +0100 @@ -40,7 +40,12 @@ const TInt Kstub2NumberOfInterfacesPerstub2Function = 2; // data and control interfaces - +// The name of the ini file specifying the number of functions required different from default +/* +_LIT(Kstub2FunctionsIniFileName, "NumberOfstub2Functions.ini"); +_LIT(Kstub2ConfigSection,"stub2_CONF"); +_LIT(KNumberOfstub2FunctionsKeyWord,"NumberOfstub2Functions"); +*/ // Lengths of the various bits of the descriptor. Taken from the USB // WMCDC specification, v1.0. const TInt Kstub2InterfaceDescriptorLength = 3; diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmanager_suite/Stub2CC/src/Stub2CC.cpp --- a/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub2CC/src/Stub2CC.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub2CC/src/Stub2CC.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -21,10 +21,12 @@ /** @file */ + +#include "Stub2CC.h" #include #include #include -#include "Stub2CC.h" +#include #ifdef __FLOG_ACTIVE _LIT8(KLogComponent, "STUB2CC"); @@ -32,11 +34,6 @@ #include "usbmaninternalconstants.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "Stub2CCTraces.h" -#endif - // Panic category @@ -164,39 +161,34 @@ */ void CUsbstub2ClassController::Start(TRequestStatus& aStatus) { - OstTraceFunctionEntry0( CUSBSTUB2CLASSCONTROLLER_START_ENTRY ); - + LOG_FUNC + aStatus = KRequestPending; iReportStatus = &aStatus; //If we are already started then just complete the request. if (iState == EUsbServiceStarted) { User::RequestComplete(iReportStatus, KErrNone); - OstTraceFunctionExit0( CUSBSTUB2CLASSCONTROLLER_START_EXIT ); return; } if (iFailToStart) { User::RequestComplete(iReportStatus, KErrGeneral); - OstTraceFunctionExit0( CUSBSTUB2CLASSCONTROLLER_START_EXIT_DUP1 ); return; } iState = EUsbServiceStarting; #ifndef __WINS__ TInt ret = iLdd.Open(0); - OstTrace1( TRACE_NORMAL, CUSBSTUB2CLASSCONTROLLER_START,_L8("Open LDD, ret=%d"),ret); + LOGTEXT2(_L8("Open LDD, ret=%d"), ret); ret = SetUpInterface(); - OstTrace1( TRACE_NORMAL, CUSBSTUB2CLASSCONTROLLER_START_DUP1, - _L8("SetUpInterface(),ret=%d"),ret); - + LOGTEXT2(_L8("SetUpInterface(), ret=%d"), ret); #endif iTimer.After(iStatus, iStartDelay*1000); //convert from usec to msec SetActive(); - OstTraceFunctionExit0( CUSBSTUB2CLASSCONTROLLER_START_EXIT_DUP2 ); } /** @@ -206,21 +198,20 @@ */ void CUsbstub2ClassController::Stop(TRequestStatus& aStatus) { - OstTraceFunctionEntry0( CUSBSTUB2CLASSCONTROLLER_STOP_ENTRY ); + LOG_FUNC + aStatus = KRequestPending; iReportStatus = &aStatus; //If we are already idle then just complete the request. if (iState == EUsbServiceIdle) { User::RequestComplete(iReportStatus, KErrNone); - OstTraceFunctionExit0( CUSBSTUB2CLASSCONTROLLER_STOP_EXIT ); return; } if (iFailToStop) { User::RequestComplete(iReportStatus, KErrGeneral); - OstTraceFunctionExit0( CUSBSTUB2CLASSCONTROLLER_STOP_EXIT_DUP1 ); return; } @@ -232,7 +223,6 @@ iTimer.After(iStatus, iStopDelay*1000); //convert from usec to msec SetActive(); - OstTraceFunctionExit0( CUSBSTUB2CLASSCONTROLLER_STOP_EXIT_DUP2 ); } /** @@ -242,12 +232,10 @@ */ void CUsbstub2ClassController::GetDescriptorInfo(TUsbDescriptor& aDescriptorInfo) const { - OstTraceFunctionEntry0( CUSBSTUB2CLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY ); - + LOG_FUNC + aDescriptorInfo.iLength = Kstub2DescriptorLength; aDescriptorInfo.iNumInterfaces = Kstub2NumberOfInterfacesPerstub2Function; - - OstTraceFunctionExit0( CUSBSTUB2CLASSCONTROLLER_GETDESCRIPTORINFO_EXIT ); } @@ -256,14 +244,9 @@ */ void CUsbstub2ClassController::RunL() { - OstTraceFunctionEntry0( CUSBSTUB2CLASSCONTROLLER_RUNL_ENTRY ); - - if(iStatus != KErrNone) - { - OstTrace1( TRACE_FATAL, CUSBSTUB2CLASSCONTROLLER_RUNL, - "CUsbstub2ClassController::RunL panic with error %d", EPanicUnexpectedStatus); - __ASSERT_DEBUG(EFalse,User::Panic(Kstub2CcPanicCategory,EPanicUnexpectedStatus)); - } + LOG_FUNC + + __ASSERT_DEBUG( iStatus == KErrNone, _USB_PANIC(Kstub2CcPanicCategory, EPanicUnexpectedStatus) ); switch (iState) { case EUsbServiceStarting: @@ -272,14 +255,11 @@ case EUsbServiceStopping: iState = EUsbServiceIdle; break; - default: - OstTrace1( TRACE_FATAL, CUSBSTUB2CLASSCONTROLLER_RUNL_DUP1, - "CUsbstub2ClassController::RunL panic with error %d", EPanicUnexpectedStatus); - User::Panic(Kstub2CcPanicCategory, EPanicUnexpectedState); + default: + _USB_PANIC(Kstub2CcPanicCategory, EPanicUnexpectedState); } *iReportStatus = KErrNone; User::RequestComplete(iReportStatus, iStatus.Int()); - OstTraceFunctionExit0( CUSBSTUB2CLASSCONTROLLER_RUNL_EXIT ); } /** @@ -301,10 +281,8 @@ case EUsbServiceStopping: iState = EUsbServiceStarted; break; - default: - OstTrace1( TRACE_FATAL, CUSBSTUB2CLASSCONTROLLER_DOCANCEL, - "CUsbstub2ClassController::DoCancel panic with error %d", EPanicUnexpectedState ); - User::Panic(Kstub2CcPanicCategory, EPanicUnexpectedState); + default: + _USB_PANIC(Kstub2CcPanicCategory, EPanicUnexpectedState); } *iReportStatus = KErrNone; User::RequestComplete(iReportStatus, KErrCancel); @@ -319,10 +297,7 @@ */ TInt CUsbstub2ClassController::RunError(TInt /*aError*/) { - OstTrace1( TRACE_FATAL, CUSBSTUB2CLASSCONTROLLER_RUNERROR, - "CUsbstub2ClassController::RunError panic with error %d", - EUnusedFunction); - __ASSERT_DEBUG(EFalse,User::Panic(Kstub2CcPanicCategory, EUnusedFunction)); + __ASSERT_DEBUG( EFalse, _USB_PANIC(Kstub2CcPanicCategory, EUnusedFunction) ); return KErrNone; } @@ -332,33 +307,25 @@ * endpoint and, if found, configuring the interface. */ { - OstTrace0( TRACE_NORMAL, CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE, - _L8(">>CCdcControlInterface::SetUpInterface")); - + LOGTEXT(_L8(">>CCdcControlInterface::SetUpInterface")); + TUsbDeviceCaps dCaps; TInt ret = iLdd.DeviceCaps(dCaps); - OstTrace0( TRACE_NORMAL, CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP1, - _L8("\tchecking result of DeviceCaps")); - + LOGTEXT(_L8("\tchecking result of DeviceCaps")); if ( ret ) { - OstTrace1( TRACE_ERROR, CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP2, - _L8("<(dCaps().iTotalEndpoints); - OstTrace1( TRACE_NORMAL, CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP3, - _L8("\tiTotalEndpoints = %d"), totalEndpoints ); - + LOGTEXT2(_L8("\tiTotalEndpoints = %d"), totalEndpoints); if ( totalEndpoints < KRequiredNumberOfEndpoints ) { - OstTrace1( TRACE_ERROR, CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP4, - _L8("<(data), sizeof(data), sizeof(data)); ret = iLdd.EndpointCaps(dataptr); - OstTrace0( TRACE_NORMAL, CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP5, - _L8("\tchecking result of EndpointCaps")); - + LOGTEXT(_L8("\tchecking result of EndpointCaps")); if ( ret ) { - OstTrace1( TRACE_ERROR, CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP6, - _L8("< -#endif diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmanager_suite/Stub2CC/traces/fixed_id.definitions --- a/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub2CC/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_ERROR=0x82 -[GROUP]TRACE_FATAL=0x81 -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_ERROR[0x82]_CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP2=0x1 -[TRACE]TRACE_ERROR[0x82]_CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP4=0x2 -[TRACE]TRACE_ERROR[0x82]_CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP6=0x3 -[TRACE]TRACE_FATAL[0x81]_CUSBSTUB2CLASSCONTROLLER_DOCANCEL=0x3 -[TRACE]TRACE_FATAL[0x81]_CUSBSTUB2CLASSCONTROLLER_RUNERROR=0x4 -[TRACE]TRACE_FATAL[0x81]_CUSBSTUB2CLASSCONTROLLER_RUNL=0x1 -[TRACE]TRACE_FATAL[0x81]_CUSBSTUB2CLASSCONTROLLER_RUNL_DUP1=0x2 -[TRACE]TRACE_FATAL[0x81]_CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP7=0x5 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB2CLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY=0x9 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB2CLASSCONTROLLER_GETDESCRIPTORINFO_EXIT=0xa -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB2CLASSCONTROLLER_RUNL_ENTRY=0xb -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB2CLASSCONTROLLER_RUNL_EXIT=0xc -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB2CLASSCONTROLLER_START_ENTRY=0x1 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB2CLASSCONTROLLER_START_EXIT=0x2 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB2CLASSCONTROLLER_START_EXIT_DUP1=0x3 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB2CLASSCONTROLLER_START_EXIT_DUP2=0x4 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB2CLASSCONTROLLER_STOP_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB2CLASSCONTROLLER_STOP_EXIT=0x6 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB2CLASSCONTROLLER_STOP_EXIT_DUP1=0x7 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB2CLASSCONTROLLER_STOP_EXIT_DUP2=0x8 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE=0x7 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP1=0x8 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP10=0x11 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP11=0x12 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP3=0xa -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP5=0xc -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP8=0xf -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP9=0x10 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_START=0x1 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_START_DUP1=0x2 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_DOCANCEL=0x5 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_RUNERROR=0x6 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_RUNL=0x3 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_RUNL_DUP1=0x4 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP2=0x9 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP4=0xb -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP6=0xd -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB2CLASSCONTROLLER_SETUPINTERFACE_DUP7=0xe diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmanager_suite/Stub3CC/group/Stub3CC.mmp --- a/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub3CC/group/Stub3CC.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub3CC/group/Stub3CC.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -34,11 +34,9 @@ SOURCE Stub3CC.cpp USERINCLUDE ../inc -USERINCLUDE ../../../../usbmgr/usbman/server/public -USERINCLUDE ../traces +USERINCLUDE ../../../../usbmgr/usbman/server/public + OS_LAYER_SYSTEMINCLUDE_SYMBIAN -SYSTEMINCLUDE /epoc32/include -SYSTEMINCLUDE /epoc32/include/ecom start resource 10203288.rss @@ -49,3 +47,4 @@ LIBRARY usbclasscontroller.lib LIBRARY esock.lib +#include diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmanager_suite/Stub3CC/inc/Stub3CC.h --- a/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub3CC/inc/Stub3CC.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub3CC/inc/Stub3CC.h Wed Sep 01 12:35:00 2010 +0100 @@ -40,7 +40,12 @@ const TInt Kstub3NumberOfInterfacesPerstub3Function = 2; // data and control interfaces - +// The name of the ini file specifying the number of functions required different from default +/* +_LIT(Kstub3FunctionsIniFileName, "NumberOfstub3Functions.ini"); +_LIT(Kstub3ConfigSection,"stub3_CONF"); +_LIT(KNumberOfstub3FunctionsKeyWord,"NumberOfstub3Functions"); +*/ // Lengths of the various bits of the descriptor. Taken from the USB // WMCDC specification, v1.0. const TInt Kstub3InterfaceDescriptorLength = 3; diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmanager_suite/Stub3CC/src/Stub3CC.cpp --- a/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub3CC/src/Stub3CC.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub3CC/src/Stub3CC.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -22,10 +22,11 @@ @file */ +#include "Stub3CC.h" #include #include #include -#include "Stub3CC.h" +#include #ifdef __FLOG_ACTIVE _LIT8(KLogComponent, "STUB3CC"); @@ -33,11 +34,6 @@ #include "usbmaninternalconstants.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "Stub3CCTraces.h" -#endif - // Panic category @@ -166,22 +162,20 @@ */ void CUsbstub3ClassController::Start(TRequestStatus& aStatus) { - OstTraceFunctionEntry0( CUSBSTUB3CLASSCONTROLLER_START_ENTRY ); - + LOG_FUNC + aStatus = KRequestPending; iReportStatus = &aStatus; //If we are already started then just complete the request. if (iState == EUsbServiceStarted) { User::RequestComplete(iReportStatus, KErrNone); - OstTraceFunctionExit0( CUSBSTUB3CLASSCONTROLLER_START_EXIT ); return; } if (iFailToStart) { User::RequestComplete(iReportStatus, KErrGeneral); - OstTraceFunctionExit0( CUSBSTUB3CLASSCONTROLLER_START_EXIT_DUP1 ); return; } @@ -189,18 +183,14 @@ #ifndef __WINS__ TInt ret = iLdd.Open(0); - OstTrace1( TRACE_NORMAL, CUSBSTUB3CLASSCONTROLLER_START, _L8("Open LDD, ret=%d"), ret ); - + LOGTEXT2(_L8("Open LDD, ret=%d"), ret); ret = SetUpInterface(); - OstTrace1( TRACE_NORMAL, CUSBSTUB3CLASSCONTROLLER_START_DUP1, - _L8("SetUpInterface(), ret=%d"), ret ); - + LOGTEXT2(_L8("SetUpInterface(), ret=%d"), ret); #endif iTimer.After(iStatus, iStartDelay*1000); //convert from usec to msec SetActive(); - OstTraceFunctionExit0( CUSBSTUB3CLASSCONTROLLER_START_EXIT_DUP2 ); } /** @@ -210,22 +200,20 @@ */ void CUsbstub3ClassController::Stop(TRequestStatus& aStatus) { - OstTraceFunctionEntry0( CUSBSTUB3CLASSCONTROLLER_STOP_ENTRY ); - + LOG_FUNC + aStatus = KRequestPending; iReportStatus = &aStatus; //If we are already idle then just complete the request. if (iState == EUsbServiceIdle) { User::RequestComplete(iReportStatus, KErrNone); - OstTraceFunctionExit0( CUSBSTUB3CLASSCONTROLLER_STOP_EXIT ); return; } if (iFailToStop) { User::RequestComplete(iReportStatus, KErrGeneral); - OstTraceFunctionExit0( CUSBSTUB3CLASSCONTROLLER_STOP_EXIT_DUP1 ); return; } @@ -238,7 +226,6 @@ iTimer.After(iStatus, iStopDelay*1000); //convert from usec to msec SetActive(); - OstTraceFunctionExit0( CUSBSTUB3CLASSCONTROLLER_STOP_EXIT_DUP2 ); } /** @@ -248,12 +235,10 @@ */ void CUsbstub3ClassController::GetDescriptorInfo(TUsbDescriptor& aDescriptorInfo) const { - OstTraceFunctionEntry0( CUSBSTUB3CLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY ); - + LOG_FUNC + aDescriptorInfo.iLength = Kstub3DescriptorLength; aDescriptorInfo.iNumInterfaces = Kstub3NumberOfInterfacesPerstub3Function; - - OstTraceFunctionExit0( CUSBSTUB3CLASSCONTROLLER_GETDESCRIPTORINFO_EXIT ); } @@ -262,14 +247,9 @@ */ void CUsbstub3ClassController::RunL() { - OstTraceFunctionEntry0( CUSBSTUB3CLASSCONTROLLER_RUNL_ENTRY ); - - if(iStatus != KErrNone) - { - OstTrace1( TRACE_FATAL, CUSBSTUB3CLASSCONTROLLER_RUNL, - "CUsbstub3ClassController::RunL panic with error %d", EPanicUnexpectedStatus ); - __ASSERT_DEBUG(EFalse,User::Panic(Kstub3CcPanicCategory,EPanicUnexpectedStatus)); - } + LOG_FUNC + + __ASSERT_DEBUG( iStatus == KErrNone, _USB_PANIC(Kstub3CcPanicCategory, EPanicUnexpectedStatus) ); switch (iState) { case EUsbServiceStarting: @@ -279,13 +259,10 @@ iState = EUsbServiceIdle; break; default: - OstTrace1( TRACE_FATAL, CUSBSTUB3CLASSCONTROLLER_RUNL_DUP1, - "CUsbstub3ClassController::RunL panic with error %d", EPanicUnexpectedStatus ); - User::Panic(Kstub3CcPanicCategory,EPanicUnexpectedStatus); + _USB_PANIC(Kstub3CcPanicCategory, EPanicUnexpectedState); } *iReportStatus = KErrNone; User::RequestComplete(iReportStatus, iStatus.Int()); - OstTraceFunctionExit0( CUSBSTUB3CLASSCONTROLLER_RUNL_EXIT ); } /** @@ -307,10 +284,8 @@ case EUsbServiceStopping: iState = EUsbServiceStarted; break; - default: - OstTrace1( TRACE_FATAL, CUSBSTUB3CLASSCONTROLLER_DOCANCEL, - "CUsbstub3ClassController::DoCancel panic with error %d", EPanicUnexpectedStatus ); - User::Panic(Kstub3CcPanicCategory,EPanicUnexpectedStatus); + default: + _USB_PANIC(Kstub3CcPanicCategory, EPanicUnexpectedState); } *iReportStatus = KErrNone; User::RequestComplete(iReportStatus, KErrCancel); @@ -325,9 +300,7 @@ */ TInt CUsbstub3ClassController::RunError(TInt /*aError*/) { - OstTrace1( TRACE_FATAL, CUSBSTUB3CLASSCONTROLLER_RUNERROR, - "CUsbstub3ClassController::RunError panic with error %d", EUnusedFunction ); - __ASSERT_DEBUG(EFalse,User::Panic(Kstub3CcPanicCategory,EUnusedFunction)); + __ASSERT_DEBUG( EFalse, _USB_PANIC(Kstub3CcPanicCategory, EUnusedFunction) ); return KErrNone; } @@ -337,34 +310,25 @@ * endpoint and, if found, configuring the interface. */ { - OstTraceFunctionEntry0( CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_ENTRY ); - + LOG_FUNC + TUsbDeviceCaps dCaps; TInt ret = iLdd.DeviceCaps(dCaps); - OstTrace0( TRACE_NORMAL, CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE, - _L8("\tchecking result of DeviceCaps")); - + LOGTEXT(_L8("\tchecking result of DeviceCaps")); if ( ret ) { - OstTrace1( TRACE_ERROR, CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP1, - _L8("<(dCaps().iTotalEndpoints); - OstTrace1( TRACE_NORMAL, CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP2, - _L8("\tiTotalEndpoints = %d"), totalEndpoints ); - + LOGTEXT2(_L8("\tiTotalEndpoints = %d"), totalEndpoints); if ( totalEndpoints < KRequiredNumberOfEndpoints ) { - OstTrace1( TRACE_ERROR, CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP3, - _L8("<(data), sizeof(data), sizeof(data)); ret = iLdd.EndpointCaps(dataptr); - OstTrace0( TRACE_NORMAL, CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP4, - _L8("\tchecking result of EndpointCaps")); - + LOGTEXT(_L8("\tchecking result of EndpointCaps")); if ( ret ) { - OstTrace1( TRACE_ERROR, CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP5, - _L8("< -#endif diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmanager_suite/Stub3CC/traces/fixed_id.definitions --- a/usbmgmt/usbmgrtest/t_usbmanager_suite/Stub3CC/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_ERROR=0x82 -[GROUP]TRACE_FATAL=0x81 -[GROUP]TRACE_FLOW=0x8a -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_ERROR[0x82]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP1=0x1 -[TRACE]TRACE_ERROR[0x82]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP3=0x2 -[TRACE]TRACE_ERROR[0x82]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP5=0x3 -[TRACE]TRACE_ERROR[0x82]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP8=0x4 -[TRACE]TRACE_FATAL[0x81]_CUSBSTUB3CLASSCONTROLLER_DOCANCEL=0x3 -[TRACE]TRACE_FATAL[0x81]_CUSBSTUB3CLASSCONTROLLER_RUNERROR=0x4 -[TRACE]TRACE_FATAL[0x81]_CUSBSTUB3CLASSCONTROLLER_RUNL=0x1 -[TRACE]TRACE_FATAL[0x81]_CUSBSTUB3CLASSCONTROLLER_RUNL_DUP1=0x2 -[TRACE]TRACE_FATAL[0x81]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP6=0x5 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_GETDESCRIPTORINFO_ENTRY=0x9 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_GETDESCRIPTORINFO_EXIT=0xa -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_RUNL_ENTRY=0xb -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_RUNL_EXIT=0xc -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_ENTRY=0xd -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_EXIT=0xe -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_EXIT_DUP1=0xf -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_EXIT_DUP2=0x10 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_EXIT_DUP3=0x11 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_EXIT_DUP4=0x12 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_START_ENTRY=0x1 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_START_EXIT=0x2 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_START_EXIT_DUP1=0x3 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_START_EXIT_DUP2=0x4 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_STOP_ENTRY=0x5 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_STOP_EXIT=0x6 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_STOP_EXIT_DUP1=0x7 -[TRACE]TRACE_FLOW[0x8A]_CUSBSTUB3CLASSCONTROLLER_STOP_EXIT_DUP2=0x8 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE=0x7 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP10=0x11 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP2=0x9 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP4=0xb -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP7=0xe -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP9=0x10 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_START=0x1 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_START_DUP1=0x2 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_DOCANCEL=0x5 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_RUNERROR=0x6 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_RUNL=0x3 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_RUNL_DUP1=0x4 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP1=0x8 -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP3=0xa -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP5=0xc -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP6=0xd -[[OBSOLETE]][TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_SETUPINTERFACE_DUP8=0xf diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmanager_suite/T_UsbManager/src/CUsbComponentTest.cpp --- a/usbmgmt/usbmgrtest/t_usbmanager_suite/T_UsbManager/src/CUsbComponentTest.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_usbmanager_suite/T_UsbManager/src/CUsbComponentTest.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -403,6 +403,7 @@ INFO_PRINTF1(_L("Can't get class id from config file")); SetTestStepResult(EFail); } +// TUid temp = uidArray[k]; TEST(uidArray[k] ==TUid::Uid(classID)); } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmanager_suite/T_UsbManager/src/T_UsbManagerServer.cpp --- a/usbmgmt/usbmgrtest/t_usbmanager_suite/T_UsbManager/src/T_UsbManagerServer.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_usbmanager_suite/T_UsbManager/src/T_UsbManagerServer.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -53,6 +53,7 @@ // Server Logging. server->StartL(KServerName); + //server-> ConstructL(KServerName); CleanupStack::Pop(server); return server; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmanager_suite/mscc/group/te_msclasscontroller.mmp --- a/usbmgmt/usbmgrtest/t_usbmanager_suite/mscc/group/te_msclasscontroller.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_usbmanager_suite/mscc/group/te_msclasscontroller.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2004-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" @@ -42,7 +42,6 @@ USERINCLUDE ../inc USERINCLUDE ../../../../usbmgr/device/classdrivers/ms/classcontroller/inc -USERINCLUDE ../../../../usbmgr/device/classdrivers/ms/classcontroller/traces OS_LAYER_SYSTEMINCLUDE_SYMBIAN LIBRARY euser.lib @@ -52,3 +51,4 @@ LIBRARY bafl.lib LIBRARY usbclasscontroller.lib +#include diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmodem/inc/t_usbmodem.h --- a/usbmgmt/usbmgrtest/t_usbmodem/inc/t_usbmodem.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_usbmodem/inc/t_usbmodem.h Wed Sep 01 12:35:00 2010 +0100 @@ -146,7 +146,7 @@ RComm* iCommPort; }; -class CDuplex : public CBase, MTransferNotifier +class CDuplex : public MTransferNotifier, CBase { public: // Construction diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_usbmodem/src/t_usbmodem.cpp --- a/usbmgmt/usbmgrtest/t_usbmodem/src/t_usbmodem.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_usbmodem/src/t_usbmodem.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -46,6 +46,7 @@ RDebug::Print(_L(": CSimplexRead::StartL Warning - Already active\n")); return; } + //iBuffer.SetMax(); iCommPort->ReadOneOrMore(iStatus, iBuffer); SetActive(); } @@ -55,6 +56,8 @@ #ifdef _DEBUG RDebug::Print(_L(": CSimplexRead::RunL - iStatus:%d iBuffer.Length:%d TotalAmount Left:%d\n"),iStatus.Int(),iBuffer.Length(),iTotalAmount); #endif + //RDebug::Print(_L(">%S<\n"),&iBuffer); + //Notify Duplex object iDuplex.NotifyRead(iStatus.Int(),iBuffer.Length(), iBuffer); } @@ -339,6 +342,7 @@ RDebug::Print(_L(": Serial RTS on")); #endif TheSerialPort.SetSignals( KSignalRTS, 0 ); + //TheUsbPort.SetSignals( KSignalCTS, 0 ); } else { @@ -346,6 +350,7 @@ RDebug::Print(_L(": Serial RTS off")); #endif TheSerialPort.SetSignals( 0, KSignalRTS ); + //TheUsbPort.SetSignals( 0, KSignalCTS ); } } @@ -357,6 +362,7 @@ RDebug::Print(_L(": Serial DTR on")); #endif TheSerialPort.SetSignals( KSignalDTR, 0 ); + //TheUsbPort.SetSignals( KSignalDSR, 0 ); } else { @@ -364,6 +370,7 @@ RDebug::Print(_L(": Serial DTR off")); #endif TheSerialPort.SetSignals( 0, KSignalDTR ); + //TheUsbPort.SetSignals( 0, KSignalDSR ); } } @@ -527,6 +534,7 @@ iUsbConfigChangeNotifier->Cancel(); iSerialSignalChangeNotifier->Cancel(); iUsbSignalChangeNotifier->Cancel(); + //iUsbFControlNotifier->Cancel(); iUsbToSerial->Cancel(); iSerialToUsb->Cancel(); @@ -563,6 +571,7 @@ iSerialSignalChangeNotifier = CSignalChangeNotifier::NewL(EFalse); iUsbSignalChangeNotifier = CSignalChangeNotifier::NewL(ETrue); +// iUsbFControlNotifier = CFControlChangeNotifier::NewL(); iUsbConfigChangeNotifier = CConfigChangeNotifier::NewL(); } @@ -581,6 +590,7 @@ TRAP(ignoreErr, iUsbConfigChangeNotifier->StartL()); TRAP(ignoreErr, iSerialSignalChangeNotifier->StartL()); TRAP(ignoreErr, iUsbSignalChangeNotifier->StartL()); +// iUsbFControlNotifier->StartL(); TRAP(ignoreErr, iUsbToSerial->StartL()); TRAP(ignoreErr, iSerialToUsb->StartL()); @@ -691,6 +701,107 @@ } } +/* +LOCAL_C TInt RateToInt(TBps aRate) + { + switch (aRate) + { + case EBps115200: return 115200; + case EBps57600: return 57600; + case EBps38400: return 38400; + case EBps19200: return 19200; + case EBps9600: return 9600; + case EBps7200: return 7200; + case EBps4800: return 4800; + case EBps3600: return 3600; + case EBps2400: return 2400; + case EBps2000: return 2000; + case EBps1800: return 1800; + case EBps1200: return 1200; + case EBps600: return 600; + case EBps300: return 300; + case EBps150: return 150; + case EBps134: return 134; + case EBps110: return 110; + case EBps75: return 75; + case EBps50: return 50; + default: return -1; + } + } + +LOCAL_C void ConfigString(TDes &aBuf, const TCommNotificationV01 &aConfig) + { + // Config + aBuf.Format(_L(" %d "), RateToInt(aConfig.iRate)); + switch (aConfig.iParity) + { + case EParityEven: aBuf.Append(_L("E")); break; + case EParityOdd: aBuf.Append(_L("O")); break; + case EParityNone: aBuf.Append(_L("N")); break; + default: break; + } + switch (aConfig.iDataBits) + { + case EData5: aBuf.Append(_L("5")); break; + case EData6: aBuf.Append(_L("6")); break; + case EData7: aBuf.Append(_L("7")); break; + case EData8: aBuf.Append(_L("8")); break; + default: break; + } + if (aConfig.iStopBits==EStop1) + aBuf.Append(_L("1 ")); + else + aBuf.Append(_L("2 ")); + + aBuf.Append(_L("Use:")); + if (aConfig.iHandshake==0) + aBuf.Append(_L("NoControl ")); + if (aConfig.iHandshake&(KConfigObeyXoff|KConfigSendXoff)) + aBuf.Append(_L("XonXoff ")); + if (aConfig.iHandshake&KConfigObeyCTS) + aBuf.Append(_L("CTS/RTS ")); + if (aConfig.iHandshake&KConfigObeyDSR) + aBuf.Append(_L("DSR/DTR ")); + if (aConfig.iHandshake&KConfigWriteBufferedComplete) + aBuf.Append(_L("Early ")); + //|KConfigObeyDCD|KConfigFailDCD|)) + +// if (aConfig.iBreak==TEiger::EBreakOn) +// aBuf.Append(_L("Brk ")); +// if (aConfig.iFifo==EFifoEnable) +// aBuf.Append(_L("Fifo ")); + } + +LOCAL_C void PrintCaps() + { + TCommCaps2 caps; + TheUsbPort.Caps(caps); + TUint notifycaps = caps().iNotificationCaps; + RDebug::Print(_L("Capabilities:\n")); + if (notifycaps&KNotifySignalsChangeSupported) + RDebug::Print(_L("Notify Signals Change supported\n")); + if (notifycaps&KNotifyRateChangeSupported) + RDebug::Print(_L("Notify Rate Change supported\n")); + if (notifycaps&KNotifyDataFormatChangeSupported) + RDebug::Print(_L("Notify Data Format Change supported\n")); + if (notifycaps&KNotifyHandshakeChangeSupported) + RDebug::Print(_L("Notify Handshake Change supported\n")); + if (notifycaps&KNotifyBreakSupported) + RDebug::Print(_L("Notify Break supported\n")); + if (notifycaps&KNotifyFlowControlChangeSupported) + RDebug::Print(_L("Notify Flow Control Change supported\n")); + if (notifycaps&KNotifyDataAvailableSupported) + RDebug::Print(_L("Notify Data Available supported\n")); + if (notifycaps&KNotifyOutputEmptySupported) + RDebug::Print(_L("Notify Output Empty supported\n")); + RDebug::Print(_L("\n")); + if ((caps().iRoleCaps)&KCapsRoleSwitchSupported) + RDebug::Print(_L("Role switching is supported\n")); + RDebug::Print(_L("\n")); + if ((caps().iFlowControlCaps)&KCapsFlowControlStatusSupported) + RDebug::Print(_L("Retrieve flow control status is supported\n")); + } +*/ LOCAL_C void DoInitL() { // Do the necessary initialisation of the C32, 2 comm ports, USB stuff. @@ -790,6 +901,8 @@ } RDebug::Print(_L("E32Main: Opened Serial Comm Port")); + // Print the caps + //PrintCaps(); RDebug::Print(_L("E32Main: Reading Serial Comm Port config")); TheSerialPort.Config(TheSerialConfigBuf); // get config @@ -798,10 +911,12 @@ TBuf<80> buf; buf.FillZ(); + //ConfigString(buf, TheUsbConfig); RDebug::Print(_L("E32Main: Old USB Port Settings")); RDebug::Print(buf); RDebug::Print(_L("")); buf.FillZ(); + //ConfigString(buf, TheSerialConfig); RDebug::Print(_L("E32Main: Old Serial Port Settings")); RDebug::Print(buf); RDebug::Print(_L("")); diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/t_whcm_cc/src/t_whcm_cc.cpp --- a/usbmgmt/usbmgrtest/t_whcm_cc/src/t_whcm_cc.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/t_whcm_cc/src/t_whcm_cc.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -117,6 +117,17 @@ current_test_state = EUSBManConnected; break; case EUSBManConnected: + // Register as primary client. + // *** Obsolete *** + /* + r = usbman->RegisterAsPrimarySession(); + if (r != KErrNone) + { + test.Printf(_L(" Failed to register as primary client. Error = %d\n"), r); + return r; + } + test.Printf(_L(" Registered as primary client.\n")); + */ current_test_state = EPrimaryRegistered; break; default: @@ -149,6 +160,8 @@ current_test_state = EPrimaryRegistered; break; case EPrimaryRegistered: + // *** Obsolete *** + // usbman->DeregisterAsPrimarySession(); current_test_state = EUSBManConnected; break; case EUSBManConnected: @@ -224,6 +237,45 @@ return KErrNone; } + +/** + * Executes test A2 (as detailed in the USB Manager Test Specification). + * No longer a relevant test. + */ +/*static TInt RunTest_A2() + { + TInt r; + + test.Next(_L("Test A2.\n")); + + // Perform common startup + current_test_state = EStart; + r = CommonStart(); + if (r != KErrNone) + return r; + + // Start the USB Manager + TRequestStatus status; + test.Printf(_L("Starting.\n")); + usbman->Start(status); + + // Wait for specific time (has to be less than the time to process a start request) + timer.After(status, CANCEL_START_REQ_DELAY); + User::WaitForRequest(status); + + // Cancel the start request + test.Printf(_L("Cancelling.\n")); + usbman->StartCancel(); + + // Check service status + test.Printf(_L("Checking service status.\n")); + r = CheckServiceState(EUsbServiceIdle); + if ( r != KErrNone) + return r; + + return KErrNone; + } +*/ /** * Executes test A3 (as detailed in the USB Manager Test Specification). */ @@ -261,6 +313,47 @@ } /** + * Executes test A4 (as detailed in the USB Manager Test Specification). + * No longer a relevant test. + */ +/*static TInt RunTest_A4() + { + TInt r; + + test.Next(_L("Test A4.\n")); + + // Perform common startup + current_test_state = EStart; + r = CommonStart(); + if (r != KErrNone) + return r; + + // Start the USB Manager + TRequestStatus status, timerStatus; + usbman->Start(status); + User::WaitForRequest(status); + test.Printf(_L("Start completed with status %d\n"), status.Int()); + current_test_state = EUSBManStarted; + + // Stop the USB Manager + usbman->Stop(status); + + // Wait for specific time (has to be less than the time to process a start request) + timer.After(timerStatus, CANCEL_STOP_REQ_DELAY); + User::WaitForRequest(status, timerStatus); + + // Cancel the stop request + usbman->StopCancel(); + + // Check service status + r = CheckServiceState(EUsbServiceStarted); + if ( r != KErrNone) + return r; + + return KErrNone; + } +*/ +/** * Main function. * * Runs all the tests in order. @@ -280,6 +373,16 @@ test.Printf(_L("Test A1 passed.\n\n")); CommonCleanup(); +/* Depreciated test. + err=RunTest_A2(); + if (err != KErrNone) + { + test.Printf(_L("Test A2 failed, code: %d\n\n"), err); + } + else + test.Printf(_L("Test A2 passed.\n\n")); + CommonCleanup(); +*/ err=RunTest_A3(); if (err != KErrNone) { @@ -289,7 +392,16 @@ test.Printf(_L("Test A3 passed.\n\n")); CommonCleanup(); - +/* Depreciated test. + err=RunTest_A4(); + if (err != KErrNone) + { + test.Printf(_L("Test A4 failed, code: %d\n\n"), err); + } + else + test.Printf(_L("Test A4 passed.\n\n")); + CommonCleanup(); +*/ // Tests finished } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/usbmsapp/usbms_stub/group/usbms_stub1cc.mmp --- a/usbmgmt/usbmgrtest/usbmsapp/usbms_stub/group/usbms_stub1cc.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/usbmsapp/usbms_stub/group/usbms_stub1cc.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -36,7 +36,6 @@ USERINCLUDE ../inc USERINCLUDE ../../../../usbmgr/usbman/server/public -USERINCLUDE ../traces OS_LAYER_SYSTEMINCLUDE_SYMBIAN diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/usbmsapp/usbms_stub/group/usbms_stub2cc.mmp --- a/usbmgmt/usbmgrtest/usbmsapp/usbms_stub/group/usbms_stub2cc.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/usbmsapp/usbms_stub/group/usbms_stub2cc.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -36,7 +36,6 @@ USERINCLUDE ../inc USERINCLUDE ../../../../usbmgr/usbman/server/public -USERINCLUDE ../traces OS_LAYER_SYSTEMINCLUDE_SYMBIAN diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/usbmsapp/usbms_stub/group/usbms_stub3cc.mmp --- a/usbmgmt/usbmgrtest/usbmsapp/usbms_stub/group/usbms_stub3cc.mmp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/usbmsapp/usbms_stub/group/usbms_stub3cc.mmp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -36,7 +36,6 @@ USERINCLUDE ../inc USERINCLUDE ../../../../usbmgr/usbman/server/public -USERINCLUDE ../traces OS_LAYER_SYSTEMINCLUDE_SYMBIAN diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/usbmsapp/usbms_stub/inc/usbms_stub.h --- a/usbmgmt/usbmgrtest/usbmsapp/usbms_stub/inc/usbms_stub.h Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/usbmsapp/usbms_stub/inc/usbms_stub.h Wed Sep 01 12:35:00 2010 +0100 @@ -40,7 +40,12 @@ const TInt Kstub3NumberOfInterfacesPerstub3Function = 2; // data and control interfaces - +// The name of the ini file specifying the number of functions required different from default +/* +_LIT(Kstub3FunctionsIniFileName, "NumberOfstub3Functions.ini"); +_LIT(Kstub3ConfigSection,"stub3_CONF"); +_LIT(KNumberOfstub3FunctionsKeyWord,"NumberOfstub3Functions"); +*/ // Lengths of the various bits of the descriptor. Taken from the USB // WMCDC specification, v1.0. const TInt Kstub3InterfaceDescriptorLength = 3; diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/usbmsapp/usbms_stub/src/usbms_stub.cpp --- a/usbmgmt/usbmgrtest/usbmsapp/usbms_stub/src/usbms_stub.cpp Tue Aug 31 17:01:47 2010 +0300 +++ b/usbmgmt/usbmgrtest/usbmsapp/usbms_stub/src/usbms_stub.cpp Wed Sep 01 12:35:00 2010 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 1997-2010 Nokia Corporation and/or its subsidiary(-ies). +* 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" @@ -22,17 +22,14 @@ @file */ +#include "usbms_stub.h" #include #include #include -#include "usbms_stub.h" #include "UsbmanInternalConstants.h" -#include "OstTraceDefinitions.h" -#ifdef OST_TRACE_COMPILER_IN_USE -#include "usbms_stubTraces.h" -#endif +#define _USB_PANIC(CAT, CODE) User::Panic(CAT, CODE) // Panic category _LIT( Kstub3CcPanicCategory, "UsbstubCc" ); @@ -83,6 +80,11 @@ Cancel(); iTimer.Close(); + +#ifndef __WINS__ +// iLdd.Close(); +#endif + } @@ -191,15 +193,8 @@ */ void CUsbstub3ClassController::RunL() { - if(iStatus != KErrNone) - { - OstTrace1( TRACE_FATAL, CUSBSTUB3CLASSCONTROLLER_RUNL, - "CUsbstub3ClassController::RunL panic with error %d", - EPanicUnexpectedState); - - __ASSERT_DEBUG(EFalse, User::Panic(Kstub3CcPanicCategory, EPanicUnexpectedStatus)); - } - + + __ASSERT_DEBUG( iStatus == KErrNone, _USB_PANIC(Kstub3CcPanicCategory, EPanicUnexpectedStatus) ); switch (iState) { case EUsbServiceStarting: @@ -208,10 +203,8 @@ case EUsbServiceStopping: iState = EUsbServiceIdle; break; - default: - OstTrace1( TRACE_FATAL, CUSBSTUB3CLASSCONTROLLER_RUNL_DUP1, - "CUsbstub3ClassController::RunL panic with error %d", EPanicUnexpectedState); - User::Panic(Kstub3CcPanicCategory,EPanicUnexpectedState); + default: + _USB_PANIC(Kstub3CcPanicCategory, EPanicUnexpectedState); } *iReportStatus = KErrNone; User::RequestComplete(iReportStatus, iStatus.Int()); @@ -236,11 +229,8 @@ case EUsbServiceStopping: iState = EUsbServiceStarted; break; - default: - OstTrace1( TRACE_FATAL, CUSBSTUB3CLASSCONTROLLER_DOCANCEL, - "CUsbstub3ClassController::DoCancel panic with error %d", - EPanicUnexpectedState); - User::Panic(Kstub3CcPanicCategory, EPanicUnexpectedState); + default: + _USB_PANIC(Kstub3CcPanicCategory, EPanicUnexpectedState); } *iReportStatus = KErrNone; User::RequestComplete(iReportStatus, KErrCancel); @@ -255,10 +245,7 @@ */ TInt CUsbstub3ClassController::RunError(TInt /*aError*/) { - OstTrace1( TRACE_FATAL, CUSBSTUB3CLASSCONTROLLER_RUNERROR, - "CUsbstub3ClassController::RunError panic with error %d", - EUnusedFunction); - __ASSERT_DEBUG( EFalse, User::Panic(Kstub3CcPanicCategory, EUnusedFunction)); + __ASSERT_DEBUG( EFalse, _USB_PANIC(Kstub3CcPanicCategory, EUnusedFunction) ); return KErrNone; } @@ -268,7 +255,7 @@ * endpoint and, if found, configuring the interface. */ { - return 0; +return 0; } diff -r f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/usbmsapp/usbms_stub/traces/OstTraceDefinitions.h --- a/usbmgmt/usbmgrtest/usbmsapp/usbms_stub/traces/OstTraceDefinitions.h Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -#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 f92a4f87e424 -r 012cc2ee6408 usbmgmt/usbmgrtest/usbmsapp/usbms_stub/traces/fixed_id.definitions --- a/usbmgmt/usbmgrtest/usbmsapp/usbms_stub/traces/fixed_id.definitions Tue Aug 31 17:01:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -#Fixed group and trace id definitions. If this file is removed, the identifiers are rebuilt. -[GROUP]TRACE_NORMAL=0x86 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_DOCANCEL=0x3 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_RUNERROR=0x4 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_RUNL=0x1 -[TRACE]TRACE_NORMAL[0x86]_CUSBSTUB3CLASSCONTROLLER_RUNL_DUP1=0x2