# HG changeset patch # User Paul Boddie # Date 1363188327 0 # Node ID 75e240b97a8f2386d38cbfc54858e0c04a45c8a6 # Parent f9bb62c60535ad21ae42fe71d2d4a999022ec299 Added elementary handling for maximum packet sizes. Changed the descriptor lengths specified in setup packets. diff -r f9bb62c60535 -r 75e240b97a8f test.c --- a/test.c Wed Mar 13 14:56:35 2013 +0000 +++ b/test.c Wed Mar 13 15:25:27 2013 +0000 @@ -44,7 +44,7 @@ { bool in_toggle, out_toggle; struct usb_device_descriptor desc; - uint8_t address; + uint8_t address, max_packet_size; } max_device; static uint16_t next_address = 1; @@ -612,7 +612,7 @@ max_write(MAX_REG_PERADDR, device->address); - setup_packet(setup, USB_ENDPOINT_IN, USB_REQ_GET_DESCRIPTOR, usb_descriptor_type(type) | value, index, 64); + setup_packet(setup, USB_ENDPOINT_IN, USB_REQ_GET_DESCRIPTOR, usb_descriptor_type(type) | value, index, usb_descriptor_size(type)); max_control(setup); if (!max_control_input(data, &len, device)) { @@ -669,6 +669,8 @@ printf("iProduct: %d\n", device->desc.iProduct); printf("iSerialNumber: %d\n", device->desc.iSerialNumber); printf("bNumConfigurations: %d\n", device->desc.bNumConfigurations); + + device->max_packet_size = device->desc.bMaxPacketSize0; return true; } @@ -794,6 +796,7 @@ device.in_toggle = false; device.out_toggle = false; + device.max_packet_size = 8; signal(SIGINT, &shutdown);