From ff4aee68bdc5d9ee0e258b14ec701304b2f12837 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20L=C3=B6scher?= Date: Thu, 26 Feb 2015 13:17:33 +0100 Subject: [PATCH] Support in the mote clock interface for time deviation --- .../cooja/avrmote/interfaces/MicaClock.java | 10 ++++++++++ .../cooja/mspmote/interfaces/MspClock.java | 11 +++++++++++ .../contikimote/interfaces/ContikiClock.java | 12 +++++++++++- .../org/contikios/cooja/interfaces/Clock.java | 18 ++++++++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) diff --git a/tools/cooja/apps/avrora/src/org/contikios/cooja/avrmote/interfaces/MicaClock.java b/tools/cooja/apps/avrora/src/org/contikios/cooja/avrmote/interfaces/MicaClock.java index 468e07a73..44b81ccb2 100644 --- a/tools/cooja/apps/avrora/src/org/contikios/cooja/avrmote/interfaces/MicaClock.java +++ b/tools/cooja/apps/avrora/src/org/contikios/cooja/avrmote/interfaces/MicaClock.java @@ -54,10 +54,12 @@ public class MicaClock extends Clock { private MicaZMote myMote; private long timeDrift; /* Microseconds */ + private double deviation; public MicaClock(Mote mote) { simulation = mote.getSimulation(); myMote = (MicaZMote) mote; + deviation = 1.0; } public void setTime(long newTime) { @@ -90,4 +92,12 @@ public class MicaClock extends Clock { public void setConfigXML(Collection configXML, boolean visAvailable) { } + public double getDeviation() { + return deviation; + } + + public void setDeviation(double deviation) { + assert deviation > 0.0; + this.deviation = deviation; + } } diff --git a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/interfaces/MspClock.java b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/interfaces/MspClock.java index c66352e98..7a07859fe 100644 --- a/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/interfaces/MspClock.java +++ b/tools/cooja/apps/mspsim/src/org/contikios/cooja/mspmote/interfaces/MspClock.java @@ -52,9 +52,11 @@ public class MspClock extends Clock { private Simulation simulation; private long timeDrift; /* Microseconds */ + private double deviation; public MspClock(Mote mote) { simulation = mote.getSimulation(); + deviation = 1.0; } public void setTime(long newTime) { @@ -73,6 +75,15 @@ public class MspClock extends Clock { return timeDrift; } + public void setDeviation(double deviation) { + assert deviation>0.0; + this.deviation = deviation; + } + + public double getDeviation() { + return deviation; + } + public JPanel getInterfaceVisualizer() { /* TODO Show current CPU speed */ return null; diff --git a/tools/cooja/java/org/contikios/cooja/contikimote/interfaces/ContikiClock.java b/tools/cooja/java/org/contikios/cooja/contikimote/interfaces/ContikiClock.java index 127a7a3a7..2fda03239 100644 --- a/tools/cooja/java/org/contikios/cooja/contikimote/interfaces/ContikiClock.java +++ b/tools/cooja/java/org/contikios/cooja/contikimote/interfaces/ContikiClock.java @@ -76,6 +76,7 @@ public class ContikiClock extends Clock implements ContikiMoteInterface, PolledB private long moteTime; /* Microseconds */ private long timeDrift; /* Microseconds */ + private double deviation; /** * @param mote Mote @@ -89,6 +90,7 @@ public class ContikiClock extends Clock implements ContikiMoteInterface, PolledB this.moteMem = new VarMemory(mote.getMemory()); timeDrift = 0; moteTime = 0; + deviation = 1.0; } public static String[] getCoreInterfaceDependencies() { @@ -114,6 +116,15 @@ public class ContikiClock extends Clock implements ContikiMoteInterface, PolledB public long getTime() { return moteTime; } + + public void setDeviation(double deviation) { + assert deviation>0.0; + this.deviation = deviation; + } + + public double getDeviation() { + return deviation; + } public void doActionsBeforeTick() { /* Update time */ @@ -161,5 +172,4 @@ public class ContikiClock extends Clock implements ContikiMoteInterface, PolledB public void setConfigXML(Collection configXML, boolean visAvailable) { } - } diff --git a/tools/cooja/java/org/contikios/cooja/interfaces/Clock.java b/tools/cooja/java/org/contikios/cooja/interfaces/Clock.java index faefaddfc..8aebe391a 100644 --- a/tools/cooja/java/org/contikios/cooja/interfaces/Clock.java +++ b/tools/cooja/java/org/contikios/cooja/interfaces/Clock.java @@ -39,6 +39,7 @@ import org.contikios.cooja.*; * This observable never notifies. * * @author Fredrik Osterlind + * Andreas Löscher */ @ClassDescription("Clock") public abstract class Clock extends MoteInterface { @@ -76,4 +77,21 @@ public abstract class Clock extends MoteInterface { */ public abstract long getDrift(); + + /** + * The clock deviation is a factor that represents with how much speed the + * mote progresses through the simulation in relation to the simulation speed. + * + * A value of 1.0 results in the mote beeing simulated with the same speed + * as the simulation. A value of 0.5 results in the mote beeing simulation + * at half of the simulation speed. + * + * @param deviation Deviation factor + */ + public abstract void setDeviation(double deviation); + + /** + * Get deviation factor + */ + public abstract double getDeviation(); }