\r
import java.util.List;\r
\r
-import era.mi.logic.Bit;\r
-import era.mi.logic.wires.WireArray;\r
-import era.mi.logic.wires.WireArray.WireArrayInput;\r
+import era.mi.logic.timeline.Timeline;\r
+import era.mi.logic.types.Bit;\r
+import era.mi.logic.wires.Wire.ReadEnd;\r
+import era.mi.logic.wires.Wire.ReadWriteEnd;\r
\r
/**\r
* This class models a simple on/off (ONE/ZERO) switch for user interaction.\r
* @author Christian Femers\r
*\r
*/\r
-public class ManualSwitch implements Component {\r
- private WireArray output;\r
- private WireArrayInput outputI;\r
+public class ManualSwitch extends Component\r
+{\r
+ private ReadWriteEnd output;\r
private boolean isOn;\r
\r
- public ManualSwitch(WireArray output) {\r
- if (output.length != 1)\r
+ public ManualSwitch(Timeline timeline, ReadWriteEnd output)\r
+ {\r
+ super(timeline);\r
+ if (output.length() != 1)\r
throw new IllegalArgumentException("Switch output can be only a single wire");\r
this.output = output;\r
- this.outputI = output.createInput();\r
}\r
\r
- public void switchOn() {\r
+ public void switchOn()\r
+ {\r
setState(true);\r
}\r
\r
- public void switchOff() {\r
+ public void switchOff()\r
+ {\r
setState(false);\r
}\r
\r
- public void toggle() {\r
+ public void toggle()\r
+ {\r
setState(!isOn);\r
}\r
\r
- public void setState(boolean isOn) {\r
+ public void setState(boolean isOn)\r
+ {\r
if (this.isOn == isOn)\r
return;\r
this.isOn = isOn;\r
- outputI.feedSignals(getValue());\r
+ output.feedSignals(getValue());\r
}\r
\r
- public boolean isOn() {\r
+ public boolean isOn()\r
+ {\r
return isOn;\r
}\r
\r
- public Bit getValue() {\r
+ public Bit getValue()\r
+ {\r
return isOn ? Bit.ONE : Bit.ZERO;\r
}\r
\r
@Override\r
- public List<WireArray> getAllInputs() {\r
+ public List<ReadEnd> getAllInputs()\r
+ {\r
return List.of();\r
}\r
\r
@Override\r
- public List<WireArray> getAllOutputs() {\r
+ public List<ReadWriteEnd> getAllOutputs()\r
+ {\r
return List.of(output);\r
}\r
\r