This also removes the functional regression of the previous commit.
---
softusb-input/main.c | 13 +++++++++----
1 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/softusb-input/main.c b/softusb-input/main.c
index 3d8ca17..ef4e49b 100644
--- a/softusb-input/main.c
+++ b/softusb-input/main.c
@@ -167,6 +167,7 @@ static char control_transfer(unsigned char addr, struct
setup_packet *p, char ou
unsigned char setup[11];
unsigned char usb_buffer[11];
unsigned char expected_data = USB_PID_DATA1;
+ unsigned char ack[] = { USB_PID_ACK };
char rxlen;
char transferred;
char chunklen;
@@ -249,15 +250,19 @@ wio8(SIE_SEL_TX, 2);
dump_hex(usb_buffer, rxlen);
return -1;
}
+
+ /* send ACK token */
+ usb_tx(ack, 1);
+
+ if(usb_buffer[0] != expected_data)
+ continue;
+
+ expected_data = toggle(expected_data);
chunklen = rxlen - 3; /* strip token and CRC */
if(chunklen > (maxlen - transferred))
chunklen = maxlen - transferred;
memcpy(payload, &usb_buffer[1], chunklen);
- /* send ACK token */
- usb_buffer[0] = USB_PID_ACK;
- usb_tx(usb_buffer, 1);
-
transferred += chunklen;
payload += chunklen;
if(chunklen < 8)
--
1.7.1
_______________________________________________
http://lists.milkymist.org/listinfo.cgi/devel-milkymist.org
IRC: #milkymist@Freenode