summaryrefslogtreecommitdiff
path: root/firmware/usbstack/usb_benchmark.c
diff options
context:
space:
mode:
authorFrank Gevaerts <frank@gevaerts.be>2008-02-20 22:54:26 +0000
committerFrank Gevaerts <frank@gevaerts.be>2008-02-20 22:54:26 +0000
commit07427592a928ab3d164fbcca842399af6d5ca7ef (patch)
treeeb7b1b748f8ac9ea28ce357290bc5992f5e2403f /firmware/usbstack/usb_benchmark.c
parent6af732d17aa1eb882e3c52242b2bf7f2fcccc752 (diff)
downloadrockbox-07427592a928ab3d164fbcca842399af6d5ca7ef.zip
rockbox-07427592a928ab3d164fbcca842399af6d5ca7ef.tar.gz
rockbox-07427592a928ab3d164fbcca842399af6d5ca7ef.tar.bz2
rockbox-07427592a928ab3d164fbcca842399af6d5ca7ef.tar.xz
Major USB stack improvements. It now works at nearly the maximum speed for a full speed connection, and does seem stable.
Still not enabled by default, #define USE_ROCKBOX_USB is still required to enable it. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16360 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/usbstack/usb_benchmark.c')
-rw-r--r--firmware/usbstack/usb_benchmark.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/firmware/usbstack/usb_benchmark.c b/firmware/usbstack/usb_benchmark.c
index a6e0e2d..7cd5a3e 100644
--- a/firmware/usbstack/usb_benchmark.c
+++ b/firmware/usbstack/usb_benchmark.c
@@ -22,6 +22,8 @@
//#define LOGF_ENABLE
#include "logf.h"
+#ifdef USB_BENCHMARK
+
static int current_length;
static unsigned char _input_buffer[16384];
@@ -56,8 +58,8 @@ void usb_benchmark_control_request(struct usb_ctrlrequest* req)
logf("bench: read %d", current_length);
todo = MIN(usb_max_pkt_size, current_length);
state = SENDING;
- usb_drv_reset_endpoint(EP_TX, true);
- usb_drv_send(EP_TX, &input_buffer, todo);
+ usb_drv_reset_endpoint(EP_BENCHMARK, true);
+ usb_drv_send(EP_BENCHMARK, &input_buffer, todo);
current_length -= todo;
break;
@@ -66,13 +68,13 @@ void usb_benchmark_control_request(struct usb_ctrlrequest* req)
current_length = req->wValue * req->wIndex;
logf("bench: write %d", current_length);
state = RECEIVING;
- usb_drv_reset_endpoint(EP_RX, false);
- usb_drv_recv(EP_RX, &input_buffer, sizeof _input_buffer);
+ usb_drv_reset_endpoint(EP_BENCHMARK, false);
+ usb_drv_recv(EP_BENCHMARK, &input_buffer, sizeof _input_buffer);
break;
}
}
-void usb_benchmark_transfer_complete(int endpoint, bool in)
+void usb_benchmark_transfer_complete(bool in)
{
(void)in;
@@ -87,26 +89,26 @@ void usb_benchmark_transfer_complete(int endpoint, bool in)
{
case SENDING: {
int todo = MIN(usb_max_pkt_size, current_length);
- if (endpoint == EP_RX) {
+ if (in == false) {
logf("unexpected ep_rx");
break;
}
logf("bench: %d more tx", current_length);
- usb_drv_send(EP_TX, &input_buffer, todo);
+ usb_drv_send(EP_BENCHMARK, &input_buffer, todo);
current_length -= todo;
input_buffer[0]++;
break;
}
case RECEIVING:
- if (endpoint == EP_TX) {
+ if (in == true) {
logf("unexpected ep_tx");
break;
}
/* re-prime endpoint */
- usb_drv_recv(EP_RX, &input_buffer, sizeof _input_buffer);
+ usb_drv_recv(EP_BENCHMARK, &input_buffer, sizeof _input_buffer);
input_buffer[0]++;
break;
@@ -123,3 +125,4 @@ static void ack_control(struct usb_ctrlrequest* req)
else
usb_drv_send(EP_CONTROL, NULL, 0);
}
+#endif /*USB_BENCHMARK*/