{
private Collection<LogicObserver> observers;
private ReadWriteEnd output;
+ private BitVector inputValues;
public ManualSwitch(Timeline timeline, ReadWriteEnd output)
{
super(timeline);
observers = new ArrayList<>();
this.output = output;
+ this.inputValues = output.getInputValues();
}
public void switchFullOn()
{
- setState(BitVector.of(Bit.ONE, output.length()));
+ setState(BitVector.of(Bit.ONE, output.width()));
}
public void switchFullOff()
{
- setState(BitVector.of(Bit.ZERO, output.length()));
+ setState(BitVector.of(Bit.ZERO, output.width()));
}
public void toggle()
public void setState(BitVector bits)
{
- if (bits.length() != output.length())
+ if (bits.length() != output.width())
throw new IllegalArgumentException("Incorrect bit vector length");
- if (bits.equals(output.getInputValues()))
+ if (bits.equals(inputValues))
return;
+ inputValues = bits;
output.feedSignals(bits);
notifyObservers();
}
public boolean isFullOn()
{
- return BitVector.of(Bit.ONE, output.length()).equals(output.getInputValues());
+ return BitVector.of(Bit.ONE, output.width()).equals(output.getInputValues());
}
public BitVector getValues()
{
- return output.getInputValues();
+ return inputValues;
}
@Override