diff --git a/bin/classes/com/felhr/usbserial/CP2102SerialDevice.class b/bin/classes/com/felhr/usbserial/CP2102SerialDevice.class index 883802e..01011b1 100644 Binary files a/bin/classes/com/felhr/usbserial/CP2102SerialDevice.class and b/bin/classes/com/felhr/usbserial/CP2102SerialDevice.class differ diff --git a/bin/classes/com/felhr/usbserial/SerialBuffer.class b/bin/classes/com/felhr/usbserial/SerialBuffer.class index 1a02572..7f91892 100644 Binary files a/bin/classes/com/felhr/usbserial/SerialBuffer.class and b/bin/classes/com/felhr/usbserial/SerialBuffer.class differ diff --git a/bin/classes/com/felhr/usbserial/UsbSerialDevice$WorkerThread.class b/bin/classes/com/felhr/usbserial/UsbSerialDevice$WorkerThread.class index 26b1d40..8088083 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.class b/bin/classes/com/felhr/usbserial/UsbSerialDevice.class index 6614c50..77b28e7 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 89366d8..030a50b 100644 Binary files a/bin/usbserial.jar and b/bin/usbserial.jar differ diff --git a/src/com/felhr/usbserial/CP2102SerialDevice.java b/src/com/felhr/usbserial/CP2102SerialDevice.java index 5f3f317..d631686 100644 --- a/src/com/felhr/usbserial/CP2102SerialDevice.java +++ b/src/com/felhr/usbserial/CP2102SerialDevice.java @@ -117,7 +117,10 @@ public class CP2102SerialDevice extends UsbSerialDevice @Override public void close() { - // TODO + setControlCommand(CP210x_IFC_ENABLE, CP210x_UART_DISABLE, null); + connection.close(); + workerThread.stopWorkingThread(); + listenThread.stopListenThread(); } @Override @@ -147,7 +150,7 @@ public class CP2102SerialDevice extends UsbSerialDevice @Override public void setParity(int parity) { - // TODO Auto-generated method stub + // TODO } @Override @@ -181,7 +184,9 @@ public class CP2102SerialDevice extends UsbSerialDevice { dataLength = data.length; } - return connection.controlTransfer(CP210x_REQTYPE_HOST2DEVICE, request, value, 0, data, dataLength, USB_TIMEOUT); + int response = connection.controlTransfer(CP210x_REQTYPE_HOST2DEVICE, request, value, 0, data, dataLength, USB_TIMEOUT); + Log.i(CLASS_ID,"Control Transfer Response: " + String.valueOf(response)); + return response; } } diff --git a/src/com/felhr/usbserial/SerialBuffer.java b/src/com/felhr/usbserial/SerialBuffer.java index 82fe502..378b62a 100644 --- a/src/com/felhr/usbserial/SerialBuffer.java +++ b/src/com/felhr/usbserial/SerialBuffer.java @@ -12,12 +12,12 @@ public class SerialBuffer private Object mReadLock; private Object mWriteLock; - public SerialBuffer(Object mReadLock, Object mWriteLock) + public SerialBuffer() { writeBuffer = ByteBuffer.allocate(DEFAULT_WRITE_BUFFER_SIZE); readBuffer = ByteBuffer.allocate(DEFAULT_READ_BUFFER_SIZE); - this.mReadLock = mReadLock; - this.mWriteLock = mWriteLock; + this.mReadLock = new Object(); + this.mWriteLock = new Object(); } public void putWriteBuffer(byte[] data) diff --git a/src/com/felhr/usbserial/UsbSerialDevice.java b/src/com/felhr/usbserial/UsbSerialDevice.java index 445de2f..59931d4 100644 --- a/src/com/felhr/usbserial/UsbSerialDevice.java +++ b/src/com/felhr/usbserial/UsbSerialDevice.java @@ -17,8 +17,6 @@ public abstract class UsbSerialDevice implements UsbSerialInterface protected final UsbDeviceConnection connection; protected SerialBuffer serialBuffer; - protected final Object readBufferLock; - protected final Object writeBufferLock; private Object objectMonitor; protected ListenThread listenThread; @@ -28,9 +26,8 @@ public abstract class UsbSerialDevice implements UsbSerialInterface { this.device = device; this.connection = connection; - this.readBufferLock = new Object(); - this.writeBufferLock = new Object(); - serialBuffer = new SerialBuffer(readBufferLock, writeBufferLock); + this.objectMonitor = new Object(); + serialBuffer = new SerialBuffer(); workerThread = new WorkerThread(); workerThread.start(); } @@ -88,7 +85,10 @@ public abstract class UsbSerialDevice implements UsbSerialInterface Log.i(CLASS_ID, "Send data length: " + String.valueOf(pos + 1)); serialBuffer.clearWriteBuffer(); } - objectMonitor.notify(); + synchronized(objectMonitor) + { + objectMonitor.notify(); + } } }