1 package era.mi.logic.components;
\r
3 import java.util.List;
\r
5 import era.mi.logic.timeline.Timeline;
\r
6 import era.mi.logic.types.Bit;
\r
7 import era.mi.logic.wires.Wire.ReadEnd;
\r
8 import era.mi.logic.wires.Wire.ReadWriteEnd;
\r
11 * This class models a simple on/off (ONE/ZERO) switch for user interaction.
\r
13 * @author Christian Femers
\r
16 public class ManualSwitch extends Component
\r
18 private ReadWriteEnd output;
\r
19 private boolean isOn;
\r
21 public ManualSwitch(Timeline timeline, ReadWriteEnd output)
\r
24 if (output.length() != 1)
\r
25 throw new IllegalArgumentException("Switch output can be only a single wire");
\r
26 this.output = output;
\r
29 public void switchOn()
\r
34 public void switchOff()
\r
39 public void toggle()
\r
44 public void setState(boolean isOn)
\r
46 if (this.isOn == isOn)
\r
49 output.feedSignals(getValue());
\r
52 public boolean isOn()
\r
57 public Bit getValue()
\r
59 return isOn ? Bit.ONE : Bit.ZERO;
\r
63 public List<ReadEnd> getAllInputs()
\r
69 public List<ReadWriteEnd> getAllOutputs()
\r
71 return List.of(output);
\r