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
+
+
+