bugfix: mspsim cycle counter was cast to int, limiting maximum simulation time

This commit is contained in:
fros4943 2008-12-04 13:14:34 +00:00
parent cdd2d9daa5
commit aae4b54c68

View file

@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $Id: MspMote.java,v 1.16 2008/12/03 15:36:49 fros4943 Exp $ * $Id: MspMote.java,v 1.17 2008/12/04 13:14:34 fros4943 Exp $
*/ */
package se.sics.cooja.mspmote; package se.sics.cooja.mspmote;
@ -65,11 +65,11 @@ public abstract class MspMote implements Mote {
private static Logger logger = Logger.getLogger(MspMote.class); private static Logger logger = Logger.getLogger(MspMote.class);
/* 2.4576 MHz according to Contiki's speed sync loop*/ /* 2.4576 MHz according to Contiki's speed sync loop*/
public static int NR_CYCLES_PER_MSEC = 2458; public static long NR_CYCLES_PER_MSEC = 2458;
/* Cycle counter */ /* Cycle counter */
public long cycleCounter = 0; public long cycleCounter = 0;
public int cycleDrift = 0; public long cycleDrift = 0;
private Simulation mySimulation = null; private Simulation mySimulation = null;
private CommandHandler commandHandler; private CommandHandler commandHandler;
@ -294,11 +294,12 @@ public abstract class MspMote implements Mote {
protected abstract boolean initEmulator(File ELFFile); protected abstract boolean initEmulator(File ELFFile);
/* return false when done - e.g. true means more work to do before finished with this tick */ /* return false when done - e.g. true means more work to do before finished with this tick */
private boolean firstTick = true; private boolean firstTick = true;
public boolean tick(int simTime) { public boolean tick(int simTime) {
if (stopNextInstruction) { if (stopNextInstruction) {
stopNextInstruction = false; stopNextInstruction = false;
throw new RuntimeException("Request simulation stop"); throw new RuntimeException("MSPSim requested simulation stop");
} }
/* Nodes may be added in an ongoing simulation: /* Nodes may be added in an ongoing simulation:
@ -309,6 +310,7 @@ public abstract class MspMote implements Mote {
} }
long maxSimTimeCycles = NR_CYCLES_PER_MSEC*(simTime+1) + cycleDrift; long maxSimTimeCycles = NR_CYCLES_PER_MSEC*(simTime+1) + cycleDrift;
if (maxSimTimeCycles <= cycleCounter) { if (maxSimTimeCycles <= cycleCounter) {
return false; return false;
} }