#define HID_INTERNAL
#include <debug.h>
#include <assert.h>
HIDDebugLevel hid_debug_level = HID_DEBUG_NONE;
FILE* hid_debug_stream = NULL;
void hid_set_debug(HIDDebugLevel const level)
{
hid_debug_level = level;
}
void hid_set_debug_stream(FILE* const outstream)
{
hid_debug_stream = outstream;
}
void hid_set_usb_debug(int const level)
{
usb_set_debug(level);
}
struct usb_dev_handle;
void trace_usb_bus(FILE* out, struct usb_bus const* usbbus)
{
fprintf(out, "usb_bus instance at: %10p\n", usbbus);
fprintf(out, " dirname: %s\n", usbbus->dirname);
fprintf(out, " devices: %10p\n", usbbus->devices);
fprintf(out, " prev: %10p\n", usbbus->prev);
fprintf(out, " next: %10p\n", usbbus->next);
}
void trace_usb_device(FILE* out, struct usb_device const* usbdev)
{
fprintf(out, "usb_device instance at: %10p\n", usbdev);
fprintf(out, " prev: %10p\n", usbdev->prev);
fprintf(out, " next: %10p\n", usbdev->next);
fprintf(out, " filename: %s\n", usbdev->filename);
fprintf(out, " bus: %10p\n", usbdev->bus);
fprintf(out, " descriptor: %10p\n", &usbdev->descriptor);
fprintf(out, " config: %10p\n", usbdev->config);
fprintf(out, " dev: %10p\n", usbdev->dev);
}
void trace_usb_device_descriptor(FILE* out, struct usb_device_descriptor const* descriptor)
{
fprintf(out, "usb_device_descriptor instance at: %10p\n", descriptor);
fprintf(out, " bLength: %d\n", descriptor->bLength);
fprintf(out, " bDescriptorType: %d\n", descriptor->bDescriptorType);
fprintf(out, " bcdUSB: 0x%04x\n", descriptor->bcdUSB);
fprintf(out, " bDeviceClass: %d\n", descriptor->bDeviceClass);
fprintf(out, " bDeviceSubClass: %d\n", descriptor->bDeviceSubClass);
fprintf(out, " bDeviceProtocol: %d\n", descriptor->bDeviceProtocol);
fprintf(out, " bMaxPacketSize0: %d\n", descriptor->bMaxPacketSize0);
fprintf(out, " idVendor: 0x%04x\n", descriptor->idVendor);
fprintf(out, " idProduct: 0x%04x\n", descriptor->idProduct);
fprintf(out, " bcdDevice: 0x%04x\n", descriptor->bcdDevice);
fprintf(out, " iManufacturer: %d\n", descriptor->iManufacturer);
fprintf(out, " iProduct: %d\n", descriptor->iProduct);
fprintf(out, " iSerialNumber: %d\n", descriptor->iSerialNumber);
fprintf(out, " bNumConfigurations: %d\n", descriptor->bNumConfigurations);
}
void trace_usb_config_descriptor(FILE* out, struct usb_config_descriptor const* config)
{
fprintf(out, "usb_config_descriptor instance at: %10p\n", config);
fprintf(out, " bLength: %d\n", config->bLength);
fprintf(out, " bDescriptorType: %d\n", config->bDescriptorType);
fprintf(out, " wTotalLength: %d\n", config->wTotalLength);
fprintf(out, " bNumInterfaces: %d\n", config->bNumInterfaces);
fprintf(out, " bConfigurationValue: %d\n", config->bConfigurationValue);
fprintf(out, " iConfiguration: %d\n", config->iConfiguration);
fprintf(out, " bmAttributes: %d\n", config->bmAttributes);
fprintf(out, " MaxPower: %d mA\n", config->MaxPower * 2);
}
void trace_usb_dev_handle(FILE* out, usb_dev_handle const* usbdev_h)
{
struct usb_device *device = usb_device((usb_dev_handle *)usbdev_h);
trace_usb_device(out, device);
}
/* COPYRIGHT --
*
* This file is part of libhid, a user-space HID access library.
* libhid is (c) 2003-2005
* Martin F. Krafft <libhid@pobox.madduck.net>
* Charles Lepple <clepple@ghz.cc>
* Arnaud Quette <arnaud.quette@free.fr> && <arnaud.quette@mgeups.com>
* and distributed under the terms of the GNU General Public License.
* See the file ./COPYING in the source distribution for more information.
*
* THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES
* OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
syntax highlighted by Code2HTML, v. 0.9.1