From 14281a8c01019e201388c558281c8a68c12f1f0e Mon Sep 17 00:00:00 2001 From: GKenn Date: Fri, 30 Jul 2021 14:47:10 -0400 Subject: [PATCH 1/9] updated SerialDeviceList java to improve disconnect behavior for MacOS (cherry picked from commit 29430b58b7da86dcd5e1c583df1cd9c7908292b4) --- src/main/java/jssc/SerialPortList.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/jssc/SerialPortList.java b/src/main/java/jssc/SerialPortList.java index 5af9a95ea..353037cb4 100644 --- a/src/main/java/jssc/SerialPortList.java +++ b/src/main/java/jssc/SerialPortList.java @@ -330,12 +330,16 @@ private static String[] getUnixBasedPortNames(String searchPath, Pattern pattern String fileName = file.getName(); if(!file.isDirectory() && !file.isFile() && pattern.matcher(fileName).find()){ String portName = searchPath + fileName; - long portHandle = serialInterface.openPort(portName, false);//Open port without TIOCEXCL - if(portHandle < 0 && portHandle != SerialNativeInterface.ERR_PORT_BUSY){ - continue; - } - else if(portHandle != SerialNativeInterface.ERR_PORT_BUSY) { - serialInterface.closePort(portHandle); + // long portHandle = serialInterface.openPort(portName, false);//Open port without TIOCEXCL + // For linux ttyS0..31 serial ports check existence by opening each of them + if (fileName.startsWith("ttyS")) { + long portHandle = serialInterface.openPort(portName, false);//Open port without TIOCEXCL + if(portHandle < 0 && portHandle != SerialNativeInterface.ERR_PORT_BUSY){ + continue; + } + else if(portHandle != SerialNativeInterface.ERR_PORT_BUSY) { + serialInterface.closePort(portHandle); + } } portsTree.add(portName); } From 4e53423cfe55a8b989eff6a781e22cba73e9ee7b Mon Sep 17 00:00:00 2001 From: GKenn Date: Fri, 30 Jul 2021 15:17:58 -0400 Subject: [PATCH 2/9] updated Linux device detection testing --- src/main/java/jssc/SerialPortList.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/jssc/SerialPortList.java b/src/main/java/jssc/SerialPortList.java index 353037cb4..9bf75836e 100644 --- a/src/main/java/jssc/SerialPortList.java +++ b/src/main/java/jssc/SerialPortList.java @@ -53,7 +53,7 @@ public class SerialPortList { break; } case SerialNativeInterface.OS_MAC_OS_X: { - PORTNAMES_REGEXP = Pattern.compile("tty.(serial|usbserial|usbmodem).*"); + PORTNAMES_REGEXP = Pattern.compile("(tty|cu)\\..*"); PORTNAMES_PATH = "/dev/"; break; } From ad90be8bf0ca54a7bfec8fd9fa66495437ffd890 Mon Sep 17 00:00:00 2001 From: GKenn Date: Fri, 30 Jul 2021 17:42:06 -0400 Subject: [PATCH 3/9] cleaned up commenting for Linux serial port name detection --- src/main/java/jssc/SerialPortList.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/jssc/SerialPortList.java b/src/main/java/jssc/SerialPortList.java index 9bf75836e..2d3f76d7e 100644 --- a/src/main/java/jssc/SerialPortList.java +++ b/src/main/java/jssc/SerialPortList.java @@ -330,8 +330,7 @@ private static String[] getUnixBasedPortNames(String searchPath, Pattern pattern String fileName = file.getName(); if(!file.isDirectory() && !file.isFile() && pattern.matcher(fileName).find()){ String portName = searchPath + fileName; - // long portHandle = serialInterface.openPort(portName, false);//Open port without TIOCEXCL - // For linux ttyS0..31 serial ports check existence by opening each of them + // For linux ttyS0..31 serial ports check existence by opening each of them if (fileName.startsWith("ttyS")) { long portHandle = serialInterface.openPort(portName, false);//Open port without TIOCEXCL if(portHandle < 0 && portHandle != SerialNativeInterface.ERR_PORT_BUSY){ From 414f1cd78284b66652a808b9acbc91ef7e005707 Mon Sep 17 00:00:00 2001 From: GKenn Date: Fri, 30 Jul 2021 14:47:10 -0400 Subject: [PATCH 4/9] updated SerialDeviceList java to improve disconnect behavior for MacOS (cherry picked from commit 29430b58b7da86dcd5e1c583df1cd9c7908292b4) --- src/main/java/jssc/SerialPortList.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/jssc/SerialPortList.java b/src/main/java/jssc/SerialPortList.java index 5af9a95ea..353037cb4 100644 --- a/src/main/java/jssc/SerialPortList.java +++ b/src/main/java/jssc/SerialPortList.java @@ -330,12 +330,16 @@ private static String[] getUnixBasedPortNames(String searchPath, Pattern pattern String fileName = file.getName(); if(!file.isDirectory() && !file.isFile() && pattern.matcher(fileName).find()){ String portName = searchPath + fileName; - long portHandle = serialInterface.openPort(portName, false);//Open port without TIOCEXCL - if(portHandle < 0 && portHandle != SerialNativeInterface.ERR_PORT_BUSY){ - continue; - } - else if(portHandle != SerialNativeInterface.ERR_PORT_BUSY) { - serialInterface.closePort(portHandle); + // long portHandle = serialInterface.openPort(portName, false);//Open port without TIOCEXCL + // For linux ttyS0..31 serial ports check existence by opening each of them + if (fileName.startsWith("ttyS")) { + long portHandle = serialInterface.openPort(portName, false);//Open port without TIOCEXCL + if(portHandle < 0 && portHandle != SerialNativeInterface.ERR_PORT_BUSY){ + continue; + } + else if(portHandle != SerialNativeInterface.ERR_PORT_BUSY) { + serialInterface.closePort(portHandle); + } } portsTree.add(portName); } From 0ba7cc357ac1defbd1b3bf3dd9ede2ca513e577d Mon Sep 17 00:00:00 2001 From: GKenn Date: Fri, 30 Jul 2021 15:17:58 -0400 Subject: [PATCH 5/9] updated Linux device detection testing --- src/main/java/jssc/SerialPortList.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/jssc/SerialPortList.java b/src/main/java/jssc/SerialPortList.java index 353037cb4..9bf75836e 100644 --- a/src/main/java/jssc/SerialPortList.java +++ b/src/main/java/jssc/SerialPortList.java @@ -53,7 +53,7 @@ public class SerialPortList { break; } case SerialNativeInterface.OS_MAC_OS_X: { - PORTNAMES_REGEXP = Pattern.compile("tty.(serial|usbserial|usbmodem).*"); + PORTNAMES_REGEXP = Pattern.compile("(tty|cu)\\..*"); PORTNAMES_PATH = "/dev/"; break; } From 025bf360d10ae64deb86d19dd36c0b29c431557f Mon Sep 17 00:00:00 2001 From: GKenn Date: Fri, 30 Jul 2021 17:42:06 -0400 Subject: [PATCH 6/9] cleaned up commenting for Linux serial port name detection --- src/main/java/jssc/SerialPortList.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/jssc/SerialPortList.java b/src/main/java/jssc/SerialPortList.java index 9bf75836e..2d3f76d7e 100644 --- a/src/main/java/jssc/SerialPortList.java +++ b/src/main/java/jssc/SerialPortList.java @@ -330,8 +330,7 @@ private static String[] getUnixBasedPortNames(String searchPath, Pattern pattern String fileName = file.getName(); if(!file.isDirectory() && !file.isFile() && pattern.matcher(fileName).find()){ String portName = searchPath + fileName; - // long portHandle = serialInterface.openPort(portName, false);//Open port without TIOCEXCL - // For linux ttyS0..31 serial ports check existence by opening each of them + // For linux ttyS0..31 serial ports check existence by opening each of them if (fileName.startsWith("ttyS")) { long portHandle = serialInterface.openPort(portName, false);//Open port without TIOCEXCL if(portHandle < 0 && portHandle != SerialNativeInterface.ERR_PORT_BUSY){ From 1ca0284d38a2b5645355c54969f9bce4c1ecec9f Mon Sep 17 00:00:00 2001 From: GKenn Date: Fri, 30 Jul 2021 14:47:10 -0400 Subject: [PATCH 7/9] rebased based on master PR93 - ant-run build.xml (cherry picked from commit 29430b58b7da86dcd5e1c583df1cd9c7908292b4) --- src/main/java/jssc/SerialPortList.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/jssc/SerialPortList.java b/src/main/java/jssc/SerialPortList.java index 2d3f76d7e..add912612 100644 --- a/src/main/java/jssc/SerialPortList.java +++ b/src/main/java/jssc/SerialPortList.java @@ -330,7 +330,12 @@ private static String[] getUnixBasedPortNames(String searchPath, Pattern pattern String fileName = file.getName(); if(!file.isDirectory() && !file.isFile() && pattern.matcher(fileName).find()){ String portName = searchPath + fileName; +<<<<<<< HEAD // For linux ttyS0..31 serial ports check existence by opening each of them +======= + // long portHandle = serialInterface.openPort(portName, false);//Open port without TIOCEXCL + // For linux ttyS0..31 serial ports check existence by opening each of them +>>>>>>> 14281a8 (updated SerialDeviceList java to improve disconnect behavior for MacOS) if (fileName.startsWith("ttyS")) { long portHandle = serialInterface.openPort(portName, false);//Open port without TIOCEXCL if(portHandle < 0 && portHandle != SerialNativeInterface.ERR_PORT_BUSY){ From ea52208fe0f8e63c7c0fefb95e0767980bcebe94 Mon Sep 17 00:00:00 2001 From: GKenn Date: Fri, 30 Jul 2021 23:49:11 -0400 Subject: [PATCH 8/9] merging updated dev-detect current master branch --- .../natives/windows_arm64/jssc.dll | Bin 0 -> 94720 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources-precompiled/natives/windows_arm64/jssc.dll diff --git a/src/main/resources-precompiled/natives/windows_arm64/jssc.dll b/src/main/resources-precompiled/natives/windows_arm64/jssc.dll new file mode 100644 index 0000000000000000000000000000000000000000..b825583267351cca100fbd6135f94ee4a3309e0c GIT binary patch literal 94720 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 Date: Sun, 1 Aug 2021 12:55:28 -0400 Subject: [PATCH 9/9] Update SerialPortList.java --- src/main/java/jssc/SerialPortList.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/jssc/SerialPortList.java b/src/main/java/jssc/SerialPortList.java index add912612..2d3f76d7e 100644 --- a/src/main/java/jssc/SerialPortList.java +++ b/src/main/java/jssc/SerialPortList.java @@ -330,12 +330,7 @@ private static String[] getUnixBasedPortNames(String searchPath, Pattern pattern String fileName = file.getName(); if(!file.isDirectory() && !file.isFile() && pattern.matcher(fileName).find()){ String portName = searchPath + fileName; -<<<<<<< HEAD // For linux ttyS0..31 serial ports check existence by opening each of them -======= - // long portHandle = serialInterface.openPort(portName, false);//Open port without TIOCEXCL - // For linux ttyS0..31 serial ports check existence by opening each of them ->>>>>>> 14281a8 (updated SerialDeviceList java to improve disconnect behavior for MacOS) if (fileName.startsWith("ttyS")) { long portHandle = serialInterface.openPort(portName, false);//Open port without TIOCEXCL if(portHandle < 0 && portHandle != SerialNativeInterface.ERR_PORT_BUSY){