Changeset 64861b8 in mainline
- Timestamp:
- 2011-01-21T12:26:09Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e8ad0de
- Parents:
- b65ca41d (diff), 96b0faef (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Files:
-
- 1 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
.bzrignore
rb65ca41d r64861b8 109 109 ./uspace/srv/hw/irc/apic/apic 110 110 ./uspace/srv/hw/irc/i8259/i8259 111 ./uspace/srv/hw/netif/dp8390/dp8390 111 ./uspace/srv/hw/netif/ne2000/dp8390 112 ./uspace/srv/hw/netif/ne2000/ne2000 112 113 ./uspace/srv/loader/loader 113 114 ./uspace/srv/net/cfg/lo -
uspace/app/usbinfo/dump.c
rb65ca41d r64861b8 43 43 #include <usb/usb.h> 44 44 #include <usb/descriptor.h> 45 #include <usb/debug.h> 46 #include <usb/classes/classes.h> 45 47 46 48 #include "usbinfo.h" … … 50 52 #define BYTES_PER_LINE 12 51 53 52 #define BCD_INT(a) (((unsigned int)(a)) / 256)53 #define BCD_FRAC(a) (((unsigned int)(a)) % 256)54 54 55 #define BCD_FMT "%x.%x" 56 #define BCD_ARGS(a) BCD_INT((a)), BCD_FRAC((a)) 55 static const char *get_indent(size_t level) 56 { 57 static const char *indents[] = { 58 INDENT, 59 INDENT INDENT, 60 INDENT INDENT INDENT, 61 INDENT INDENT INDENT INDENT, 62 INDENT INDENT INDENT INDENT INDENT 63 }; 64 static size_t indents_count = sizeof(indents)/sizeof(indents[0]); 65 if (level >= indents_count) { 66 return indents[indents_count - 1]; 67 } 68 return indents[level]; 69 } 57 70 58 void dump_buffer(const char *msg, const uint8_t *buffer, size_t length) 71 void dump_buffer(const char *msg, size_t indent, 72 const uint8_t *buffer, size_t length) 59 73 { 60 printf("%s\n", msg); 74 if (msg != NULL) { 75 printf("%s\n", msg); 76 } 61 77 62 78 size_t i; 79 if (length > 0) { 80 printf("%s", get_indent(indent)); 81 } 63 82 for (i = 0; i < length; i++) { 64 printf(" 83 printf("0x%02X", buffer[i]); 65 84 if (((i > 0) && (((i+1) % BYTES_PER_LINE) == 0)) 66 85 || (i + 1 == length)) { 67 86 printf("\n"); 87 if (i + 1 < length) { 88 printf("%s", get_indent(indent)); 89 } 90 } else { 91 printf(" "); 68 92 } 69 93 } 94 } 95 96 void dump_usb_descriptor(uint8_t *descriptor, size_t size) 97 { 98 usb_dump_standard_descriptor(stdout, get_indent(0), "\n", 99 descriptor, size); 70 100 } 71 101 … … 83 113 } 84 114 85 void dump_standard_device_descriptor(usb_standard_device_descriptor_t *d)86 {87 printf("Standard device descriptor:\n");88 89 printf(INDENT "bLength = %d\n", d->length);90 printf(INDENT "bDescriptorType = 0x%02x\n", d->descriptor_type);91 printf(INDENT "bcdUSB = %d (" BCD_FMT ")\n", d->usb_spec_version,92 BCD_ARGS(d->usb_spec_version));93 printf(INDENT "bDeviceClass = 0x%02x\n", d->device_class);94 printf(INDENT "bDeviceSubClass = 0x%02x\n", d->device_subclass);95 printf(INDENT "bDeviceProtocol = 0x%02x\n", d->device_protocol);96 printf(INDENT "bMaxPacketSize0 = %d\n", d->max_packet_size);97 printf(INDENT "idVendor = %d\n", d->vendor_id);98 printf(INDENT "idProduct = %d\n", d->product_id);99 printf(INDENT "bcdDevice = %d\n", d->device_version);100 printf(INDENT "iManufacturer = %d\n", d->str_manufacturer);101 printf(INDENT "iProduct = %d\n", d->str_product);102 printf(INDENT "iSerialNumber = %d\n", d->str_serial_number);103 printf(INDENT "bNumConfigurations = %d\n", d->configuration_count);104 }105 106 void dump_standard_configuration_descriptor(107 int index, usb_standard_configuration_descriptor_t *d)108 {109 bool self_powered = d->attributes & 64;110 bool remote_wakeup = d->attributes & 32;111 112 printf("Standard configuration descriptor #%d\n", index);113 printf(INDENT "bLength = %d\n", d->length);114 printf(INDENT "bDescriptorType = 0x%02x\n", d->descriptor_type);115 printf(INDENT "wTotalLength = %d\n", d->total_length);116 printf(INDENT "bNumInterfaces = %d\n", d->interface_count);117 printf(INDENT "bConfigurationValue = %d\n", d->configuration_number);118 printf(INDENT "iConfiguration = %d\n", d->str_configuration);119 printf(INDENT "bmAttributes = %d [%s%s%s]\n", d->attributes,120 self_powered ? "self-powered" : "",121 (self_powered & remote_wakeup) ? ", " : "",122 remote_wakeup ? "remote-wakeup" : "");123 printf(INDENT "MaxPower = %d (%dmA)\n", d->max_power,124 2 * d->max_power);125 // printf(INDENT " = %d\n", d->);126 }127 128 115 static void dump_tree_descriptor(uint8_t *descriptor, size_t depth) 129 116 { 130 117 if (descriptor == NULL) { 131 118 return; 132 }133 while (depth > 0) {134 printf(" ");135 depth--;136 119 } 137 120 int type = (int) *(descriptor + 1); … … 151 134 #undef _TYPE 152 135 } 153 printf("0x%02x (%s)\n", type, name); 136 printf("%s%s (0x%02X):\n", get_indent(depth), name, type); 137 usb_dump_standard_descriptor(stdout, get_indent(depth), "\n", 138 descriptor, descriptor[0]); 154 139 } 155 140 … … 172 157 uint8_t *ptr = data->data; 173 158 printf("Descriptor tree:\n"); 174 dump_tree_internal(parser, data, ptr, 1);159 dump_tree_internal(parser, data, ptr, 0); 175 160 } 176 161 -
uspace/app/usbinfo/info.c
rb65ca41d r64861b8 72 72 return rc; 73 73 } 74 dump_ standard_device_descriptor(&device_descriptor);74 dump_usb_descriptor((uint8_t *)&device_descriptor, sizeof(device_descriptor)); 75 75 76 76 /* … … 91 91 return rc; 92 92 } 93 dump_standard_configuration_descriptor(config_index, 94 &config_descriptor); 93 //dump_standard_configuration_descriptor(config_index, &config_descriptor); 95 94 96 95 void *full_config_descriptor = malloc(config_descriptor.total_length); … … 109 108 return rc; 110 109 } 111 dump_buffer("Full configuration descriptor:",112 full_config_descriptor, config_descriptor.total_length);113 110 114 111 dump_descriptor_tree(full_config_descriptor, -
uspace/app/usbinfo/usbinfo.h
rb65ca41d r64861b8 44 44 #define NAME "usbinfo" 45 45 46 void dump_buffer(const char *, const uint8_t *, size_t);46 void dump_buffer(const char *, size_t, const uint8_t *, size_t); 47 47 void dump_match_ids(match_id_list_t *matches); 48 void dump_standard_device_descriptor(usb_standard_device_descriptor_t *); 49 void dump_standard_configuration_descriptor(int, 50 usb_standard_configuration_descriptor_t *); 48 void dump_usb_descriptor(uint8_t *, size_t); 51 49 int dump_device(int, usb_address_t); 52 50 void dump_descriptor_tree(uint8_t *, size_t); -
uspace/app/virtusbkbd/keys.h
rb65ca41d r64861b8 40 40 41 41 /** Maximum number of keys that can be pressed simultaneously. */ 42 #define KB_MAX_KEYS_AT_ONCE 442 #define KB_MAX_KEYS_AT_ONCE 6 43 43 44 44 /** Key code type. */ -
uspace/drv/usbkbd/descparser.c
rb65ca41d r64861b8 96 96 pos += sizeof(usb_standard_configuration_descriptor_t); 97 97 98 printf("Parsed configuration descriptor: \n");99 dump_standard_configuration_descriptor(0, &config->config_descriptor);98 //printf("Parsed configuration descriptor: \n"); 99 //dump_standard_configuration_descriptor(0, &config->config_descriptor); 100 100 101 101 int ret = EOK; … … 139 139 pos += desc_size; 140 140 141 printf("Parsed interface descriptor: \n");142 dump_standard_interface_descriptor(&actual_iface->iface_desc);141 //printf("Parsed interface descriptor: \n"); 142 //dump_standard_interface_descriptor(&actual_iface->iface_desc); 143 143 144 144 // allocate space for endpoint descriptors … … 153 153 ep_i = 0; 154 154 155 printf("Remaining size: %d\n", size - (size_t)(pos - data));155 //printf("Remaining size: %d\n", size - (size_t)(pos - data)); 156 156 157 157 break; … … 180 180 pos += desc_size; 181 181 182 printf("Parsed endpoint descriptor: \n");183 dump_standard_endpoint_descriptor(&actual_iface->endpoints[ep_i]);182 //printf("Parsed endpoint descriptor: \n"); 183 //dump_standard_endpoint_descriptor(&actual_iface->endpoints[ep_i]); 184 184 ++ep_i; 185 185 … … 187 187 case USB_DESCTYPE_HID: 188 188 if (desc_size < sizeof(usb_standard_hid_descriptor_t)) { 189 printf("Wrong size of descriptor: %d (should be % d)\n",189 printf("Wrong size of descriptor: %d (should be %zu)\n", 190 190 desc_size, sizeof(usb_standard_hid_descriptor_t)); 191 191 ret = EINVAL; … … 208 208 }*/ 209 209 210 printf("Parsed HID descriptor header: \n");211 dump_standard_hid_descriptor_header(&actual_iface->hid_desc);210 //printf("Parsed HID descriptor header: \n"); 211 //dump_standard_hid_descriptor_header(&actual_iface->hid_desc); 212 212 213 213 // allocate space for all class-specific descriptor info -
uspace/drv/usbkbd/main.c
rb65ca41d r64861b8 130 130 assert(actual_size == length); 131 131 132 dump_hid_class_descriptor(0, USB_DESCTYPE_HID_REPORT,133 kbd_dev->conf->interfaces[i].report_desc, length);132 //dump_hid_class_descriptor(0, USB_DESCTYPE_HID_REPORT, 133 // kbd_dev->conf->interfaces[i].report_desc, length); 134 134 } 135 135 … … 189 189 } 190 190 191 usbkbd_print_config(kbd_dev->conf);191 //usbkbd_print_config(kbd_dev->conf); 192 192 193 193 /* -
uspace/drv/vhc/devices.c
rb65ca41d r64861b8 138 138 } else { 139 139 async_wait_for(req, &answer_rc); 140 transaction->actual_len = IPC_GET_ARG1(answer_data); 140 141 rc = (int)answer_rc; 141 142 } -
uspace/drv/vhc/hc.c
rb65ca41d r64861b8 96 96 usb_str_transaction_outcome(outcome)); 97 97 98 transaction->callback(transaction->buffer, transaction-> len, outcome,99 transaction->callback_arg);98 transaction->callback(transaction->buffer, transaction->actual_len, 99 outcome, transaction->callback_arg); 100 100 } 101 101 … … 169 169 transaction->buffer = buffer; 170 170 transaction->len = len; 171 transaction->actual_len = len; 171 172 transaction->callback = callback; 172 173 transaction->callback_arg = arg; -
uspace/drv/vhc/hc.h
rb65ca41d r64861b8 65 65 /** Transaction data length. */ 66 66 size_t len; 67 /** Data length actually transfered. */ 68 size_t actual_len; 67 69 /** Callback after transaction is done. */ 68 70 hc_transaction_done_callback_t callback; -
uspace/lib/usb/Makefile
rb65ca41d r64861b8 38 38 src/dp.c \ 39 39 src/drvpsync.c \ 40 src/dump.c \ 40 41 src/hcdhubd.c \ 41 42 src/hcdrv.c \ -
uspace/lib/usb/include/usb/debug.h
rb65ca41d r64861b8 35 35 #ifndef LIBUSB_DEBUG_H_ 36 36 #define LIBUSB_DEBUG_H_ 37 #include <stdio.h> 38 #include <usb/usb.h> 37 39 38 40 void usb_dprintf(const char *tag, int level, const char *format, ...); 39 41 void usb_dprintf_enable(const char *tag, int level); 40 42 43 void usb_dump_standard_descriptor(FILE *, const char *, const char *, 44 const uint8_t *, size_t); 41 45 42 46 #endif -
uspace/lib/usbvirt/src/callback.c
rb65ca41d r64861b8 160 160 return; 161 161 } 162 async_data_read_finalize(callid, buffer, receive_len); 163 } 164 165 ipc_answer_0(iid, rc); 162 if (len > receive_len) { 163 len = receive_len; 164 } 165 async_data_read_finalize(callid, buffer, len); 166 } 167 168 ipc_answer_1(iid, rc, len); 166 169 } 167 170
Note:
See TracChangeset
for help on using the changeset viewer.