1.1 --- a/test.c Mon Mar 04 22:26:19 2013 +0000
1.2 +++ b/test.c Tue Mar 05 22:26:44 2013 +0000
1.3 @@ -35,9 +35,7 @@
1.4 MAX_DEVSTATE_INIT = 0,
1.5 MAX_DEVSTATE_CONNECTED = 1,
1.6 MAX_DEVSTATE_RESET = 2,
1.7 - MAX_DEVSTATE_INSPECTED = 3,
1.8 - MAX_DEVSTATE_RESET_AGAIN = 4,
1.9 - MAX_DEVSTATE_READY = 5
1.10 + MAX_DEVSTATE_READY = 3
1.11 } max_devstate;
1.12
1.13 /* Device details. */
1.14 @@ -669,10 +667,6 @@
1.15 printf("iProduct: %d\n", device->desc.iProduct);
1.16 printf("iSerialNumber: %d\n", device->desc.iSerialNumber);
1.17 printf("bNumConfigurations: %d\n", device->desc.bNumConfigurations);
1.18 -
1.19 - /* Reset the device. */
1.20 -
1.21 - max_write(MAX_REG_HCTL, MAX_HCTL_BUSRST);
1.22 return true;
1.23 }
1.24
1.25 @@ -926,36 +920,17 @@
1.26
1.27 else if ((devstate == MAX_DEVSTATE_RESET) && frame_event && max_can_send(&status))
1.28 {
1.29 - if (max_init_device(&device))
1.30 - {
1.31 - devstate = MAX_DEVSTATE_INSPECTED;
1.32 - printf("INSPECTED\n");
1.33 - }
1.34 + if (!max_init_device(&device))
1.35 + printf("FAILED: RESET -> READY\n");
1.36 else
1.37 - printf("FAILED: RESET -> INSPECTED\n");
1.38 - }
1.39 -
1.40 - /* Handle the second device reset initiation. This is arguably
1.41 - superfluous, since the second reset is typically done because
1.42 - Windows aborts the device descriptor acquisition after 8 bytes
1.43 - because it was only interested in the maximum packet size. */
1.44 -
1.45 - else if ((devstate == MAX_DEVSTATE_INSPECTED) && bus_event)
1.46 - {
1.47 - devstate = MAX_DEVSTATE_RESET_AGAIN;
1.48 - printf("RESET AGAIN\n");
1.49 - }
1.50 -
1.51 - /* Handle the second device reset completion, initiating communications. */
1.52 -
1.53 - else if ((devstate == MAX_DEVSTATE_RESET_AGAIN) && frame_event && max_can_send(&status))
1.54 - {
1.55 - max_write(MAX_REG_MODE, max_read(MAX_REG_MODE, NULL) & ~MAX_MODE_SOFKAENAB);
1.56 - max_set_address(&device);
1.57 - devstate = MAX_DEVSTATE_READY;
1.58 - usb_show_languages(max_get_descriptor(&device, USB_DT_STRING, 0, 0));
1.59 - usb_show_configuration(max_get_descriptor(&device, USB_DT_CONFIG, 0, 0));
1.60 - printf("READY\n");
1.61 + {
1.62 + max_write(MAX_REG_MODE, max_read(MAX_REG_MODE, NULL) & ~MAX_MODE_SOFKAENAB);
1.63 + max_set_address(&device);
1.64 + usb_show_languages(max_get_descriptor(&device, USB_DT_STRING, 0, 0));
1.65 + usb_show_configuration(max_get_descriptor(&device, USB_DT_CONFIG, 0, 0));
1.66 + devstate = MAX_DEVSTATE_READY;
1.67 + printf("READY\n");
1.68 + }
1.69 }
1.70
1.71 /* Handle device disconnection. */