Updated to use state change from Chip + added method to change only specified leds

This commit is contained in:
Niclas Finne 2012-05-18 15:54:52 +02:00
parent 14ca3e1e22
commit 586420e75b
1 changed files with 10 additions and 19 deletions

View File

@ -44,7 +44,6 @@ package se.sics.mspsim.chip;
import se.sics.mspsim.core.Chip;
import se.sics.mspsim.core.MSP430Core;
import se.sics.mspsim.core.StateChangeListener;
import se.sics.mspsim.util.Utils;
public class Leds extends Chip {
@ -52,7 +51,6 @@ public class Leds extends Chip {
private final int[] ledColors;
private int leds;
private StateChangeListener stateListener;
public Leds(MSP430Core cpu, int[] ledColors) {
super("Leds", cpu);
@ -68,17 +66,25 @@ public class Leds extends Chip {
public void setLeds(int leds) {
if (this.leds != leds) {
int oldLeds = this.leds;
this.leds = leds;
fireStateChanged(oldLeds, leds);
stateChanged(leds);
if (DEBUG) log(ledColors.length <= 8 ? Utils.binary8(leds) : Utils.binary16(leds));
}
}
public void setLeds(int leds, boolean on) {
if (on) {
setLeds(this.leds | leds);
} else {
setLeds(this.leds & ~leds);
}
}
public boolean isLedOn(int led) {
return (leds & (1 << led)) != 0;
}
public int getLedsColor(int led) {
return ledColors[led];
}
@ -87,21 +93,6 @@ public class Leds extends Chip {
return ledColors.length;
}
private void fireStateChanged(int oldState, int newState) {
StateChangeListener listener = this.stateListener;
if (listener != null) {
listener.stateChanged(this, oldState, newState);
}
}
public synchronized void addStateChangeListener(StateChangeListener listener) {
stateListener = StateChangeListener.Proxy.INSTANCE.add(stateListener, listener);
}
public synchronized void removeStateChangeListener(StateChangeListener listener) {
stateListener = StateChangeListener.Proxy.INSTANCE.remove(stateListener, listener);
}
public int getModeMax() {
return 0;
}