From da0d1d7df6e5db543ef808c2cc99e037fecb7805 Mon Sep 17 00:00:00 2001 From: Jonah Graham Date: Mon, 11 May 2020 12:40:03 -0400 Subject: [PATCH] Bug 543122: Add additional baud rates for serial Includes new API to allow, on platforms that support it, setting and getting arbitrary rates. Change-Id: I0b1134325f913bb09d1bf0cd902f89e968d80570 --- .../guide/deprecated_API_removals.html | 23 +++ .../META-INF/MANIFEST.MF | 2 +- .../jni/serial.c | 111 +++++++++++++- .../os/linux/x86_64/libserial.so | Bin 13192 -> 13224 bytes .../os/macosx/x86_64/libserial.jnilib | Bin 13756 -> 13756 bytes .../os/win32/x86_64/serial.dll | Bin 380597 -> 381152 bytes native/org.eclipse.cdt.native.serial/pom.xml | 4 +- .../src/org/eclipse/cdt/serial/BaudRate.java | 137 ++++++++++++++---- .../org/eclipse/cdt/serial/SerialPort.java | 37 ++++- .../eclipse/cdt/serial/StandardBaudRates.java | 59 ++++++++ .../META-INF/MANIFEST.MF | 2 +- .../cdtserial/connector/SerialConnector.java | 11 +- .../cdtserial/connector/SerialSettings.java | 44 ++++-- .../cdtserial/controls/SerialConfigPanel.java | 8 +- .../controls/SerialSettingsPage.java | 44 +++--- .../launcher/SerialLauncherDelegate.java | 3 +- .../connector/cdtserial/nls/Messages.java | 1 + .../cdtserial/nls/Messages.properties | 1 + 18 files changed, 404 insertions(+), 83 deletions(-) create mode 100644 native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/StandardBaudRates.java diff --git a/doc/org.eclipse.cdt.doc.isv/guide/deprecated_API_removals.html b/doc/org.eclipse.cdt.doc.isv/guide/deprecated_API_removals.html index da3a3c9b9ed..ead65240bf0 100644 --- a/doc/org.eclipse.cdt.doc.isv/guide/deprecated_API_removals.html +++ b/doc/org.eclipse.cdt.doc.isv/guide/deprecated_API_removals.html @@ -44,6 +44,7 @@

  1. 32-bit Binary parsers with 64-bit replacements
  2. +
  3. BaudRate enum in org.eclipse.cdt.serial

@@ -204,6 +205,28 @@

See Bug 562495.

+ +

2. BaudRate enum in org.eclipse.cdt.serial

+

+ The BaudRate enum in org.eclipse.cdt.serial package will be removed. The following + APIs will be removed, listed with their replacement. +

+ +

+ See Bug 563108. +

