Changes in / [d450964:8426912a] in mainline


Ignore:
Location:
uspace
Files:
2 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/usbinfo/dump.c

    rd450964 r8426912a  
    4545
    4646#include "usbinfo.h"
    47 #include <usb/dp.h>
    4847
    4948#define INDENT "  "
     
    126125}
    127126
    128 static void dump_tree_descriptor(uint8_t *descriptor, size_t depth)
    129 {
    130         if (descriptor == NULL) {
    131                 return;
    132         }
    133         while (depth > 0) {
    134                 printf("  ");
    135                 depth--;
    136         }
    137         int type = (int) *(descriptor + 1);
    138         const char *name = "unknown";
    139         switch (type) {
    140 #define _TYPE(descriptor_type) \
    141                 case USB_DESCTYPE_##descriptor_type: name = #descriptor_type; break
    142                 _TYPE(DEVICE);
    143                 _TYPE(CONFIGURATION);
    144                 _TYPE(STRING);
    145                 _TYPE(INTERFACE);
    146                 _TYPE(ENDPOINT);
    147                 _TYPE(HID);
    148                 _TYPE(HID_REPORT);
    149                 _TYPE(HID_PHYSICAL);
    150                 _TYPE(HUB);
    151 #undef _TYPE
    152         }
    153         printf("0x%02x (%s)\n", type, name);
    154 }
    155 
    156 static void dump_tree_internal(usb_dp_parser_t *parser, usb_dp_parser_data_t *data,
    157     uint8_t *root, size_t depth)
    158 {
    159         if (root == NULL) {
    160                 return;
    161         }
    162         dump_tree_descriptor(root, depth);
    163         uint8_t *child = usb_dp_get_nested_descriptor(parser, data, root);
    164         do {
    165                 dump_tree_internal(parser, data, child, depth + 1);
    166                 child = usb_dp_get_sibling_descriptor(parser, data, root, child);
    167         } while (child != NULL);
    168 }
    169 
    170 static void dump_tree(usb_dp_parser_t *parser, usb_dp_parser_data_t *data)
    171 {
    172         uint8_t *ptr = data->data;
    173         printf("Descriptor tree:\n");
    174         dump_tree_internal(parser, data, ptr, 1);
    175 }
    176 
    177 #define NESTING(parentname, childname) \
    178         { \
    179                 .child = USB_DESCTYPE_##childname, \
    180                 .parent = USB_DESCTYPE_##parentname, \
    181         }
    182 #define LAST_NESTING { -1, -1 }
    183 
    184 static usb_dp_descriptor_nesting_t descriptor_nesting[] = {
    185         NESTING(CONFIGURATION, INTERFACE),
    186         NESTING(INTERFACE, ENDPOINT),
    187         NESTING(INTERFACE, HUB),
    188         NESTING(INTERFACE, HID),
    189         NESTING(HID, HID_REPORT),
    190         LAST_NESTING
    191 };
    192 
    193 static usb_dp_parser_t parser = {
    194         .nesting = descriptor_nesting
    195 };
    196 
    197 void dump_descriptor_tree(uint8_t *descriptors, size_t length)
    198 {
    199         usb_dp_parser_data_t data = {
    200                 .data = descriptors,
    201                 .size = length,
    202                 .arg = NULL
    203         };
    204 
    205         dump_tree(&parser, &data);
    206 }
    207127
    208128/** @}
  • uspace/app/usbinfo/info.c

    rd450964 r8426912a  
    112112            full_config_descriptor, config_descriptor.total_length);
    113113
    114         dump_descriptor_tree(full_config_descriptor,
    115             config_descriptor.total_length);
    116 
    117114        return EOK;
    118115}
  • uspace/app/usbinfo/usbinfo.h

    rd450964 r8426912a  
    5050    usb_standard_configuration_descriptor_t *);
    5151int dump_device(int, usb_address_t);
    52 void dump_descriptor_tree(uint8_t *, size_t);
    5352
    5453static inline void internal_error(int err)
  • uspace/lib/usb/Makefile

    rd450964 r8426912a  
    3636        src/class.c \
    3737        src/debug.c \
    38         src/dp.c \
    3938        src/drvpsync.c \
    4039        src/hcdhubd.c \
  • uspace/lib/usb/src/recognise.c

    rd450964 r8426912a  
    346346    usb_address_t address, devman_handle_t *child_handle)
    347347{
    348         static size_t device_name_index = 0;
    349 
    350348        device_t *child = NULL;
    351349        char *child_name = NULL;
     
    359357
    360358        /*
    361          * TODO: Once the device driver framework support persistent
    362          * naming etc., something more descriptive could be created.
    363          */
    364         rc = asprintf(&child_name, "usbdev%02zu", device_name_index);
     359         * TODO: some better child naming
     360         */
     361        rc = asprintf(&child_name, "usb%p", child);
    365362        if (rc < 0) {
    366363                goto failure;
     
    384381        }
    385382       
    386         device_name_index++;
    387 
    388383        return EOK;
    389384
Note: See TracChangeset for help on using the changeset viewer.