c25fd6daaa3a9093a99e0474e4597ac1050b43c6
[Mograsim.git] / era.mi / src / era / mi / logic / tests / Connector.java
1 package era.mi.logic.tests;\r
2 \r
3 import era.mi.logic.Bit;\r
4 import era.mi.logic.Simulation;\r
5 import era.mi.logic.wires.WireArray;\r
6 import era.mi.logic.wires.WireArray.WireArrayInput;\r
7 import era.mi.logic.wires.WireArrayObserver;\r
8 \r
9 public class Connector implements WireArrayObserver {\r
10         private final WireArray a;\r
11 //      private final WireArray b;\r
12         private final WireArrayInput aI;\r
13         private final WireArrayInput bI;\r
14 \r
15         public Connector(WireArray a, WireArray b) {\r
16                 if (a.length != b.length)\r
17                         throw new IllegalArgumentException(String.format("WireArray width does not match: %d, %d", a.length, b.length));\r
18                 this.a = a;\r
19 //              this.b = b;\r
20                 a.addObserver(this);\r
21                 b.addObserver(this);\r
22                 aI = a.createInput();\r
23                 bI = b.createInput();\r
24         }\r
25 \r
26         @Override\r
27         public void update(WireArray initiator, Bit[] oldValues) {\r
28                 Simulation.TIMELINE.addEvent((e) -> {\r
29                         if (initiator == a)\r
30                                 bI.feedSignals(aI.wireValuesExcludingMe());\r
31                         else\r
32                                 aI.feedSignals(bI.wireValuesExcludingMe());\r
33                 }, 1);\r
34         }\r
35 }\r