X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=plugins%2Fnet.mograsim.logic.model.am2900%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fexamples%2FReserializeAndVerifyJSONs.java;h=def5d9af1056fabc75b2679998a46d8024dc7397;hb=09baae6dcfd3e0288e203e1a317c936890ac9726;hp=627ebaf752786fa41d3e5c0ae4e0c4b07321f44a;hpb=660c1e31333d4807e03e21aed1ca24706f310b87;p=Mograsim.git diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeAndVerifyJSONs.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeAndVerifyJSONs.java index 627ebaf7..def5d9af 100644 --- a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeAndVerifyJSONs.java +++ b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/ReserializeAndVerifyJSONs.java @@ -152,15 +152,16 @@ public class ReserializeAndVerifyJSONs private static void changePinUsages(Scanner sysin, DeserializedSubmodelComponent comp) { - comp.getSupermodelPins().entrySet().stream().sorted(Comparator.comparing(Entry::getKey)).map(Entry::getValue).forEach(pin -> + comp.getSubmodelPins().entrySet().stream().sorted(Comparator.comparing(Entry::getKey)).map(Entry::getValue).forEach(pin -> { + PinUsage oldUsage = comp.getSupermodelPin(pin.name).usage; PinUsage usage = null; - while (usage == null) + do try { - System.out.print(" Usage for interface pin " + pin.name + " (empty: " + pin.usage + ") >"); + System.out.print(" Usage for interface pin " + pin.name + " (empty: " + oldUsage + ") >"); String usageStr = sysin.nextLine().toUpperCase(); - usage = usageStr.equals("") ? pin.usage + usage = usageStr.equals("") ? oldUsage : usageStr.equals("I") ? PinUsage.INPUT : usageStr.equals("O") ? PinUsage.OUTPUT : usageStr.equals("T") ? PinUsage.TRISTATE : PinUsage.valueOf(usageStr); @@ -169,6 +170,7 @@ public class ReserializeAndVerifyJSONs { System.err.println(" Illegal usage"); } + while (usage == null); setInterfacePinUsage(comp, pin, usage); }); } @@ -433,13 +435,19 @@ public class ReserializeAndVerifyJSONs private static void setInterfacePinUsage(DeserializedSubmodelComponent comp, Pin interfacePin, PinUsage usage) { - Set wiresConnectedToPin = comp.submodel.getWiresByName().values().stream() - .filter(w -> w.getPin1() == interfacePin || w.getPin2() == interfacePin).collect(Collectors.toSet()); + Set wiresConnectedToPin1 = comp.submodel.getWiresByName().values().stream().filter(w -> w.getPin1() == interfacePin) + .collect(Collectors.toSet()); + Set wiresConnectedToPin2 = comp.submodel.getWiresByName().values().stream().filter(w -> w.getPin2() == interfacePin) + .collect(Collectors.toSet()); LogicModelModifiable submodelModifiable = comp.getSubmodelModifiable(); - wiresConnectedToPin.forEach(submodelModifiable::destroyWire); + wiresConnectedToPin1.forEach(submodelModifiable::destroyWire); + wiresConnectedToPin2.forEach(submodelModifiable::destroyWire); + Pin supermodelPin = comp.getSupermodelPin(interfacePin.name); comp.removeSubmodelInterface(interfacePin.name); comp.addSubmodelInterface(new MovablePin(submodelModifiable, comp, interfacePin.name, interfacePin.logicWidth, usage, - interfacePin.getRelX(), interfacePin.getRelY())); - wiresConnectedToPin.forEach(w -> new ModelWire(submodelModifiable, w.getPin1(), w.getPin2())); + supermodelPin.getRelX(), supermodelPin.getRelY())); + Pin interfacePinNew = comp.getSubmodelPin(interfacePin.name); + wiresConnectedToPin1.forEach(w -> new ModelWire(submodelModifiable, interfacePinNew, w.getPin2(), w.getPath())); + wiresConnectedToPin2.forEach(w -> new ModelWire(submodelModifiable, w.getPin1(), interfacePinNew, w.getPath())); } } \ No newline at end of file