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