diff --git a/usbserial/src/main/java/com/felhr/usbserial/CDCSerialDevice.java b/usbserial/src/main/java/com/felhr/usbserial/CDCSerialDevice.java index 717fd8e..970e87a 100644 --- a/usbserial/src/main/java/com/felhr/usbserial/CDCSerialDevice.java +++ b/usbserial/src/main/java/com/felhr/usbserial/CDCSerialDevice.java @@ -93,10 +93,12 @@ public class CDCSerialDevice extends UsbSerialDevice setThreadsParams(requestIN, outEndpoint); asyncMode = true; + isOpen = true; return true; }else { + isOpen = false; return false; } } @@ -109,6 +111,7 @@ public class CDCSerialDevice extends UsbSerialDevice killWriteThread(); connection.releaseInterface(mInterface); connection.close(); + isOpen = false; } @Override @@ -119,6 +122,7 @@ public class CDCSerialDevice extends UsbSerialDevice { setSyncParams(inEndpoint, outEndpoint); asyncMode = false; + isOpen = true; // Init Streams inputStream = new SerialInputStream(this); @@ -127,6 +131,7 @@ public class CDCSerialDevice extends UsbSerialDevice return true; }else { + isOpen = false; return false; } } @@ -137,6 +142,7 @@ public class CDCSerialDevice extends UsbSerialDevice setControlCommand(CDC_SET_CONTROL_LINE_STATE, CDC_CONTROL_LINE_OFF, null); connection.releaseInterface(mInterface); connection.close(); + isOpen = false; } @Override diff --git a/usbserial/src/main/java/com/felhr/usbserial/CH34xSerialDevice.java b/usbserial/src/main/java/com/felhr/usbserial/CH34xSerialDevice.java index 2792165..70deb4d 100644 --- a/usbserial/src/main/java/com/felhr/usbserial/CH34xSerialDevice.java +++ b/usbserial/src/main/java/com/felhr/usbserial/CH34xSerialDevice.java @@ -130,10 +130,12 @@ public class CH34xSerialDevice extends UsbSerialDevice setThreadsParams(requestIN, outEndpoint); asyncMode = true; + isOpen = true; return true; }else { + isOpen = false; return false; } } @@ -145,6 +147,7 @@ public class CH34xSerialDevice extends UsbSerialDevice killWriteThread(); stopFlowControlThread(); connection.releaseInterface(mInterface); + isOpen = false; } @Override @@ -157,6 +160,7 @@ public class CH34xSerialDevice extends UsbSerialDevice createFlowControlThread(); setSyncParams(inEndpoint, outEndpoint); asyncMode = false; + isOpen = true; // Init Streams inputStream = new SerialInputStream(this); @@ -165,6 +169,7 @@ public class CH34xSerialDevice extends UsbSerialDevice return true; }else { + isOpen = false; return false; } } @@ -174,6 +179,7 @@ public class CH34xSerialDevice extends UsbSerialDevice { stopFlowControlThread(); connection.releaseInterface(mInterface); + isOpen = false; } @Override diff --git a/usbserial/src/main/java/com/felhr/usbserial/CP2102SerialDevice.java b/usbserial/src/main/java/com/felhr/usbserial/CP2102SerialDevice.java index d442d9e..e24b4f5 100644 --- a/usbserial/src/main/java/com/felhr/usbserial/CP2102SerialDevice.java +++ b/usbserial/src/main/java/com/felhr/usbserial/CP2102SerialDevice.java @@ -116,10 +116,12 @@ public class CP2102SerialDevice extends UsbSerialDevice setThreadsParams(requestIN, outEndpoint); asyncMode = true; + isOpen = true; return true; }else { + isOpen = false; return false; } } @@ -132,6 +134,7 @@ public class CP2102SerialDevice extends UsbSerialDevice killWriteThread(); stopFlowControlThread(); connection.releaseInterface(mInterface); + isOpen = false; } @Override @@ -144,6 +147,7 @@ public class CP2102SerialDevice extends UsbSerialDevice createFlowControlThread(); setSyncParams(inEndpoint, outEndpoint); asyncMode = false; + isOpen = true; // Init Streams inputStream = new SerialInputStream(this); @@ -152,6 +156,7 @@ public class CP2102SerialDevice extends UsbSerialDevice return true; }else { + isOpen = false; return false; } } @@ -162,6 +167,7 @@ public class CP2102SerialDevice extends UsbSerialDevice setControlCommand(CP210x_IFC_ENABLE, CP210x_UART_DISABLE, null); stopFlowControlThread(); connection.releaseInterface(mInterface); + isOpen = false; } @Override diff --git a/usbserial/src/main/java/com/felhr/usbserial/FTDISerialDevice.java b/usbserial/src/main/java/com/felhr/usbserial/FTDISerialDevice.java index 8f7f1a4..c3aa277 100644 --- a/usbserial/src/main/java/com/felhr/usbserial/FTDISerialDevice.java +++ b/usbserial/src/main/java/com/felhr/usbserial/FTDISerialDevice.java @@ -126,10 +126,12 @@ public class FTDISerialDevice extends UsbSerialDevice setThreadsParams(requestIN, outEndpoint); asyncMode = true; + isOpen = true; return true; }else { + isOpen = false; return false; } } @@ -143,6 +145,7 @@ public class FTDISerialDevice extends UsbSerialDevice killWorkingThread(); killWriteThread(); connection.releaseInterface(mInterface); + isOpen = false; } @Override @@ -158,9 +161,12 @@ public class FTDISerialDevice extends UsbSerialDevice inputStream = new SerialInputStream(this); outputStream = new SerialOutputStream(this); + isOpen = true; + return true; }else { + isOpen = false; return false; } } @@ -172,6 +178,7 @@ public class FTDISerialDevice extends UsbSerialDevice setControlCommand(FTDI_SIO_MODEM_CTRL, FTDI_SET_MODEM_CTRL_DEFAULT4, 0, null); currentSioSetData = 0x0000; connection.releaseInterface(mInterface); + isOpen = false; } @Override diff --git a/usbserial/src/main/java/com/felhr/usbserial/PL2303SerialDevice.java b/usbserial/src/main/java/com/felhr/usbserial/PL2303SerialDevice.java index 0ba47b4..5754777 100644 --- a/usbserial/src/main/java/com/felhr/usbserial/PL2303SerialDevice.java +++ b/usbserial/src/main/java/com/felhr/usbserial/PL2303SerialDevice.java @@ -73,10 +73,12 @@ public class PL2303SerialDevice extends UsbSerialDevice setThreadsParams(requestIN, outEndpoint); asyncMode = true; + isOpen = true; return true; }else { + isOpen = false; return false; } } @@ -87,6 +89,7 @@ public class PL2303SerialDevice extends UsbSerialDevice killWorkingThread(); killWriteThread(); connection.releaseInterface(mInterface); + isOpen = false; } @Override @@ -97,6 +100,7 @@ public class PL2303SerialDevice extends UsbSerialDevice { setSyncParams(inEndpoint, outEndpoint); asyncMode = false; + isOpen = true; // Init Streams inputStream = new SerialInputStream(this); @@ -105,6 +109,7 @@ public class PL2303SerialDevice extends UsbSerialDevice return true; }else { + isOpen = false; return false; } } @@ -113,6 +118,7 @@ public class PL2303SerialDevice extends UsbSerialDevice public void syncClose() { connection.releaseInterface(mInterface); + isOpen = false; } @Override diff --git a/usbserial/src/main/java/com/felhr/usbserial/UsbSerialDevice.java b/usbserial/src/main/java/com/felhr/usbserial/UsbSerialDevice.java index 2ab7fbe..90dddeb 100644 --- a/usbserial/src/main/java/com/felhr/usbserial/UsbSerialDevice.java +++ b/usbserial/src/main/java/com/felhr/usbserial/UsbSerialDevice.java @@ -40,6 +40,8 @@ public abstract class UsbSerialDevice implements UsbSerialInterface protected boolean asyncMode; + protected boolean isOpen; + // Get Android version if version < 4.3 It is not going to be asynchronous read operations static { @@ -233,6 +235,10 @@ public abstract class UsbSerialDevice implements UsbSerialInterface serialBuffer.debug(value); } + public boolean isOpen(){ + return isOpen; + } + private boolean isFTDIDevice() { return (this instanceof FTDISerialDevice);