1 package net.mograsim.logic.model.am2900.util;
3 import net.mograsim.logic.core.components.CoreBitDisplay;
4 import net.mograsim.logic.core.components.CoreManualSwitch;
5 import net.mograsim.logic.core.types.BitVector;
6 import net.mograsim.logic.model.model.LogicModelModifiable;
7 import net.mograsim.logic.model.model.components.atomic.ModelBitDisplay;
8 import net.mograsim.logic.model.model.components.atomic.ModelManualSwitch;
9 import net.mograsim.logic.model.model.wires.ModelWireCrossPoint;
10 import net.mograsim.logic.model.model.wires.Pin;
11 import net.mograsim.logic.model.util.ModellingTool;
13 public class SwitchWithDisplay
15 private final Pin pin;
16 private final ModelBitDisplay modelBitDisplay;
17 private final ModelManualSwitch modelManualSwitch;
19 public SwitchWithDisplay(LogicModelModifiable model, Pin target)
22 modelBitDisplay = new ModelBitDisplay(model, pin.logicWidth);
23 modelManualSwitch = new ModelManualSwitch(model, pin.logicWidth);
25 ModellingTool tool = ModellingTool.createFor(model);
26 ModelWireCrossPoint crossPoint = new ModelWireCrossPoint(model, pin.logicWidth);
27 tool.connect(modelBitDisplay.getInputPin(), crossPoint);
28 tool.connect(modelManualSwitch.getOutputPin(), crossPoint);
31 public final BitVector getDisplayedValue()
33 return modelBitDisplay.getBitDisplay().getDisplayedValue();
36 public final void setState(BitVector bits)
38 modelManualSwitch.getManualSwitch().setState(bits);
41 public final Pin getPin()
46 public final CoreBitDisplay getBitDisplay()
48 return modelBitDisplay.getBitDisplay();
51 public final CoreManualSwitch getManualSwitch()
53 return modelManualSwitch.getManualSwitch();
56 final ModelBitDisplay getModelBitDisplay()
58 return modelBitDisplay;
61 final ModelManualSwitch getModelManualSwitch()
63 return modelManualSwitch;