From 9a476280cdb2421ee0cf37296ad8cbaaa57eedcb Mon Sep 17 00:00:00 2001 From: Egbert Broerse Date: Tue, 30 Apr 2019 21:38:09 +0200 Subject: [PATCH] catch some fixed prefix length managers XNet --- .../src/jmri/jmrix/dcc/DccTurnoutManager.java | 2 +- .../jmri/jmrix/ecos/EcosSensorManager.java | 2 +- java/src/jmri/jmrix/lenz/XNetAddress.java | 2 +- .../configurexml/XNetTurnoutManagerXml.java | 2 +- .../hornbyelite/EliteXNetTurnoutManager.java | 11 +++++++++-- .../jmri/jmrix/ztc/ZTCConnectionTypeList.java | 3 +-- .../jmri/jmrix/ztc/ztc611/ZTC611Adapter.java | 8 ++++---- .../ZTC611XNetInitializationManager.java | 19 ++++++------------- .../ztc/ztc611/ZTC611XNetPacketizer.java | 18 +++++++----------- .../jmrix/ztc/ztc611/ZTC611XNetTurnout.java | 2 +- .../ztc/ztc611/ZTC611XNetTurnoutManager.java | 11 ++++++++--- .../configurexml/ConnectionConfigXml.java | 2 +- .../ZTC611XNetTurnoutManagerXml.java | 5 +++-- 13 files changed, 44 insertions(+), 43 deletions(-) diff --git a/java/src/jmri/jmrix/dcc/DccTurnoutManager.java b/java/src/jmri/jmrix/dcc/DccTurnoutManager.java index 4ba8b765f31..7441b74c57a 100644 --- a/java/src/jmri/jmrix/dcc/DccTurnoutManager.java +++ b/java/src/jmri/jmrix/dcc/DccTurnoutManager.java @@ -23,7 +23,7 @@ public String getSystemPrefix() { @Override public Turnout createNewTurnout(String systemName, String userName) { Turnout t; - int addr = Integer.parseInt(systemName.substring(2)); + int addr = Integer.parseInt(systemName.substring(2)); // fixed length prefix, so (2) is OK here t = new DccTurnout(addr); t.setUserName(userName); diff --git a/java/src/jmri/jmrix/ecos/EcosSensorManager.java b/java/src/jmri/jmrix/ecos/EcosSensorManager.java index 6efd6f217fc..e4e3ca844cd 100644 --- a/java/src/jmri/jmrix/ecos/EcosSensorManager.java +++ b/java/src/jmri/jmrix/ecos/EcosSensorManager.java @@ -46,7 +46,7 @@ public String getSystemPrefix() { @Override public Sensor createNewSensor(String systemName, String userName) { - //int ports = Integer.parseInt(systemName.substring(2)); + //int ports = Integer.parseInt(systemName.substring(getSystemPrefix().length() + 1)); Sensor s = new EcosSensor(systemName, userName); //s.setUserName(userName); diff --git a/java/src/jmri/jmrix/lenz/XNetAddress.java b/java/src/jmri/jmrix/lenz/XNetAddress.java index 8a7ae3eb472..498dd1e8ee7 100644 --- a/java/src/jmri/jmrix/lenz/XNetAddress.java +++ b/java/src/jmri/jmrix/lenz/XNetAddress.java @@ -52,7 +52,7 @@ public static int getBitFromSystemName(String systemName, String prefix) { if( ( systemName.charAt(prefix.length())=='S' || systemName.charAt(prefix.length())=='s' ) && curAddress.contains(":")) { - //Address format passed is in the form of encoderAddress:input or T:turnout address + // Address format passed is in the form of encoderAddress:input or T:turnout address int seperator = curAddress.indexOf(":"); int encoderAddress = Integer.parseInt(curAddress.substring(0, seperator)); int input = Integer.parseInt(curAddress.substring(seperator + 1)); diff --git a/java/src/jmri/jmrix/lenz/configurexml/XNetTurnoutManagerXml.java b/java/src/jmri/jmrix/lenz/configurexml/XNetTurnoutManagerXml.java index a2494e42b71..5a59dd47423 100644 --- a/java/src/jmri/jmrix/lenz/configurexml/XNetTurnoutManagerXml.java +++ b/java/src/jmri/jmrix/lenz/configurexml/XNetTurnoutManagerXml.java @@ -6,7 +6,7 @@ /** * Provides load and store functionality for configuring XNetTurnoutManagers. - *

+ *

* Uses the store method from the abstract base class, but provides a load * method here. * diff --git a/java/src/jmri/jmrix/lenz/hornbyelite/EliteXNetTurnoutManager.java b/java/src/jmri/jmrix/lenz/hornbyelite/EliteXNetTurnoutManager.java index a2dd306db53..6b16827c78a 100644 --- a/java/src/jmri/jmrix/lenz/hornbyelite/EliteXNetTurnoutManager.java +++ b/java/src/jmri/jmrix/lenz/hornbyelite/EliteXNetTurnoutManager.java @@ -1,6 +1,7 @@ package jmri.jmrix.lenz.hornbyelite; import jmri.Turnout; +import jmri.jmrix.lenz.XNetAddress; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -22,8 +23,14 @@ public EliteXNetTurnoutManager(jmri.jmrix.lenz.XNetTrafficController controller, @Override public Turnout createNewTurnout(String systemName, String userName) { - int addr = Integer.parseInt(systemName.substring(2)); - Turnout t = new EliteXNetTurnout(prefix, addr, tc); + bitNum + // check if the output bit is available + int bitNum = XNetAddress.getBitFromSystemName(systemName, prefix); + if (bitNum == -1) { + return (null); + } + // create the new Turnout object + Turnout t = new EliteXNetTurnout(prefix, bitNum, tc); t.setUserName(userName); return t; } diff --git a/java/src/jmri/jmrix/ztc/ZTCConnectionTypeList.java b/java/src/jmri/jmrix/ztc/ZTCConnectionTypeList.java index 4e9d42c6a35..ac99b827264 100644 --- a/java/src/jmri/jmrix/ztc/ZTCConnectionTypeList.java +++ b/java/src/jmri/jmrix/ztc/ZTCConnectionTypeList.java @@ -5,11 +5,10 @@ /** * Returns a list of valid ZTC Connection Types. Note that - * most ZTC Connection types are Lenz (ZTC uses XpressNet ) + * most ZTC Connection types are Lenz (ZTC uses XpressNet). * * @author Bob Jacobsen Copyright (C) 2010 * @author Kevin Dickerson Copyright (C) 2010 - * */ @ServiceProvider(service = ConnectionTypeList.class) public class ZTCConnectionTypeList implements jmri.jmrix.ConnectionTypeList { diff --git a/java/src/jmri/jmrix/ztc/ztc611/ZTC611Adapter.java b/java/src/jmri/jmrix/ztc/ztc611/ZTC611Adapter.java index 211d5866870..de9b9b3cc89 100644 --- a/java/src/jmri/jmrix/ztc/ztc611/ZTC611Adapter.java +++ b/java/src/jmri/jmrix/ztc/ztc611/ZTC611Adapter.java @@ -47,14 +47,14 @@ public String openPort(String portName, String appName) { try { setSerialPort(); } catch (UnsupportedCommOperationException e) { - log.error("Cannot set serial parameters on port " + portName + ": " + e.getMessage()); + log.error("Cannot set serial parameters on port {}: {}", portName, e.getMessage()); return "Cannot set serial parameters on port " + portName + ": " + e.getMessage(); } // set timeout activeSerialPort.enableReceiveTimeout(10); - log.debug("Serial timeout was observed as: " + activeSerialPort.getReceiveTimeout() - + " " + activeSerialPort.isReceiveTimeoutEnabled()); + log.debug("Serial timeout was observed as: {} {}", activeSerialPort.getReceiveTimeout(), + activeSerialPort.isReceiveTimeoutEnabled()); // get and save stream serialStream = activeSerialPort.getInputStream(); @@ -132,7 +132,7 @@ public DataOutputStream getOutputStream() { try { return new DataOutputStream(activeSerialPort.getOutputStream()); } catch (IOException e) { - log.error("getOutputStream exception: " + e.getMessage()); + log.error("getOutputStream exception: ", e.getMessage()); } return null; } diff --git a/java/src/jmri/jmrix/ztc/ztc611/ZTC611XNetInitializationManager.java b/java/src/jmri/jmrix/ztc/ztc611/ZTC611XNetInitializationManager.java index cdcb55860d6..5826fd06f28 100644 --- a/java/src/jmri/jmrix/ztc/ztc611/ZTC611XNetInitializationManager.java +++ b/java/src/jmri/jmrix/ztc/ztc611/ZTC611XNetInitializationManager.java @@ -9,12 +9,12 @@ import org.slf4j.LoggerFactory; /** - * This class performs Command Station dependant initilization for The ZTC + * This class performs Command Station dependant initialization for the ZTC * ZTC611. It adds the appropriate Managers via the Instance Manager based * on the Command Station Type. * - * @author Paul Bender Copyright (C) 2003,2008 - */ + * @author Paul Bender Copyright (C) 2003, 2008 + */ public class ZTC611XNetInitializationManager extends AbstractXNetInitializationManager { public ZTC611XNetInitializationManager(XNetSystemConnectionMemo memo) { @@ -23,13 +23,8 @@ public ZTC611XNetInitializationManager(XNetSystemConnectionMemo memo) { @Override protected void init() { - if (log.isDebugEnabled()) { - log.debug("Init called"); - } - - if (log.isDebugEnabled()) { - log.debug("Command Station is ZTC ZTC611 (manually identified)."); - } + log.debug("Init called"); + log.debug("Command Station is ZTC ZTC611 (manually identified)."); /* First, we load things that should work on all systems */ @@ -54,9 +49,7 @@ protected void init() { systemMemo.setSensorManager(new jmri.jmrix.lenz.XNetSensorManager(systemMemo.getXNetTrafficController(), systemMemo.getSystemPrefix())); jmri.InstanceManager.setSensorManager(systemMemo.getSensorManager()); - if (log.isDebugEnabled()) { - log.debug("XpressNet Initialization Complete"); - } + log.debug("XpressNet Initialization Complete"); } private final static Logger log = LoggerFactory.getLogger(ZTC611XNetInitializationManager.class); diff --git a/java/src/jmri/jmrix/ztc/ztc611/ZTC611XNetPacketizer.java b/java/src/jmri/jmrix/ztc/ztc611/ZTC611XNetPacketizer.java index 0631c6a9726..af366ac7261 100644 --- a/java/src/jmri/jmrix/ztc/ztc611/ZTC611XNetPacketizer.java +++ b/java/src/jmri/jmrix/ztc/ztc611/ZTC611XNetPacketizer.java @@ -10,12 +10,11 @@ /** * This is an extention of the XNetPacketizer to handle the device specific * requirements of the ZTC611. - *

+ *

* In particular, ZTC611XNetPacketizer adds functions to add and remove the 0xFF * bytes that appear prior to some messages. * * @author Paul Bender Copyright (C) 2006 - * */ public class ZTC611XNetPacketizer extends XNetPacketizer { @@ -26,9 +25,9 @@ public ZTC611XNetPacketizer(jmri.jmrix.lenz.LenzCommandStation pCommandStation) /** * Get characters from the input source, and file a message. - *

+ *

* Returns only when the message is complete. - *

+ *

* Only used in the Receive thread. * * @param msg message to fill @@ -38,16 +37,14 @@ public ZTC611XNetPacketizer(jmri.jmrix.lenz.LenzCommandStation pCommandStation) @Override protected void loadChars(jmri.jmrix.AbstractMRReply msg, java.io.DataInputStream istream) throws java.io.IOException { int i; - if (log.isDebugEnabled()) { - log.debug("loading characters from port"); - } + log.debug("loading characters from port"); for (i = 0; i < msg.maxSize(); i++) { byte char1 = readByteProtected(istream); // This is a test for the ZTC611 device while ((i == 0) && ((char1 & 0xF0) == 0xF0)) { if ((char1 & 0xFF) != 0xF0 && (char1 & 0xFF) != 0xF2) { if (log.isDebugEnabled()) { - log.debug("Filtering 0x" + Integer.toHexString(char1 & 0xFF) + " from stream"); + log.debug("Filtering 0x{} from stream", Integer.toHexString(char1 & 0xFF)); } // toss this byte and read the next one char1 = readByteProtected(istream); @@ -59,11 +56,10 @@ protected void loadChars(jmri.jmrix.AbstractMRReply msg, java.io.DataInputStream } } if (log.isDebugEnabled()) { - log.debug("Accepted Message: " + msg.toString()); + log.debug("Accepted Message: {}", msg.toString()); } } private final static Logger log = LoggerFactory.getLogger(ZTC611XNetPacketizer.class); -} - +} diff --git a/java/src/jmri/jmrix/ztc/ztc611/ZTC611XNetTurnout.java b/java/src/jmri/jmrix/ztc/ztc611/ZTC611XNetTurnout.java index c5a2261f839..17948302880 100644 --- a/java/src/jmri/jmrix/ztc/ztc611/ZTC611XNetTurnout.java +++ b/java/src/jmri/jmrix/ztc/ztc611/ZTC611XNetTurnout.java @@ -7,7 +7,7 @@ * connections. See XNetTurnout for further documentation. * * @author Paul Bender Copyright (C) 2008,2017 - */ + */ public class ZTC611XNetTurnout extends jmri.jmrix.lenz.XNetTurnout { public ZTC611XNetTurnout(String prefix, int pNumber, XNetTrafficController tc) { // a human-readable turnout number must be specified! diff --git a/java/src/jmri/jmrix/ztc/ztc611/ZTC611XNetTurnoutManager.java b/java/src/jmri/jmrix/ztc/ztc611/ZTC611XNetTurnoutManager.java index cbd40de12de..a9f50fc5a95 100644 --- a/java/src/jmri/jmrix/ztc/ztc611/ZTC611XNetTurnoutManager.java +++ b/java/src/jmri/jmrix/ztc/ztc611/ZTC611XNetTurnoutManager.java @@ -1,6 +1,7 @@ package jmri.jmrix.ztc.ztc611; import jmri.Turnout; +import jmri.jmrix.lenz.XNetAddress; /** * Implement turnout manager - Specific to ZTC ZTC611 @@ -8,7 +9,7 @@ * System names are "XTnnn", where X is the user-configurable system prefix, * nnn is the turnout number without padding. * - * @author Paul Bender Copyright (C) 2008,2017 + * @author Paul Bender Copyright (C) 2008, 2017 */ public class ZTC611XNetTurnoutManager extends jmri.jmrix.lenz.XNetTurnoutManager implements jmri.jmrix.lenz.XNetListener { @@ -19,8 +20,12 @@ public ZTC611XNetTurnoutManager(jmri.jmrix.lenz.XNetTrafficController controller // XNet-specific methods @Override public Turnout createNewTurnout(String systemName, String userName) { - int addr = Integer.parseInt(systemName.substring(2)); - Turnout t = new ZTC611XNetTurnout(prefix, addr, tc); + // check if the output bit is available + int bitNum = XNetAddress.getBitFromSystemName(systemName, prefix); + if (bitNum == -1) { + return (null); + } + Turnout t = new ZTC611XNetTurnout(prefix, bitNum, tc); t.setUserName(userName); return t; } diff --git a/java/src/jmri/jmrix/ztc/ztc611/configurexml/ConnectionConfigXml.java b/java/src/jmri/jmrix/ztc/ztc611/configurexml/ConnectionConfigXml.java index 5c839d6e175..828c87f420c 100644 --- a/java/src/jmri/jmrix/ztc/ztc611/configurexml/ConnectionConfigXml.java +++ b/java/src/jmri/jmrix/ztc/ztc611/configurexml/ConnectionConfigXml.java @@ -8,7 +8,7 @@ * Handle XML persistance of layout connections by persistening the * ZTC611Adapter (and connections). Note this is named as the XML version of a * ConnectionConfig object, but it's actually persisting the ZTC611Adapter. - *

+ *

* This class is invoked from jmrix.JmrixConfigPaneXml on write, as that class * is the one actually registered. Reads are brought here directly via the class * attribute in the XML. diff --git a/java/src/jmri/jmrix/ztc/ztc611/configurexml/ZTC611XNetTurnoutManagerXml.java b/java/src/jmri/jmrix/ztc/ztc611/configurexml/ZTC611XNetTurnoutManagerXml.java index c801acefe3b..50767da44f4 100644 --- a/java/src/jmri/jmrix/ztc/ztc611/configurexml/ZTC611XNetTurnoutManagerXml.java +++ b/java/src/jmri/jmrix/ztc/ztc611/configurexml/ZTC611XNetTurnoutManagerXml.java @@ -5,8 +5,9 @@ import org.slf4j.LoggerFactory; /** - * Provides load and store functionality for configuring XNetTurnoutManagers. - *

+ * Provides load and store functionality for configuring XNetTurnoutManagers + * and ZTC611 in particular. + *

* Uses the store method from the abstract base class, but provides a load * method here. *