bugfix: mspsim cycle counter was cast to int, limiting maximum simulation time
This commit is contained in:
parent
cdd2d9daa5
commit
aae4b54c68
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue