summaryrefslogtreecommitdiff
path: root/firmware/usbstack/core/utils.c
diff options
context:
space:
mode:
authorChristian Gmeiner <christian.gmeiner@gmail.com>2007-08-27 16:04:32 +0000
committerChristian Gmeiner <christian.gmeiner@gmail.com>2007-08-27 16:04:32 +0000
commit8181a0c905a591caef684a2d7487feedbec84c10 (patch)
tree3939183e8e73928d1b5dcfc97b40f33b6baa309b /firmware/usbstack/core/utils.c
parent9305c86f5b8fdfd60882428f884ba29bded8da78 (diff)
downloadrockbox-8181a0c905a591caef684a2d7487feedbec84c10.zip
rockbox-8181a0c905a591caef684a2d7487feedbec84c10.tar.gz
rockbox-8181a0c905a591caef684a2d7487feedbec84c10.tar.bz2
rockbox-8181a0c905a591caef684a2d7487feedbec84c10.tar.xz
Usb Stack: only setup packet handling, and not enabled by default as there is a lot to do.
* settings code is not fully ready -> changing device driver has no effect * clean ups * check copyriths * find a way to detect IN transfers * support for full and highspeed * ... git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14470 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/usbstack/core/utils.c')
-rw-r--r--firmware/usbstack/core/utils.c125
1 files changed, 125 insertions, 0 deletions
diff --git a/firmware/usbstack/core/utils.c b/firmware/usbstack/core/utils.c
new file mode 100644
index 0000000..2fb2695
--- /dev/null
+++ b/firmware/usbstack/core/utils.c
@@ -0,0 +1,125 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id: $
+ *
+ * Copyright (C) 2007 by Christian Gmeiner
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#include <string.h>
+#include "usbstack/core.h"
+
+void into_usb_ctrlrequest(struct usb_ctrlrequest* request) {
+
+ char* type = "";
+ char* req = "";
+ char* extra = 0;
+
+ logf("-usb request-");
+ /* check if packet is okay */
+ if (request->bRequestType == 0 &&
+ request->bRequest == 0 &&
+ request->wValue == 0 &&
+ request->wIndex == 0 &&
+ request->wLength == 0) {
+ logf(" -> INVALID <-");
+ return;
+ }
+
+ switch (request->bRequestType & USB_TYPE_MASK) {
+ case USB_TYPE_STANDARD:
+ type = "standard";
+
+ switch (request->bRequest) {
+ case USB_REQ_GET_STATUS:
+ req = "get status";
+ break;
+ case USB_REQ_CLEAR_FEATURE:
+ req = "clear feature";
+ break;
+ case USB_REQ_SET_FEATURE:
+ req = "set feature";
+ break;
+ case USB_REQ_SET_ADDRESS:
+ req = "set address";
+ break;
+ case USB_REQ_GET_DESCRIPTOR:
+ req = "get descriptor";
+
+ switch (request->wValue >> 8) {
+ case USB_DT_DEVICE:
+ extra = "get device descriptor";
+ break;
+ case USB_DT_DEVICE_QUALIFIER:
+ extra = "get device qualifier";
+ break;
+ case USB_DT_OTHER_SPEED_CONFIG:
+ extra = "get other-speed config descriptor";
+ case USB_DT_CONFIG:
+ extra = "get configuration descriptor";
+ break;
+ case USB_DT_STRING:
+ extra = "get string descriptor";
+ break;
+ case USB_DT_DEBUG:
+ extra = "debug";
+ break;
+ }
+ break;
+
+ break;
+ case USB_REQ_SET_DESCRIPTOR:
+ req = "set descriptor";
+ break;
+ case USB_REQ_GET_CONFIGURATION:
+ req = "get configuration";
+ break;
+ case USB_REQ_SET_CONFIGURATION:
+ req = "set configuration";
+ break;
+ case USB_REQ_GET_INTERFACE:
+ req = "get interface";
+ break;
+ case USB_REQ_SET_INTERFACE:
+ req = "set interface";
+ break;
+ case USB_REQ_SYNCH_FRAME:
+ req = "sync frame";
+ break;
+ default:
+ req = "unkown";
+ break;
+ }
+
+ break;
+ case USB_TYPE_CLASS:
+ type = "class";
+ break;
+
+ case USB_TYPE_VENDOR:
+ type = "vendor";
+ break;
+ }
+
+ logf(" -b 0x%x", request->bRequestType);
+ logf(" -b 0x%x", request->bRequest);
+ logf(" -b 0x%x", request->wValue);
+ logf(" -b 0x%x", request->wIndex);
+ logf(" -b 0x%x", request->wLength);
+ logf(" -> t: %s", type);
+ logf(" -> r: %s", req);
+ if (extra != 0) {
+ logf(" -> e: %s", extra);
+ }
+}