From 714043ce033c67d9bf36ae557bd86aad52bd9eed Mon Sep 17 00:00:00 2001 From: hneemann Date: Wed, 27 Feb 2019 11:08:09 +0100 Subject: [PATCH] simplified DT switches, see #255 --- .../de/neemann/digital/core/switching/PlainSwitch.java | 8 ++++---- .../de/neemann/digital/core/switching/PlainSwitchDT.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/de/neemann/digital/core/switching/PlainSwitch.java b/src/main/java/de/neemann/digital/core/switching/PlainSwitch.java index 477b34d3c..53f93c68d 100644 --- a/src/main/java/de/neemann/digital/core/switching/PlainSwitch.java +++ b/src/main/java/de/neemann/digital/core/switching/PlainSwitch.java @@ -67,7 +67,7 @@ public final class PlainSwitch implements NodeInterface { input2.addObserverToValue(this).checkBits(bits, null); switch (unidirectional) { case NO: - switchModel = createSwitchModel(input1, input2, output1, output2, true, true); + switchModel = createSwitchModel(input1, input2, output1, output2, false); break; case FROM1TO2: switchModel = new UniDirectionalSwitch(input1, output2); @@ -82,13 +82,13 @@ public final class PlainSwitch implements NodeInterface { static SwitchModel createSwitchModel( ObservableValue input1, ObservableValue input2, ObservableValue output1, ObservableValue output2, - boolean setOpenContactToHighZ, boolean optimizeConstants) throws NodeException { + boolean isDoubleThrow) throws NodeException { if (input1 instanceof CommonBusValue) { if (input2 instanceof CommonBusValue) { final CommonBusValue in1 = (CommonBusValue) input1; final CommonBusValue in2 = (CommonBusValue) input2; - if (optimizeConstants) { + if (!isDoubleThrow) { ObservableValue constant = in1.searchConstant(); if (constant != null) return new UniDirectionalSwitch(constant, output2); @@ -105,7 +105,7 @@ public final class PlainSwitch implements NodeInterface { return new UniDirectionalSwitch(input1, output2); } else { if (input2 instanceof CommonBusValue) { - return new UniDirectionalSwitch(input2, output1, setOpenContactToHighZ); + return new UniDirectionalSwitch(input2, output1, !isDoubleThrow); } else { throw new NodeException(Lang.get("err_switchHasNoNet"), output1, output2); } diff --git a/src/main/java/de/neemann/digital/core/switching/PlainSwitchDT.java b/src/main/java/de/neemann/digital/core/switching/PlainSwitchDT.java index 8d3606b3c..b6806ce23 100644 --- a/src/main/java/de/neemann/digital/core/switching/PlainSwitchDT.java +++ b/src/main/java/de/neemann/digital/core/switching/PlainSwitchDT.java @@ -42,11 +42,11 @@ public final class PlainSwitchDT implements NodeInterface { if (inA != null && inB != null) { inB.addObserverToValue(this).checkBits(bits, null); - s1 = PlainSwitch.createSwitchModel(inA, inB, outputA, outputB, inC == null, false); + s1 = PlainSwitch.createSwitchModel(inA, inB, outputA, outputB, inC != null); } if (inA != null && inC != null) { inC.addObserverToValue(this).checkBits(bits, null); - s2 = PlainSwitch.createSwitchModel(inA, inC, outputA, outputC, inB == null, false); + s2 = PlainSwitch.createSwitchModel(inA, inC, outputA, outputC, inB != null); } }