Button: Add doPressButton() and doReleaseButton() to Button class

As every Button has a node-specific implementation part, this should be
the minimal interface to the backend node emulator for pressing and
releasing a button.
This commit is contained in:
Enrico Joerns 2014-10-31 01:04:07 +01:00
parent 378ca2629d
commit be88a4fc52
5 changed files with 42 additions and 8 deletions

View file

@ -55,17 +55,27 @@ public class ESBButton extends Button {
} }
public void releaseButton() { public void releaseButton() {
mote.esbNode.setButton(false); doReleaseButton();
setChanged(); setChanged();
notifyObservers(); notifyObservers();
} }
@Override
protected void doReleaseButton() {
mote.esbNode.setButton(false);
}
public void pressButton() { public void pressButton() {
mote.esbNode.setButton(true); doPressButton();
setChanged(); setChanged();
notifyObservers(); notifyObservers();
} }
@Override
protected void doPressButton() {
mote.esbNode.setButton(true);
}
public boolean isPressed() { public boolean isPressed() {
return false; return false;
} }

View file

@ -62,20 +62,30 @@ public class MspButton extends Button {
public void pressButton() { public void pressButton() {
sim.invokeSimulationThread(new Runnable() { sim.invokeSimulationThread(new Runnable() {
public void run() { public void run() {
button.setPressed(true); doPressButton();
} }
}); });
} }
@Override
protected void doPressButton() {
button.setPressed(true);
}
@Override @Override
public void releaseButton() { public void releaseButton() {
sim.invokeSimulationThread(new Runnable() { sim.invokeSimulationThread(new Runnable() {
public void run() { public void run() {
button.setPressed(false); doReleaseButton();
} }
}); });
} }
@Override
protected void doReleaseButton() {
button.setPressed(false);
}
@Override @Override
public boolean isPressed() { public boolean isPressed() {
return button.isPressed(); return button.isPressed();

View file

@ -81,7 +81,8 @@ public class SkyButton extends Button {
}); });
} }
public void doPressButton() { @Override
protected void doPressButton() {
skyMote.skyNode.setButton(true); skyMote.skyNode.setButton(true);
} }
@ -93,7 +94,8 @@ public class SkyButton extends Button {
}); });
} }
public void doReleaseButton() { @Override
protected void doReleaseButton() {
skyMote.skyNode.setButton(false); skyMote.skyNode.setButton(false);
} }

View file

@ -128,7 +128,8 @@ public class ContikiButton extends Button implements ContikiMoteInterface {
}); });
} }
private void doReleaseButton() { @Override
protected void doReleaseButton() {
moteMem.setByteValueOf("simButtonIsDown", (byte) 0); moteMem.setByteValueOf("simButtonIsDown", (byte) 0);
if (moteMem.getByteValueOf("simButtonIsActive") == 1) { if (moteMem.getByteValueOf("simButtonIsActive") == 1) {
@ -142,7 +143,8 @@ public class ContikiButton extends Button implements ContikiMoteInterface {
} }
} }
private void doPressButton() { @Override
protected void doPressButton() {
moteMem.setByteValueOf("simButtonIsDown", (byte) 1); moteMem.setByteValueOf("simButtonIsDown", (byte) 1);
if (moteMem.getByteValueOf("simButtonIsActive") == 1) { if (moteMem.getByteValueOf("simButtonIsActive") == 1) {

View file

@ -59,11 +59,21 @@ public abstract class Button extends MoteInterface {
*/ */
public abstract void releaseButton(); public abstract void releaseButton();
/**
* Node-type dependent implementation of pressing a button.
*/
protected abstract void doPressButton();
/** /**
* Presses button (if not already pressed). * Presses button (if not already pressed).
*/ */
public abstract void pressButton(); public abstract void pressButton();
/**
* Node-type dependent implementation of releasing a button.
*/
protected abstract void doReleaseButton();
/** /**
* @return True if button is pressed * @return True if button is pressed
*/ */