Changes in / [d450964:8426912a] in mainline
- Location:
- uspace
- Files:
-
- 2 deleted
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/usbinfo/dump.c
rd450964 r8426912a 45 45 46 46 #include "usbinfo.h" 47 #include <usb/dp.h>48 47 49 48 #define INDENT " " … … 126 125 } 127 126 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; break142 _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 _TYPE152 }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_NESTING191 };192 193 static usb_dp_parser_t parser = {194 .nesting = descriptor_nesting195 };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 = NULL203 };204 205 dump_tree(&parser, &data);206 }207 127 208 128 /** @} -
uspace/app/usbinfo/info.c
rd450964 r8426912a 112 112 full_config_descriptor, config_descriptor.total_length); 113 113 114 dump_descriptor_tree(full_config_descriptor,115 config_descriptor.total_length);116 117 114 return EOK; 118 115 } -
uspace/app/usbinfo/usbinfo.h
rd450964 r8426912a 50 50 usb_standard_configuration_descriptor_t *); 51 51 int dump_device(int, usb_address_t); 52 void dump_descriptor_tree(uint8_t *, size_t);53 52 54 53 static inline void internal_error(int err) -
uspace/lib/usb/Makefile
rd450964 r8426912a 36 36 src/class.c \ 37 37 src/debug.c \ 38 src/dp.c \39 38 src/drvpsync.c \ 40 39 src/hcdhubd.c \ -
uspace/lib/usb/src/recognise.c
rd450964 r8426912a 346 346 usb_address_t address, devman_handle_t *child_handle) 347 347 { 348 static size_t device_name_index = 0;349 350 348 device_t *child = NULL; 351 349 char *child_name = NULL; … … 359 357 360 358 /* 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); 365 362 if (rc < 0) { 366 363 goto failure; … … 384 381 } 385 382 386 device_name_index++;387 388 383 return EOK; 389 384
Note:
See TracChangeset
for help on using the changeset viewer.