diff --git a/java/src/jmri/implementation/MatrixSignalMast.java b/java/src/jmri/implementation/MatrixSignalMast.java index 7cc6e80b3eb..ac04a880702 100644 --- a/java/src/jmri/implementation/MatrixSignalMast.java +++ b/java/src/jmri/implementation/MatrixSignalMast.java @@ -149,6 +149,7 @@ public void setAspect(@Nonnull String aspect) { } } } + // add a timer here to wait a while before setting new aspect? if (aspectToOutput.containsKey(aspect) && aspectToOutput.get(aspect) != errorBits) { // ToDo: pick up drop down choice for either DCC direct packets or Turnouts as outputs // c.sendPacket(NmraPacket.altAccSignalDecoderPkt(dccSignalDecoderAddress, aspectToOutput.get(aspect)), packetRepeatCount); diff --git a/java/src/jmri/implementation/configurexml/MatrixSignalMastXml.java b/java/src/jmri/implementation/configurexml/MatrixSignalMastXml.java index d6f523a782d..7855b915dc8 100644 --- a/java/src/jmri/implementation/configurexml/MatrixSignalMastXml.java +++ b/java/src/jmri/implementation/configurexml/MatrixSignalMastXml.java @@ -103,6 +103,9 @@ public Element store(Object o) { // from mast p to XML e.addContent(el); } } + if (p.resetPreviousStates()) { + e.addContent(new Element("resetPreviousStates").addContent("yes")); + } return e; } @@ -170,6 +173,12 @@ public boolean load(Element shared, Element perNode) { // from XML to mast m m.setAspectDisabled(asp.getText()); } } + + if ((shared.getChild("resetPreviousStates") != null) // load mast-specific delay, since 4.19.4 + && shared.getChild("resetPreviousStates").getText().equals("yes")) { + m.resetPreviousStates(true); + } + return true; } diff --git a/java/test/jmri/implementation/MatrixSignalMastTest.java b/java/test/jmri/implementation/MatrixSignalMastTest.java index f9d27241b5c..9ecfdae99c3 100644 --- a/java/test/jmri/implementation/MatrixSignalMastTest.java +++ b/java/test/jmri/implementation/MatrixSignalMastTest.java @@ -157,6 +157,7 @@ public void testAspects() { m.setAspectEnabled("Approach"); m.setAspectEnabled("Stop"); m.setAspectEnabled("Unlit"); + m.resetPreviousStates(false); m.aspect = "Stop"; // define some initial aspect before setting any aspect m.setMatrixMastCommandDelay(0); diff --git a/xml/schema/types/signalmasts-2-9-6.xsd b/xml/schema/types/signalmasts-2-9-6.xsd index f2210112c7e..c65d675542d 100644 --- a/xml/schema/types/signalmasts-2-9-6.xsd +++ b/xml/schema/types/signalmasts-2-9-6.xsd @@ -467,6 +467,13 @@ + + + + "yes" means that the dark turnout command should be sent before each new aspects turnout command + + +