\ No newline at end of file diff --git a/native/org.eclipse.cdt.native.serial/META-INF/MANIFEST.MF b/native/org.eclipse.cdt.native.serial/META-INF/MANIFEST.MF index 79326a762a7..79a8bc63545 100644 --- a/native/org.eclipse.cdt.native.serial/META-INF/MANIFEST.MF +++ b/native/org.eclipse.cdt.native.serial/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: Serial Port Bundle-SymbolicName: org.eclipse.cdt.native.serial -Bundle-Version: 1.1.500.qualifier +Bundle-Version: 1.2.0.qualifier Bundle-Vendor: Eclipse CDT Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Export-Package: org.eclipse.cdt.serial diff --git a/native/org.eclipse.cdt.native.serial/jni/serial.c b/native/org.eclipse.cdt.native.serial/jni/serial.c index 95d3b57f379..bd77e74bffc 100644 --- a/native/org.eclipse.cdt.native.serial/jni/serial.c +++ b/native/org.eclipse.cdt.native.serial/jni/serial.c @@ -27,6 +27,9 @@ #include #include #include +#ifndef __APPLE__ +#include +#endif #else #define WIN32_LEAN_AND_MEAN #define UNICODE @@ -36,6 +39,29 @@ #define FUNC(x) Java_org_eclipse_cdt_serial_SerialPort_ ## x +/** + * Use this method to throw an exception when open fails after the OS open + * stage. This method obtains the last error from OS to include in the + * IOException + */ +#ifndef __MINGW32__ +static void closeAndthrowIOException(int fd, JNIEnv *env, const char *msg) +#else +static void closeAndthrowIOException(HANDLE handle, JNIEnv *env, const char *msg) +#endif +{ + char buff[256]; +#ifndef __MINGW32__ + sprintf(buff, "%s: %s", msg, strerror(errno)); + close(fd); +#else + sprintf_s(buff, sizeof(buff), "%s (%d)", msg, GetLastError()); + CloseHandle(handle); +#endif + jclass cls = (*env)->FindClass(env, "java/io/IOException"); + (*env)->ThrowNew(env, cls, buff); +} + static void throwIOException(JNIEnv *env, const char *msg) { char buff[256]; @@ -69,6 +95,7 @@ JNIEXPORT jlong JNICALL FUNC(open0)(JNIEnv *env, jobject jobj, jstring portName, tcgetattr(fd, &options); options.c_cflag |= (CLOCAL | CREAD); +#ifndef __APPLE__ speed_t baud; switch (baudRate) { case 110: @@ -104,12 +131,82 @@ JNIEXPORT jlong JNICALL FUNC(open0)(JNIEnv *env, jobject jobj, jstring portName, case 115200: baud = B115200; break; + case 230400: + baud = B230400; + break; + case 460800: + baud = B460800; + break; + case 500000: + baud = B500000; + break; + case 576000: + baud = B576000; + break; + case 921600: + baud = B921600; + break; + case 1000000: + baud = B1000000; + break; + case 1152000: + baud = B1152000; + break; + case 1500000: + baud = B1500000; + break; + case 2000000: + baud = B2000000; + break; + case 2500000: + baud = B2500000; + break; + case 3000000: + baud = B3000000; + break; + case 3500000: + baud = B3500000; + break; + case 4000000: + baud = B4000000; + break; default: - baud = B115200; + baud = B0; + break; } - // Set baud rate - cfsetispeed(&options, baud); - cfsetospeed(&options, baud); + + if (baud == B0) { + // Use custom linux baud rates if possible: https://bugs.eclipse.org/bugs/show_bug.cgi?id=543122#c8 + struct serial_struct serial_options; + options.c_cflag |= B38400; + + if (ioctl(fd, TIOCGSERIAL, &serial_options) != 0) { + closeAndthrowIOException(fd, env, "Failed to use custom baud rate. Error using TIOCGSERIAL"); + return -1; + } + serial_options.custom_divisor = serial_options.baud_base / baudRate; + if (serial_options.custom_divisor == 0) { + serial_options.custom_divisor = 1; + } + + serial_options.flags &= ~ASYNC_SPD_MASK; + serial_options.flags |= ASYNC_SPD_CUST; + + if (ioctl(fd, TIOCSSERIAL, &serial_options) != 0) { + closeAndthrowIOException(fd, env, "Failed to use custom baud rate. Error using TIOCSSERIAL"); + return -1; + } + } else { + // Set baud rate + cfsetispeed(&options, baud); + cfsetospeed(&options, baud); + } + +#else + // On OSX speed_t is simply the baud rate: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/cfsetispeed.3.html + cfsetispeed(&options, baudRate); + cfsetospeed(&options, baudRate); +#endif // set data size options.c_cflag &= ~CSIZE; @@ -191,7 +288,7 @@ JNIEXPORT jlong JNICALL FUNC(open0)(JNIEnv *env, jobject jobj, jstring portName, DCB dcb = { 0 }; if (!GetCommState(handle, &dcb)) { - throwIOException(env, "Error getting DCB"); + closeAndthrowIOException(handle, env, "Error getting DCB"); return -1; } @@ -223,7 +320,7 @@ JNIEXPORT jlong JNICALL FUNC(open0)(JNIEnv *env, jobject jobj, jstring portName, } if (!SetCommState(handle, &dcb)) { - throwIOException(env, "Error setting DCB"); + closeAndthrowIOException(handle, env, "Error setting DCB"); return -1; } @@ -232,7 +329,7 @@ JNIEXPORT jlong JNICALL FUNC(open0)(JNIEnv *env, jobject jobj, jstring portName, timeouts.ReadTotalTimeoutMultiplier = MAXDWORD; timeouts.ReadTotalTimeoutConstant = 200; if (!SetCommTimeouts(handle, &timeouts)) { - throwIOException(env, "Error setting timeouts"); + closeAndthrowIOException(handle, env, "Error setting timeouts"); return -1; } diff --git a/native/org.eclipse.cdt.native.serial/os/linux/x86_64/libserial.so b/native/org.eclipse.cdt.native.serial/os/linux/x86_64/libserial.so index e672cbefdacca15b796abcb29f5ef851fe8516d2..535d0a795c0d519f9fb746ccdce2c7a2e4ceae73 100755 GIT binary patch delta 3586 zcmb7H4^R}>8GpOS0m8u@aBv(rc%uAKNjxy1O-kjA=t67bD4o*Asi0VjMG?iOX`4Ch zv7K&iZj?Of*pAJhGwmelbjFt0VOl|AJ3vz#iA`*$)eg343xTFFO2jI;{=WBiFM7>% zraN=*`~ALu?|X0e?SA*|))!ijl`1dvu2`FL(aXej(c8Osc&R&AvUs^es@V=+ryO-Z zyYu{L!Sg?@&)&S!b}jSH%Ymg;Za%A=37^>Zs7XU^X%0%k zav(EV8f);F3RAS3{;E0M-%b5xQ@=5X=h=JhyW2Ys?cp!k8|-ZzySv)?g8g&6cV!8G zbVbF$FA}Tl!5a7*LsvhDMm6K?gb;n>5G`6bp{Nu|HKTUEd}Qk8LNpp?#@N)W!sit& zEZnq+{w^sZm4&I~J2pslO!Yw*)+s9@O35Lti{xRZg=_o>7A#WfzL`Q{zmHC6hCXFF z@=iy-GQlGbZz9LEzy2kEJ9S0sa;t*73%tOQvueADG$$N|5p(=OWU%HCEK*sX!go40 z2VcKOsXn6_f76c4PGZ@bF{F{dakfT?zI6~rkz@{u)2s0X2k<2$Iu&K4-L`Co<4+a5&p3~t-n9uGy)!& zdaIaPhCEP#oIKJe?u=Qi5xjz_r>ZeiSj?)Om_8>G+_#wjol(Y#CeMdeFil-dn(A(gne`NRFP>tnb>y_>g?G?Hi7f2 zyNhDp?2|F?OyPZ<_(tJ;K>^e#(QUzxXMmruU{I@OuO>qyGXnp;bI*8uI zAXC#DZF)9F(}`Y-Q76&YVl=3@z|Y6HO7u*O+K8Tt(FCH;#i*TVC`J=OXP%NpBoY3y z#L0wrO1y~hc8ODfgEN~YNhQN$5<3X5mN<>@GKtd(dn9%ePL&uHuw$Vi+E?b(-vN_P zcxc=yA8(w4ei-FZ87^q}@RS6F?h{^M2zE}}8mb>0gMNGbB2oM$<5*kl11dz07y;vu0 z)u{dyMmDN{1!9wGJ|Ofw;l@|JANK|wHVyk=Fdvi?T6oKRi?+rgzRF$psT*_rZPyZ& zz0XrK>byUgqdWO@o))g1!q>PM$DZEz*KYHD8H?4ebNsiN8vk9!dNpZ|yEC6u_uk^2 znYA9PUhR)+}_@{3n@ic!<2m6V~wZ^9RZuY5sh|{d@mY333&zOzYO^!tn>}Yeb}g5 zkX!IMb>o5VfP4h<9modAH_%CRLHco@j`L^S%hUrm_-S`>P(wm`TUys*0BZ8`Fu|Lo z45Yihr9PgPs7^SN;7Imw;CBi33lG?bV)m2JccL)S6k74NKP8d_#h=5k9N*DG?089b zw*4yj8Xm~bFS-Zx94w;mvm({&vCNCHghqZOJ3sN`K*#S5oX-A20(TXxQyV-3^##MW z`uL6#37L(hv!=LCQ|g_}>ZgfYmyNmDf!u*@g+EigVh><=5kD0T?|J%K;JU!Q%a(Yl zZBXDnZuaWJL<3*C%;Oyw)*N=s=ObP0dXsl9_jvy-_%-gnqq_8BvML+I z_*pUT72`8B+K(d2$D5U`=I2GcgT;6AzcKY2>2Cn8G}J}c9aG=zmb_33R)S;iVjkA- z^O+hc%J@%;J<2+M9pe*X{Gu4YD#l(h{*VVsJj#f`S9mAzd)z1)OcsA30{dGA0;R1< zYQVu?TK#Z}_3$)!_+M66d97#0l62t2#mgV^aLw<^u$~@E?%-|y)forO|7w=pG4P^) iy_)u}`5!3{Im-B4#i~VvB{JVUU$JJba)vjrDfth0R6+*; delta 2561 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 diff --git a/native/org.eclipse.cdt.native.serial/os/win32/x86_64/serial.dll b/native/org.eclipse.cdt.native.serial/os/win32/x86_64/serial.dll index 856f1399c3288cb00c4ba519ee0a59749d2d5ebf..2b1a6fab52096c2d87a0c0ed8d77784ce7621f1c 100755 GIT binary patch delta 13316 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 diff --git a/native/org.eclipse.cdt.native.serial/pom.xml b/native/org.eclipse.cdt.native.serial/pom.xml index 5a9e0cde877..38302debf3d 100644 --- a/native/org.eclipse.cdt.native.serial/pom.xml +++ b/native/org.eclipse.cdt.native.serial/pom.xml @@ -5,7 +5,7 @@ are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ - + SPDX-License-Identifier: EPL-2.0 Contributors: @@ -23,7 +23,7 @@ ../../pom.xml - 1.1.500-SNAPSHOT + 1.2.0-SNAPSHOT org.eclipse.cdt.native.serial eclipse-plugin diff --git a/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/BaudRate.java b/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/BaudRate.java index ada49ce4485..8a20d3329b9 100644 --- a/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/BaudRate.java +++ b/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/BaudRate.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2015 QNX Software Systems and others. + * Copyright (c) 2015, 2020 QNX Software Systems and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -13,60 +13,135 @@ *******************************************************************************/ package org.eclipse.cdt.serial; +import java.util.Arrays; +import java.util.Optional; + /** + * Standard BaudRates that are generally supported by serial driver. * @since 1.0 + * @deprecated Baud Rates are not a fixed set. Instead use {@link StandardBaudRates} for + * typical values and use an int to represent baud rates. This deprecation goes + * along with {@link SerialPort#setBaudRate(BaudRate)'s deprecation. Use + * SerialPort#setBaudRateValue(int) instead. */ +@Deprecated public enum BaudRate { - B110(110), B300(300), B600(600), B1200(1200), B2400(2400), B4800(4800), B9600(9600), B14400(14400), B19200(19200), - B38400(38400), B57600(57600), B115200(115200); + B110, // + B300, // + B600, // + B1200, // + B2400, // + B4800, // + B9600, + /** + * 14,400 is not standard on Linux and requires custom baud rate support. + */ + B14400, // + B19200, // + B38400, // + B57600, // + B115200, + /** + * @since 1.2 + */ + B230400, + /** + * @since 1.2 + */ + B460800, + /** + * @since 1.2 + */ + B500000, + /** + * @since 1.2 + */ + B576000, + /** + * @since 1.2 + */ + B921600, + /** + * @since 1.2 + */ + B1000000, + /** + * @since 1.2 + */ + B1152000, + /** + * @since 1.2 + */ + B1500000, + /** + * @since 1.2 + */ + B2000000, + /** + * @since 1.2 + */ + B2500000, + /** + * @since 1.2 + */ + B3000000, + /** + * @since 1.2 + */ + B3500000, + /** + * @since 1.2 + */ + B4000000; private final int rate; - private BaudRate(int rate) { - this.rate = rate; + BaudRate() { + this.rate = Integer.parseInt(toString().substring(1)); } public int getRate() { return rate; } - private static final String[] strings = { "110", //$NON-NLS-1$ - "300", //$NON-NLS-1$ - "600", //$NON-NLS-1$ - "1200", //$NON-NLS-1$ - "2400", //$NON-NLS-1$ - "4800", //$NON-NLS-1$ - "9600", //$NON-NLS-1$ - "14400", //$NON-NLS-1$ - "19200", //$NON-NLS-1$ - "38400", //$NON-NLS-1$ - "57600", //$NON-NLS-1$ - "115200" //$NON-NLS-1$ - }; - - public static String[] getStrings() { - return strings; + private String getSpeedString() { + return toString().substring(1); } - private static final BaudRate[] rates = { B110, B300, B600, B1200, B2400, B4800, B9600, B14400, B19200, B38400, - B57600, B115200 }; + public static String[] getStrings() { + return Arrays.asList(values()).stream().map(BaudRate::getSpeedString).toArray(String[]::new); + } public static BaudRate fromStringIndex(int rate) { - return rates[rate]; + if (rate < values().length && rate >= 0) { + return values()[rate]; + } + return getDefault(); } public static int getStringIndex(BaudRate rate) { - for (int i = 0; i < rates.length; ++i) { - if (rate.equals(rates[i])) { - return i; - } - } - return getStringIndex(getDefault()); + return rate.ordinal(); + } + + /** + * This method allows some amount of translation between new API that uses ints + * for baud rate and those that use BaudRate. It attempts to get the closest + * value. + * + * @since 1.2 + */ + public static BaudRate getClosest(int baudRate) { + Optional reduce = Arrays.asList(BaudRate.values()).stream().reduce((result, current) -> { + if (Math.abs(baudRate - current.getRate()) < Math.abs(baudRate - result.getRate())) + return current; + else + return result; + }); + return reduce.get(); } public static BaudRate getDefault() { return B115200; } - } diff --git a/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/SerialPort.java b/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/SerialPort.java index 672895179cc..ef18b1291d0 100644 --- a/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/SerialPort.java +++ b/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/SerialPort.java @@ -38,7 +38,7 @@ public class SerialPort { private boolean isOpen; private boolean isPaused; private Object pauseMutex = new Object(); - private BaudRate baudRate = BaudRate.B115200; + private int baudRate = StandardBaudRates.getDefault(); private ByteSize byteSize = ByteSize.B8; private Parity parity = Parity.None; private StopBits stopBits = StopBits.S1; @@ -325,7 +325,7 @@ public class SerialPort { } public synchronized void open() throws IOException { - handle = open0(portName, baudRate.getRate(), byteSize.getSize(), parity.ordinal(), stopBits.ordinal()); + handle = open0(portName, baudRate, byteSize.getSize(), parity.ordinal(), stopBits.ordinal()); isOpen = true; synchronized (openPorts) { @@ -393,20 +393,51 @@ public class SerialPort { return; } isPaused = false; - handle = open0(portName, baudRate.getRate(), byteSize.getSize(), parity.ordinal(), stopBits.ordinal()); + handle = open0(portName, baudRate, byteSize.getSize(), parity.ordinal(), stopBits.ordinal()); isOpen = true; pauseMutex.notifyAll(); } } + /** + * + * @param rate + * @throws IOException + * @deprecated Use {@link #setBaudRateValue(int)} + */ + @Deprecated public void setBaudRate(BaudRate rate) throws IOException { + if (isOpen) { + throw new IOException(PORT_OPEN); + } + this.baudRate = rate.getRate(); + } + + /** + * @since 1.2 + */ + public void setBaudRateValue(int rate) throws IOException { if (isOpen) { throw new IOException(PORT_OPEN); } this.baudRate = rate; } + /** + * @return the baud rate or closest match. Will only + * return same value as {@link #setBaudRate(BaudRate)}, + * may not match value passed {@link #setBaudRateValue(int)} + * @deprecated Use {@link #getBaudRateValue()} + */ + @Deprecated public BaudRate getBaudRate() { + return BaudRate.getClosest(baudRate); + } + + /** + * @since 1.2 + */ + public int getBaudRateValue() { return baudRate; } diff --git a/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/StandardBaudRates.java b/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/StandardBaudRates.java new file mode 100644 index 00000000000..eb9198377c6 --- /dev/null +++ b/native/org.eclipse.cdt.native.serial/src/org/eclipse/cdt/serial/StandardBaudRates.java @@ -0,0 +1,59 @@ +/******************************************************************************* + * Copyright (c) 2020 Kichwa Coders Canada Inc. and others. + * + * This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 += *******************************************************************************/ +package org.eclipse.cdt.serial; + +/** + * Define the set of baud rates that are standard are generally supported. + * + * @since 1.2 + */ +public final class StandardBaudRates { + /** + * Return an array of the standard values for baud rates. + * + * Note: Especially on Linux these values are special as they can be set + * without requiring operations on the serial port that are not universally + * supported. + * + * The contents of this array may be changed from time to time and therefore + * the order of the elements and length of this array should not be used + * for anything. In particular, if storing a baud rate preference, store the + * integer value of that preference, not the index in this table. + * + * @return array of standard values + */ + public static int[] asArray() { + // This list comes from what linux supports without custom rates. + return new int[] { 110, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, + 576000, 921600, 1000000, 1152000, 1500000, 2000000, 2500000, 3000000, 3500000, 4000000 }; + } + + /** + * Return an array of the standard values for baud rates, as strings for + * display in the UI. + * @see #asArray() + */ + public static String[] asStringArray() { + int[] rates = asArray(); + String[] rateStrings = new String[rates.length]; + for (int i = 0; i < rateStrings.length; i++) { + rateStrings[i] = Integer.toString(rates[i]); + } + return rateStrings; + } + + /** + * Return the default speed used by the {@link SerialPort} + */ + public static int getDefault() { + return 115200; + } +} diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/META-INF/MANIFEST.MF b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/META-INF/MANIFEST.MF index c0ce1b0c6eb..84efc18b27a 100644 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/META-INF/MANIFEST.MF +++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.tm.terminal.connector.cdtserial;singleton:=true -Bundle-Version: 4.6.0.qualifier +Bundle-Version: 4.7.0.qualifier Bundle-Activator: org.eclipse.tm.terminal.connector.cdtserial.activator.Activator Bundle-Vendor: %providerName Require-Bundle: org.eclipse.core.expressions;bundle-version="3.4.400", diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/connector/SerialConnector.java b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/connector/SerialConnector.java index 9cfa234910b..7d9abe5b54d 100644 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/connector/SerialConnector.java +++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/connector/SerialConnector.java @@ -19,11 +19,13 @@ import java.util.HashSet; import java.util.Set; import org.eclipse.cdt.serial.SerialPort; +import org.eclipse.osgi.util.NLS; import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; import org.eclipse.tm.internal.terminal.provisional.api.TerminalState; import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl; import org.eclipse.tm.terminal.connector.cdtserial.activator.Activator; +import org.eclipse.tm.terminal.connector.cdtserial.nls.Messages; public class SerialConnector extends TerminalConnectorImpl { @@ -71,13 +73,20 @@ public class SerialConnector extends TerminalConnectorImpl { serialPort = new SerialPort(settings.getPortName()); try { - serialPort.setBaudRate(settings.getBaudRate()); + serialPort.setBaudRateValue(settings.getBaudRateValue()); serialPort.setByteSize(settings.getByteSize()); serialPort.setParity(settings.getParity()); serialPort.setStopBits(settings.getStopBits()); serialPort.open(); } catch (IOException e) { Activator.log(e); + String error = NLS.bind(Messages.SerialConnector_FailedToOpen, settings.getPortName(), + e.getLocalizedMessage()); + try { + control.getRemoteToTerminalOutputStream().write(error.getBytes()); + } catch (IOException e1) { + Activator.log(e); + } control.setState(TerminalState.CLOSED); return; } diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/connector/SerialSettings.java b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/connector/SerialSettings.java index 444acb6b5ce..f0eddbaf885 100644 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/connector/SerialSettings.java +++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/connector/SerialSettings.java @@ -15,6 +15,7 @@ package org.eclipse.tm.terminal.connector.cdtserial.connector; import org.eclipse.cdt.serial.BaudRate; import org.eclipse.cdt.serial.ByteSize; import org.eclipse.cdt.serial.Parity; +import org.eclipse.cdt.serial.StandardBaudRates; import org.eclipse.cdt.serial.StopBits; import org.eclipse.tm.internal.terminal.provisional.api.ISettingsStore; @@ -27,7 +28,7 @@ public class SerialSettings { public static final String STOP_BITS_ATTR = "cdtserial.stopBits"; //$NON-NLS-1$ private String portName; - private BaudRate baudRate; + private int baudRate; private ByteSize byteSize; private Parity parity; private StopBits stopBits; @@ -39,16 +40,13 @@ public class SerialSettings { portName = store.get(PORT_NAME_ATTR, ""); //$NON-NLS-1$ String baudRateStr = store.get(BAUD_RATE_ATTR, ""); //$NON-NLS-1$ - if (baudRateStr.isEmpty()) { - baudRate = BaudRate.getDefault(); - } else { - String[] rates = BaudRate.getStrings(); - for (int i = 0; i < rates.length; ++i) { - if (baudRateStr.equals(rates[i])) { - baudRate = BaudRate.fromStringIndex(i); - break; - } - } + baudRate = 0; + try { + baudRate = Integer.parseInt(baudRateStr); + } catch (NumberFormatException e) { + } + if (baudRate <= 0) { + baudRate = StandardBaudRates.getDefault(); } String byteSizeStr = store.get(BYTE_SIZE_ATTR, ""); //$NON-NLS-1$ @@ -96,7 +94,7 @@ public class SerialSettings { */ public void save(ISettingsStore store) { store.put(PORT_NAME_ATTR, portName); - store.put(BAUD_RATE_ATTR, BaudRate.getStrings()[BaudRate.getStringIndex(baudRate)]); + store.put(BAUD_RATE_ATTR, Integer.toString(baudRate)); store.put(BYTE_SIZE_ATTR, ByteSize.getStrings()[ByteSize.getStringIndex(byteSize)]); store.put(PARITY_ATTR, Parity.getStrings()[Parity.getStringIndex(parity)]); store.put(STOP_BITS_ATTR, StopBits.getStrings()[StopBits.getStringIndex(stopBits)]); @@ -110,11 +108,33 @@ public class SerialSettings { this.portName = portName; } + /** + * @deprecated Use {@link #getBaudRateValue()} + */ + @Deprecated public BaudRate getBaudRate() { + return BaudRate.getClosest(baudRate); + } + + /** + * @since 4.7 + */ + public int getBaudRateValue() { return baudRate; } + /** + * @deprecated Use {@link #setBaudRate(int)} + */ + @Deprecated public void setBaudRate(BaudRate baudRate) { + this.baudRate = baudRate.getRate(); + } + + /** + * @since 4.7 + */ + public void setBaudRateValue(int baudRate) { this.baudRate = baudRate; } diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/controls/SerialConfigPanel.java b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/controls/SerialConfigPanel.java index fe42b841b52..ff48f7787e6 100644 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/controls/SerialConfigPanel.java +++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/controls/SerialConfigPanel.java @@ -14,7 +14,6 @@ package org.eclipse.tm.terminal.connector.cdtserial.controls; import java.util.Map; -import org.eclipse.cdt.serial.BaudRate; import org.eclipse.cdt.serial.ByteSize; import org.eclipse.cdt.serial.Parity; import org.eclipse.cdt.serial.StopBits; @@ -62,7 +61,7 @@ public class SerialConfigPanel extends AbstractExtendedConfigurationPanel { page.saveSettings(); data.put(SerialSettings.PORT_NAME_ATTR, settings.getPortName()); - data.put(SerialSettings.BAUD_RATE_ATTR, settings.getBaudRate()); + data.put(SerialSettings.BAUD_RATE_ATTR, settings.getBaudRateValue()); data.put(SerialSettings.BYTE_SIZE_ATTR, settings.getByteSize()); data.put(SerialSettings.PARITY_ATTR, settings.getParity()); data.put(SerialSettings.STOP_BITS_ATTR, settings.getStopBits()); @@ -79,7 +78,10 @@ public class SerialConfigPanel extends AbstractExtendedConfigurationPanel { } settings.setPortName((String) data.get(SerialSettings.PORT_NAME_ATTR)); - settings.setBaudRate((BaudRate) data.get(SerialSettings.BAUD_RATE_ATTR)); + Object object = data.get(SerialSettings.BAUD_RATE_ATTR); + if (object != null) { + settings.setBaudRateValue((int) object); + } settings.setByteSize((ByteSize) data.get(SerialSettings.BYTE_SIZE_ATTR)); settings.setParity((Parity) data.get(SerialSettings.PARITY_ATTR)); settings.setStopBits((StopBits) data.get(SerialSettings.STOP_BITS_ATTR)); diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/controls/SerialSettingsPage.java b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/controls/SerialSettingsPage.java index a96aa798a12..1e3972bb153 100644 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/controls/SerialSettingsPage.java +++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/controls/SerialSettingsPage.java @@ -14,10 +14,10 @@ package org.eclipse.tm.terminal.connector.cdtserial.controls; import java.io.IOException; -import org.eclipse.cdt.serial.BaudRate; import org.eclipse.cdt.serial.ByteSize; import org.eclipse.cdt.serial.Parity; import org.eclipse.cdt.serial.SerialPort; +import org.eclipse.cdt.serial.StandardBaudRates; import org.eclipse.cdt.serial.StopBits; import org.eclipse.jface.dialogs.DialogSettings; import org.eclipse.jface.dialogs.IDialogSettings; @@ -50,7 +50,7 @@ public class SerialSettingsPage extends AbstractSettingsPage { private Combo stopBitsCombo; private String portName; - private BaudRate baudRate; + private int baudRate; private ByteSize byteSize; private Parity parity; private StopBits stopBits; @@ -65,17 +65,15 @@ public class SerialSettingsPage extends AbstractSettingsPage { portName = dialogSettings.get(SerialSettings.PORT_NAME_ATTR); String baudRateStr = dialogSettings.get(SerialSettings.BAUD_RATE_ATTR); - if (baudRateStr == null || baudRateStr.isEmpty()) { - baudRate = BaudRate.getDefault(); - } else { - String[] rates = BaudRate.getStrings(); - for (int i = 0; i < rates.length; ++i) { - if (baudRateStr.equals(rates[i])) { - baudRate = BaudRate.fromStringIndex(i); - break; - } + if (baudRateStr != null && !baudRateStr.isEmpty()) { + try { + baudRate = Integer.parseInt(baudRateStr); + } catch (NumberFormatException e) { } } + if (baudRate <= 0) { + baudRate = StandardBaudRates.getDefault(); + } String byteSizeStr = dialogSettings.get(SerialSettings.BYTE_SIZE_ATTR); if (byteSizeStr == null || byteSizeStr.isEmpty()) { @@ -152,11 +150,9 @@ public class SerialSettingsPage extends AbstractSettingsPage { Label baudRateLabel = new Label(comp, SWT.NONE); baudRateLabel.setText(Messages.SerialTerminalSettingsPage_BaudRate); - baudRateCombo = new Combo(comp, SWT.READ_ONLY); + baudRateCombo = new Combo(comp, SWT.DROP_DOWN); baudRateCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); - for (String baudRateStr : BaudRate.getStrings()) { - baudRateCombo.add(baudRateStr); - } + baudRateCombo.setItems(StandardBaudRates.asStringArray()); Label byteSizeLabel = new Label(comp, SWT.NONE); byteSizeLabel.setText(Messages.SerialTerminalSettingsPage_DataSize); @@ -212,11 +208,11 @@ public class SerialSettingsPage extends AbstractSettingsPage { portCombo.select(0); } - BaudRate baudRate = settings.getBaudRate(); - if (baudRate == null) { + int baudRate = settings.getBaudRateValue(); + if (baudRate <= 0) { baudRate = this.baudRate; } - baudRateCombo.select(BaudRate.getStringIndex(baudRate)); + baudRateCombo.setText(Integer.toString(baudRate)); ByteSize byteSize = settings.getByteSize(); if (byteSize == null) { @@ -240,13 +236,21 @@ public class SerialSettingsPage extends AbstractSettingsPage { @Override public void saveSettings() { settings.setPortName(portCombo.getText()); - settings.setBaudRate(BaudRate.fromStringIndex(baudRateCombo.getSelectionIndex())); + int baudRateValue = 0; + try { + baudRateValue = Integer.parseInt(baudRateCombo.getText()); + } catch (NumberFormatException e) { + } + if (baudRateValue <= 0) { + baudRateValue = StandardBaudRates.getDefault(); + } + settings.setBaudRateValue(baudRateValue); settings.setByteSize(ByteSize.fromStringIndex(byteSizeCombo.getSelectionIndex())); settings.setParity(Parity.fromStringIndex(parityCombo.getSelectionIndex())); settings.setStopBits(StopBits.fromStringIndex(stopBitsCombo.getSelectionIndex())); dialogSettings.put(SerialSettings.PORT_NAME_ATTR, portCombo.getText()); - dialogSettings.put(SerialSettings.BAUD_RATE_ATTR, BaudRate.getStrings()[baudRateCombo.getSelectionIndex()]); + dialogSettings.put(SerialSettings.BAUD_RATE_ATTR, Integer.toString(baudRateValue)); dialogSettings.put(SerialSettings.BYTE_SIZE_ATTR, ByteSize.getStrings()[byteSizeCombo.getSelectionIndex()]); dialogSettings.put(SerialSettings.PARITY_ATTR, Parity.getStrings()[parityCombo.getSelectionIndex()]); dialogSettings.put(SerialSettings.STOP_BITS_ATTR, StopBits.getStrings()[stopBitsCombo.getSelectionIndex()]); diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/launcher/SerialLauncherDelegate.java b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/launcher/SerialLauncherDelegate.java index 05b49a0aa27..de55a2711f9 100644 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/launcher/SerialLauncherDelegate.java +++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/launcher/SerialLauncherDelegate.java @@ -14,7 +14,6 @@ package org.eclipse.tm.terminal.connector.cdtserial.launcher; import java.util.Map; -import org.eclipse.cdt.serial.BaudRate; import org.eclipse.cdt.serial.ByteSize; import org.eclipse.cdt.serial.Parity; import org.eclipse.cdt.serial.StopBits; @@ -58,7 +57,7 @@ public class SerialLauncherDelegate extends AbstractLauncherDelegate { // Extract the properties SerialSettings settings = new SerialSettings(); settings.setPortName((String) properties.get(SerialSettings.PORT_NAME_ATTR)); - settings.setBaudRate((BaudRate) properties.get(SerialSettings.BAUD_RATE_ATTR)); + settings.setBaudRateValue((Integer) properties.get(SerialSettings.BAUD_RATE_ATTR)); settings.setByteSize((ByteSize) properties.get(SerialSettings.BYTE_SIZE_ATTR)); settings.setParity((Parity) properties.get(SerialSettings.PARITY_ATTR)); settings.setStopBits((StopBits) properties.get(SerialSettings.STOP_BITS_ATTR)); diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/nls/Messages.java b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/nls/Messages.java index a43aaaafc0e..6d323f8f574 100644 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/nls/Messages.java +++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/nls/Messages.java @@ -37,5 +37,6 @@ public class Messages extends NLS { public static String SerialTerminalSettingsPage_Parity; public static String SerialTerminalSettingsPage_SerialPort; public static String SerialTerminalSettingsPage_StopBits; + public static String SerialConnector_FailedToOpen; } diff --git a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/nls/Messages.properties b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/nls/Messages.properties index 9052b4e2c66..1ef847deafe 100644 --- a/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/nls/Messages.properties +++ b/terminal/plugins/org.eclipse.tm.terminal.connector.cdtserial/src/org/eclipse/tm/terminal/connector/cdtserial/nls/Messages.properties @@ -16,3 +16,4 @@ SerialTerminalSettingsPage_DataSize=Data size: SerialTerminalSettingsPage_Parity=Parity: SerialTerminalSettingsPage_SerialPort=Serial port: SerialTerminalSettingsPage_StopBits=Stop bits: +SerialConnector_FailedToOpen=Failed to open port {0} with selected settings.\r\nThe error from the serial driver:\r\n{1}