Fixed for compatibility with Paradigma USB Serial device.
Fork of USBHost by
Revision 11:2d5162435580, committed 2013-06-22
- Comitter:
- leihen
- Date:
- Sat Jun 22 10:48:26 2013 +0000
- Parent:
- 10:0c11cf1cc218
- Child:
- 12:ee5bb3a6193f
- Commit message:
- Modified to work with Paradigma USB device.
Changed in this revision
| USBHost/USBHost.cpp | Show annotated file Show diff for this revision Revisions of this file |
| USBHostSerial/USBHostSerial.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/USBHost/USBHost.cpp Mon Mar 18 14:46:56 2013 +0000
+++ b/USBHost/USBHost.cpp Sat Jun 22 10:48:26 2013 +0000
@@ -155,7 +155,7 @@
Thread::wait(100);
}
- USB_INFO("New device connected: %p [hub: %d - port: %d]", &devices[i], usb_msg->hub, usb_msg->port);
+ USB_INFO("New device connected: %p [hub: %d - port: %d - class: %d]", &devices[i], usb_msg->hub, usb_msg->port, buf[4]);
#if MAX_HUB_NB
if (buf[4] == HUB_CLASS) {
@@ -907,12 +907,14 @@
while (index < len) {
len_desc = conf_descr[index];
id = conf_descr[index+1];
+ USB_INFO("Next ID in ConfDescr");
switch (id) {
case CONFIGURATION_DESCRIPTOR:
USB_DBG("dev: %p has %d intf", dev, conf_descr[4]);
dev->setNbIntf(conf_descr[4]);
break;
case INTERFACE_DESCRIPTOR:
+ USB_INFO("Interface_Descriptor found !");
if(pEnumerator->parseInterface(conf_descr[index + 2], conf_descr[index + 5], conf_descr[index + 6], conf_descr[index + 7])) {
if (intf_nb++ <= MAX_INTF) {
current_intf = conf_descr[index + 2];
@@ -928,8 +930,10 @@
}
break;
case ENDPOINT_DESCRIPTOR:
+ USB_INFO("Endpoint_Descriptor found!");
if (parsing_intf && (intf_nb <= MAX_INTF) ) {
if (nb_endpoints_used < MAX_ENDPOINT_PER_INTERFACE) {
+ USB_INFO("Making call to useEndpoint");
if( pEnumerator->useEndpoint(current_intf, (ENDPOINT_TYPE)(conf_descr[index + 3] & 0x03), (ENDPOINT_DIRECTION)((conf_descr[index + 2] >> 7) + 1)) ) {
// if the USBEndpoint is isochronous -> skip it (TODO: fix this)
if ((conf_descr[index + 3] & 0x03) != ISOCHRONOUS_ENDPOINT) {
--- a/USBHostSerial/USBHostSerial.cpp Mon Mar 18 14:46:56 2013 +0000
+++ b/USBHostSerial/USBHostSerial.cpp Sat Jun 22 10:48:26 2013 +0000
@@ -95,7 +95,8 @@
int len = bulk_in->getLengthTransferred();
if (bulk_in->getState() == USB_TYPE_IDLE) {
for (int i = 0; i < len; i++) {
- circ_buf.queue(buf[i]);
+ if (i > 1)
+ circ_buf.queue(buf[i]);
}
rx.call();
host->bulkRead(dev, bulk_in, buf, size_bulk_in, false);
@@ -160,13 +161,20 @@
/*virtual*/ bool USBHostSerial::parseInterface(uint8_t intf_nb, uint8_t intf_class, uint8_t intf_subclass, uint8_t intf_protocol) //Must return true if the interface should be parsed
{
+ USB_DBG("HENRY Parsing Interface : %d : %d : %d : %d : %d", serial_intf, intf_class, intf_subclass, intf_protocol, SERIAL_CLASS);
+/*
if ((serial_intf == -1) &&
(intf_class == SERIAL_CLASS) &&
(intf_subclass == 0x00) &&
(intf_protocol == 0x00)) {
serial_intf = intf_nb;
return true;
+ }*/
+ if ((serial_intf == -1)){
+ serial_intf = intf_nb;
+ return true;
}
+
return false;
}
