diff --git a/lib/windows/com4j.dll b/lib/windows/com4j.dll deleted file mode 100644 index 1b4528aa..00000000 Binary files a/lib/windows/com4j.dll and /dev/null differ diff --git a/src/com/romraider/logger/external/core/GenericDataSourceConnector.java b/src/com/romraider/logger/external/core/GenericDataSourceConnector.java index 066b697b..8314e642 100644 --- a/src/com/romraider/logger/external/core/GenericDataSourceConnector.java +++ b/src/com/romraider/logger/external/core/GenericDataSourceConnector.java @@ -43,7 +43,7 @@ public final class GenericDataSourceConnector implements Stoppable { break; } catch (Exception e) { LOGGER.error(dataSource.getName() + ": connect error", e); - sleep(500L); + sleep(1000L); } } } diff --git a/src/com/romraider/logger/external/innovate/generic/mts/io/MTSRunner.java b/src/com/romraider/logger/external/innovate/generic/mts/io/MTSRunner.java index 08d2d94a..b4c4a410 100644 --- a/src/com/romraider/logger/external/innovate/generic/mts/io/MTSRunner.java +++ b/src/com/romraider/logger/external/innovate/generic/mts/io/MTSRunner.java @@ -30,13 +30,12 @@ import static org.apache.log4j.Logger.getLogger; public final class MTSRunner implements Stoppable { private static final Logger LOGGER = getLogger(MTSRunner.class); private final DataListener listener; - private final int mtsInput = 0; - private final int mtsPort; + private final MTS mts; private boolean running; private boolean stop; public MTSRunner(int mtsPort, DataListener listener) { - this.mtsPort = mtsPort; + this.mts = mts(mtsPort); this.listener = listener; } @@ -59,24 +58,40 @@ public final class MTSRunner implements Stoppable { while (running && currentTimeMillis() < timeout) sleep(100L); } - private void doRun() { - if (mtsPort < 0) return; + private MTS mts(int mtsPort) { + // bail out early if we know specified mts port is invalid + if (mtsPort < 0) throw new IllegalArgumentException("Bad MTS port: " + mtsPort); + // create mts interface MTS mts = createMTS(); - try { - int portCount = mts.portCount(); - LOGGER.debug("MTS: found " + portCount + " ports."); + try { + // check there are ports available + int portCount = mts.portCount(); + if (portCount <= 0) throw new IllegalStateException("No MTS ports found"); + LOGGER.info("MTS: found " + portCount + " ports."); + + // select the specified port mts.currentPort(mtsPort); String portName = mts.portName(); - LOGGER.debug("MTS: current port [" + mtsPort + "]: " + portName); + LOGGER.info("MTS: current port [" + mtsPort + "]: " + portName); + return mts; + } catch (RuntimeException t) { + // cleanup mts and rethrow exception + if (mts != null) mts.dispose(); + throw t; + } + } + + private void doRun() { + try { // attempt to connect to the specified device mts.connect(); - try { + try { // select the input - mts.currentInput(mtsInput); + mts.currentInput(0); // attempt to get data mts.startData(); diff --git a/src/com/romraider/logger/external/innovate/lm2/mts/plugin/Lm2MtsDataSource.java b/src/com/romraider/logger/external/innovate/lm2/mts/plugin/Lm2MtsDataSource.java index f67b40c2..1298e5ae 100644 --- a/src/com/romraider/logger/external/innovate/lm2/mts/plugin/Lm2MtsDataSource.java +++ b/src/com/romraider/logger/external/innovate/lm2/mts/plugin/Lm2MtsDataSource.java @@ -35,7 +35,7 @@ public final class Lm2MtsDataSource implements ExternalDataSource { private static final Logger LOGGER = getLogger(Lm2MtsDataSource.class); private final Lm2MtsDataItem dataItem = new Lm2MtsDataItem(); private MTSRunner runner; - private int mtsPort = 0; + private int mtsPort = -1; public String getId() { return getClass().getName(); @@ -46,7 +46,7 @@ public final class Lm2MtsDataSource implements ExternalDataSource { } public String getVersion() { - return "0.02"; + return "0.03"; } public List getDataItems() { @@ -79,7 +79,7 @@ public final class Lm2MtsDataSource implements ExternalDataSource { return parseInt(port); } catch (Exception e) { LOGGER.warn("Bad MTS port: " + port); - return 0; + return -1; } } } \ No newline at end of file