From 04db5825c095666b95f4732be5b4fdf0eba6b9a0 Mon Sep 17 00:00:00 2001 From: Felipe Herranz Date: Wed, 30 Jan 2019 23:47:16 +0100 Subject: [PATCH] solving issue disconnecting one device with multiple serial ports --- .../com/felhr/usbserial/SerialPortBuilder.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/usbserial/src/main/java/com/felhr/usbserial/SerialPortBuilder.java b/usbserial/src/main/java/com/felhr/usbserial/SerialPortBuilder.java index 70374bd..295172d 100644 --- a/usbserial/src/main/java/com/felhr/usbserial/SerialPortBuilder.java +++ b/usbserial/src/main/java/com/felhr/usbserial/SerialPortBuilder.java @@ -130,17 +130,18 @@ public class SerialPortBuilder { } public boolean disconnectDevice(UsbDevice usbDevice){ - Optional optionalDevice = Stream.of(serialDevices) + List devices = Stream.of(serialDevices) .filter(p -> usbDevice.getDeviceId() == p.getDeviceId()) - .findSingle(); + .toList(); - if(optionalDevice.isPresent()){ - UsbSerialDevice disconnectedDevice = optionalDevice.get(); - disconnectedDevice.syncClose(); + int removedDevices = 0; + for(UsbSerialDevice device : devices){ + device.syncClose(); serialDevices = Utils.removeIf(serialDevices, p -> usbDevice.getDeviceId() == p.getDeviceId()); - return true; + removedDevices ++; } - return false; + + return removedDevices == devices.size(); } public void unregisterListeners(Context context){