From be88a4fc524bfd9bdd38c733dd267d121a4bc915 Mon Sep 17 00:00:00 2001 From: Enrico Joerns Date: Fri, 31 Oct 2014 01:04:07 +0100 Subject: [PATCH] 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. --- .../cooja/mspmote/interfaces/ESBButton.java | 14 ++++++++++++-- .../cooja/mspmote/interfaces/MspButton.java | 14 ++++++++++++-- .../cooja/mspmote/interfaces/SkyButton.java | 6 ++++-- .../contikimote/interfaces/ContikiButton.java | 6 ++++-- .../org/contikios/cooja/interfaces/Button.java | 10 ++++++++++ 5 files changed, 42 insertions(+), 8 deletions(-) diff --git a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/interfaces/ESBButton.java b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/interfaces/ESBButton.java index c2ac16c39..6e03921f3 100644 --- a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/interfaces/ESBButton.java +++ b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/interfaces/ESBButton.java @@ -55,17 +55,27 @@ public class ESBButton extends Button { } public void releaseButton() { - mote.esbNode.setButton(false); + doReleaseButton(); setChanged(); notifyObservers(); } + @Override + protected void doReleaseButton() { + mote.esbNode.setButton(false); + } + public void pressButton() { - mote.esbNode.setButton(true); + doPressButton(); setChanged(); notifyObservers(); } + @Override + protected void doPressButton() { + mote.esbNode.setButton(true); + } + public boolean isPressed() { return false; } diff --git a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/interfaces/MspButton.java b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/interfaces/MspButton.java index a261b2863..9762430fc 100644 --- a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/interfaces/MspButton.java +++ b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/interfaces/MspButton.java @@ -62,20 +62,30 @@ public class MspButton extends Button { public void pressButton() { sim.invokeSimulationThread(new Runnable() { public void run() { - button.setPressed(true); + doPressButton(); } }); } + @Override + protected void doPressButton() { + button.setPressed(true); + } + @Override public void releaseButton() { sim.invokeSimulationThread(new Runnable() { public void run() { - button.setPressed(false); + doReleaseButton(); } }); } + @Override + protected void doReleaseButton() { + button.setPressed(false); + } + @Override public boolean isPressed() { return button.isPressed(); diff --git a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/interfaces/SkyButton.java b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/interfaces/SkyButton.java index b4f4c0fe7..c785c5695 100644 --- a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/interfaces/SkyButton.java +++ b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/interfaces/SkyButton.java @@ -81,7 +81,8 @@ public class SkyButton extends Button { }); } - public void doPressButton() { + @Override + protected void doPressButton() { skyMote.skyNode.setButton(true); } @@ -93,7 +94,8 @@ public class SkyButton extends Button { }); } - public void doReleaseButton() { + @Override + protected void doReleaseButton() { skyMote.skyNode.setButton(false); } diff --git a/tools/cooja/java/org/contikios/cooja/contikimote/interfaces/ContikiButton.java b/tools/cooja/java/org/contikios/cooja/contikimote/interfaces/ContikiButton.java index 0cade0caf..8190968bd 100644 --- a/tools/cooja/java/org/contikios/cooja/contikimote/interfaces/ContikiButton.java +++ b/tools/cooja/java/org/contikios/cooja/contikimote/interfaces/ContikiButton.java @@ -128,7 +128,8 @@ public class ContikiButton extends Button implements ContikiMoteInterface { }); } - private void doReleaseButton() { + @Override + protected void doReleaseButton() { moteMem.setByteValueOf("simButtonIsDown", (byte) 0); 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); if (moteMem.getByteValueOf("simButtonIsActive") == 1) { diff --git a/tools/cooja/java/org/contikios/cooja/interfaces/Button.java b/tools/cooja/java/org/contikios/cooja/interfaces/Button.java index b5f0bf371..6c402c0e7 100644 --- a/tools/cooja/java/org/contikios/cooja/interfaces/Button.java +++ b/tools/cooja/java/org/contikios/cooja/interfaces/Button.java @@ -59,11 +59,21 @@ public abstract class Button extends MoteInterface { */ public abstract void releaseButton(); + /** + * Node-type dependent implementation of pressing a button. + */ + protected abstract void doPressButton(); + /** * Presses button (if not already pressed). */ public abstract void pressButton(); + /** + * Node-type dependent implementation of releasing a button. + */ + protected abstract void doReleaseButton(); + /** * @return True if button is pressed */