From: Daniel Kirschten Date: Wed, 3 Jul 2019 21:25:03 +0000 (+0200) Subject: Switched SubmodelComponentTestbench to use JSON-based Am2901 X-Git-Url: https://mograsim.net/gitweb/?a=commitdiff_plain;h=560162bd8d9a5f42305cd04cc0489464b1eafcf1;p=Mograsim.git Switched SubmodelComponentTestbench to use JSON-based Am2901 --- diff --git a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/SubmodelComponentTestbench.java b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/SubmodelComponentTestbench.java index a3dda8af..5f10c729 100644 --- a/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/SubmodelComponentTestbench.java +++ b/net.mograsim.logic.ui.am2900/src/net/mograsim/logic/ui/examples/SubmodelComponentTestbench.java @@ -1,12 +1,16 @@ package net.mograsim.logic.ui.examples; +import java.util.ArrayList; +import java.util.List; + import net.mograsim.logic.ui.SimpleLogicUIStandalone; import net.mograsim.logic.ui.model.ViewModelModifiable; import net.mograsim.logic.ui.model.components.atomic.GUIBitDisplay; import net.mograsim.logic.ui.model.components.atomic.GUIManualSwitch; -import net.mograsim.logic.ui.model.components.mi.nandbased.am2901.GUIAm2901; -import net.mograsim.logic.ui.model.components.submodels.SimpleRectangularSubmodelComponent; +import net.mograsim.logic.ui.model.components.submodels.SubmodelComponent; import net.mograsim.logic.ui.model.wires.GUIWire; +import net.mograsim.logic.ui.model.wires.Pin; +import net.mograsim.logic.ui.serializing.SubmodelComponentDeserializer; public class SubmodelComponentTestbench { @@ -18,20 +22,29 @@ public class SubmodelComponentTestbench @SuppressWarnings("unused") // for GUIWires being created public static void createTestbench(ViewModelModifiable model) { - SimpleRectangularSubmodelComponent comp = new GUIAm2901(model); + SubmodelComponent comp = SubmodelComponentDeserializer.create(model, "components/am2901/GUIAm2901.json"); + + // guess which pins are outputs and which are inputs + List inputPinNames = new ArrayList<>(); + List outputPinNames = new ArrayList<>(); + for (Pin p : comp.getPins().values()) + if (p.getRelX() == 0) + inputPinNames.add(p.name); + else + outputPinNames.add(p.name); comp.moveTo(100, 0); - for (int i = 0; i < comp.getInputPinNames().size(); i++) + for (int i = 0; i < inputPinNames.size(); i++) { GUIManualSwitch sw = new GUIManualSwitch(model); sw.moveTo(0, 20 * i); - new GUIWire(model, comp.getPin(comp.getInputPinNames().get(i)), sw.getOutputPin()); + new GUIWire(model, comp.getPin(inputPinNames.get(i)), sw.getOutputPin()); } - for (int i = 0; i < comp.getOutputPinNames().size(); i++) + for (int i = 0; i < outputPinNames.size(); i++) { GUIBitDisplay bd = new GUIBitDisplay(model); bd.moveTo(200, 20 * i); - new GUIWire(model, comp.getPin(comp.getOutputPinNames().get(i)), bd.getInputPin()); + new GUIWire(model, comp.getPin(outputPinNames.get(i)), bd.getInputPin()); } } } \ No newline at end of file