diff --git a/bin/classes/com/felhr/usbserial/UsbSerialDevice$ReadThread.class b/bin/classes/com/felhr/usbserial/UsbSerialDevice$ReadThread.class index 58dc056..2b7b315 100644 Binary files a/bin/classes/com/felhr/usbserial/UsbSerialDevice$ReadThread.class and b/bin/classes/com/felhr/usbserial/UsbSerialDevice$ReadThread.class differ diff --git a/bin/classes/com/felhr/usbserial/UsbSerialDevice$WorkerThread.class b/bin/classes/com/felhr/usbserial/UsbSerialDevice$WorkerThread.class index 62b28ea..5151bc0 100644 Binary files a/bin/classes/com/felhr/usbserial/UsbSerialDevice$WorkerThread.class and b/bin/classes/com/felhr/usbserial/UsbSerialDevice$WorkerThread.class differ diff --git a/bin/classes/com/felhr/usbserial/UsbSerialDevice$WriteThread.class b/bin/classes/com/felhr/usbserial/UsbSerialDevice$WriteThread.class index c1fe96a..76c4583 100644 Binary files a/bin/classes/com/felhr/usbserial/UsbSerialDevice$WriteThread.class and b/bin/classes/com/felhr/usbserial/UsbSerialDevice$WriteThread.class differ diff --git a/bin/classes/com/felhr/usbserial/UsbSerialDevice.class b/bin/classes/com/felhr/usbserial/UsbSerialDevice.class index 6589db3..49a8fc3 100644 Binary files a/bin/classes/com/felhr/usbserial/UsbSerialDevice.class and b/bin/classes/com/felhr/usbserial/UsbSerialDevice.class differ diff --git a/bin/usbserial.jar b/bin/usbserial.jar index 2253357..7b693bb 100644 Binary files a/bin/usbserial.jar and b/bin/usbserial.jar differ diff --git a/src/com/felhr/usbserial/UsbSerialDevice.java b/src/com/felhr/usbserial/UsbSerialDevice.java index 5793cd8..50065cf 100644 --- a/src/com/felhr/usbserial/UsbSerialDevice.java +++ b/src/com/felhr/usbserial/UsbSerialDevice.java @@ -10,6 +10,7 @@ import android.hardware.usb.UsbConstants; import android.hardware.usb.UsbDevice; import android.hardware.usb.UsbDeviceConnection; import android.hardware.usb.UsbEndpoint; +import android.hardware.usb.UsbInterface; import android.hardware.usb.UsbRequest; public abstract class UsbSerialDevice implements UsbSerialInterface @@ -69,8 +70,10 @@ public abstract class UsbSerialDevice implements UsbSerialInterface return new CP2102SerialDevice(device, connection); else if(PL2303Ids.isDeviceSupported(vid, pid)) return new PL2303SerialDevice(device, connection); - else + else if(isCdcDevice(device)) return new CDCSerialDevice(device, connection); + else + return null; } // Common Usb Serial Operations (I/O Asynchronous) @@ -126,6 +129,18 @@ public abstract class UsbSerialDevice implements UsbSerialInterface return (this instanceof FTDISerialDevice); } + private static boolean isCdcDevice(UsbDevice device) + { + int iIndex = device.getInterfaceCount(); + for(int i=0;i<=iIndex-1;i++) + { + UsbInterface iface = device.getInterface(i); + if(iface.getInterfaceClass() == UsbConstants.USB_CLASS_CDC_DATA) + return true; + } + return false; + } + /* * WorkerThread waits for request notifications from IN endpoint