minor changes: removing some unused code, restructuring, added getID() methods
This commit is contained in:
parent
969154c6f0
commit
eb4698612d
|
@ -26,7 +26,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: ESBMote.java,v 1.8 2009/04/20 16:12:01 fros4943 Exp $
|
||||
* $Id: ESBMote.java,v 1.9 2009/09/17 10:50:11 fros4943 Exp $
|
||||
*/
|
||||
|
||||
package se.sics.cooja.mspmote;
|
||||
|
@ -66,14 +66,6 @@ public class ESBMote extends MspMote {
|
|||
return true;
|
||||
}
|
||||
|
||||
protected MoteInterfaceHandler createMoteInterfaceHandler() {
|
||||
/* Uses current mote type configuration */
|
||||
MoteInterfaceHandler moteInterfaceHandler =
|
||||
super.createMoteInterfaceHandler();
|
||||
|
||||
return moteInterfaceHandler;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
MoteID moteID = getInterfaces() != null ? getInterfaces().getMoteID() : null;
|
||||
if (moteID != null) {
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: MspMote.java,v 1.31 2009/06/15 09:44:42 fros4943 Exp $
|
||||
* $Id: MspMote.java,v 1.32 2009/09/17 10:50:11 fros4943 Exp $
|
||||
*/
|
||||
|
||||
package se.sics.cooja.mspmote;
|
||||
|
@ -39,18 +39,19 @@ import java.util.ArrayList;
|
|||
import java.util.Collection;
|
||||
import java.util.Hashtable;
|
||||
import java.util.Observable;
|
||||
import java.util.Observer;
|
||||
import java.util.Vector;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.jdom.Element;
|
||||
|
||||
import se.sics.cooja.GUI;
|
||||
import se.sics.cooja.Mote;
|
||||
import se.sics.cooja.MoteInterface;
|
||||
import se.sics.cooja.MoteInterfaceHandler;
|
||||
import se.sics.cooja.MoteMemory;
|
||||
import se.sics.cooja.MoteType;
|
||||
import se.sics.cooja.Watchpoint;
|
||||
import se.sics.cooja.Simulation;
|
||||
import se.sics.cooja.Watchpoint;
|
||||
import se.sics.cooja.WatchpointMote;
|
||||
import se.sics.cooja.interfaces.IPAddress;
|
||||
import se.sics.cooja.mspmote.interfaces.TR1001Radio;
|
||||
|
@ -89,8 +90,6 @@ public abstract class MspMote implements Mote, WatchpointMote {
|
|||
private MoteInterfaceHandler myMoteInterfaceHandler = null;
|
||||
private ELF myELFModule = null;
|
||||
|
||||
protected TR1001Radio myRadio = null; /* TODO Only used by ESB (TR1001) */
|
||||
|
||||
/* Stack monitoring variables */
|
||||
private boolean stopNextInstruction = false;
|
||||
private boolean monitorStackUsage = false;
|
||||
|
@ -99,14 +98,6 @@ public abstract class MspMote implements Mote, WatchpointMote {
|
|||
private StackOverflowObservable stackOverflowObservable = new StackOverflowObservable();
|
||||
|
||||
private MspBreakpointContainer breakpointsContainer;
|
||||
|
||||
/**
|
||||
* Abort current tick immediately.
|
||||
* May for example be called by a breakpoint handler.
|
||||
*/
|
||||
public void stopNextInstruction() {
|
||||
stopNextInstruction = true;
|
||||
}
|
||||
|
||||
public MspMote() {
|
||||
myMoteType = null;
|
||||
|
@ -120,7 +111,7 @@ public abstract class MspMote implements Mote, WatchpointMote {
|
|||
myMoteType = moteType;
|
||||
mySimulation = simulation;
|
||||
}
|
||||
|
||||
|
||||
protected void initMote() {
|
||||
if (myMoteType != null) {
|
||||
initEmulator(myMoteType.getContikiFirmwareFile());
|
||||
|
@ -131,6 +122,14 @@ public abstract class MspMote implements Mote, WatchpointMote {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Abort current tick immediately.
|
||||
* May for example be called by a breakpoint handler.
|
||||
*/
|
||||
public void stopNextInstruction() {
|
||||
stopNextInstruction = true;
|
||||
}
|
||||
|
||||
protected MoteInterfaceHandler createMoteInterfaceHandler() {
|
||||
return new MoteInterfaceHandler(this, getType().getMoteInterfaceClasses());
|
||||
}
|
||||
|
@ -267,14 +266,6 @@ public abstract class MspMote implements Mote, WatchpointMote {
|
|||
myCpu.reset();
|
||||
}
|
||||
|
||||
public void setState(State newState) {
|
||||
logger.warn("Msp motes can't change state");
|
||||
}
|
||||
|
||||
public State getState() {
|
||||
return Mote.State.ACTIVE;
|
||||
}
|
||||
|
||||
/* called when moteID is updated */
|
||||
public void idUpdated(int newID) {
|
||||
}
|
||||
|
@ -287,12 +278,6 @@ public abstract class MspMote implements Mote, WatchpointMote {
|
|||
myMoteType = (MspMoteType) type;
|
||||
}
|
||||
|
||||
public void addStateObserver(Observer newObserver) {
|
||||
}
|
||||
|
||||
public void deleteStateObserver(Observer newObserver) {
|
||||
}
|
||||
|
||||
public MoteInterfaceHandler getInterfaces() {
|
||||
return myMoteInterfaceHandler;
|
||||
}
|
||||
|
@ -315,6 +300,7 @@ public abstract class MspMote implements Mote, WatchpointMote {
|
|||
public boolean tick(long simTime) {
|
||||
if (stopNextInstruction) {
|
||||
stopNextInstruction = false;
|
||||
sendCLICommandAndPrint("trace 1000");
|
||||
throw new RuntimeException("MSPSim requested simulation stop");
|
||||
}
|
||||
|
||||
|
@ -348,18 +334,7 @@ public abstract class MspMote implements Mote, WatchpointMote {
|
|||
} catch (EmulationException e) {
|
||||
if (e.getMessage().startsWith("Bad operation")) {
|
||||
/* Experimental: print program counter history */
|
||||
LineListener oldListener = commandListener;
|
||||
LineListener tmpListener = new LineListener() {
|
||||
public void lineRead(String line) {
|
||||
logger.fatal(line);
|
||||
}
|
||||
};
|
||||
setCLIListener(tmpListener);
|
||||
logger.fatal("Bad operation detected. Program counter history:");
|
||||
for (int element : pcHistory) {
|
||||
sendCLICommand("line " + element);
|
||||
}
|
||||
setCLIListener(oldListener);
|
||||
sendCLICommandAndPrint("trace 1000");
|
||||
}
|
||||
|
||||
throw (RuntimeException)
|
||||
|
@ -383,6 +358,26 @@ public abstract class MspMote implements Mote, WatchpointMote {
|
|||
return true;
|
||||
}
|
||||
|
||||
private void sendCLICommandAndPrint(String comamnd) {
|
||||
/* Backup listener */
|
||||
LineListener oldListener = commandListener;
|
||||
|
||||
|
||||
setCLIListener(new LineListener() {
|
||||
public void lineRead(String line) {
|
||||
logger.fatal(line);
|
||||
}
|
||||
});
|
||||
sendCLICommand(comamnd);
|
||||
|
||||
/* Restore listener */
|
||||
setCLIListener(oldListener);
|
||||
}
|
||||
|
||||
public int getID() {
|
||||
return getInterfaces().getMoteID().getMoteID();
|
||||
}
|
||||
|
||||
public boolean setConfigXML(Simulation simulation, Collection<Element> configXML, boolean visAvailable) {
|
||||
for (Element element: configXML) {
|
||||
String name = element.getName();
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: MspMoteType.java,v 1.30 2009/04/20 16:48:53 fros4943 Exp $
|
||||
* $Id: MspMoteType.java,v 1.31 2009/09/17 10:50:11 fros4943 Exp $
|
||||
*/
|
||||
|
||||
package se.sics.cooja.mspmote;
|
||||
|
@ -123,6 +123,7 @@ public abstract class MspMoteType implements MoteType {
|
|||
protected abstract MspMote createMote(Simulation simulation);
|
||||
|
||||
public JPanel getTypeVisualizer() {
|
||||
/* TODO Move to emulated layer */
|
||||
JPanel panel = new JPanel();
|
||||
JLabel label = new JLabel();
|
||||
JPanel smallPane;
|
||||
|
@ -255,11 +256,10 @@ public abstract class MspMoteType implements MoteType {
|
|||
} else if (name.equals("description")) {
|
||||
description = element.getText();
|
||||
} else if (name.equals("source")) {
|
||||
File file = new File(element.getText());
|
||||
if (!file.exists()) {
|
||||
file = simulation.getGUI().restorePortablePath(file);
|
||||
fileSource = new File(element.getText());
|
||||
if (!fileSource.exists()) {
|
||||
fileSource = simulation.getGUI().restorePortablePath(fileSource);
|
||||
}
|
||||
fileSource = file;
|
||||
} else if (name.equals("command")) {
|
||||
/* Backwards compatibility: command is now commands */
|
||||
logger.warn("Old simulation config detected: old version only supports a single compile command");
|
||||
|
@ -267,11 +267,10 @@ public abstract class MspMoteType implements MoteType {
|
|||
} else if (name.equals("commands")) {
|
||||
compileCommands = element.getText();
|
||||
} else if (name.equals("firmware")) {
|
||||
File file = new File(element.getText());
|
||||
if (!file.exists()) {
|
||||
file = simulation.getGUI().restorePortablePath(file);
|
||||
fileFirmware = new File(element.getText());
|
||||
if (!fileFirmware.exists()) {
|
||||
fileFirmware = simulation.getGUI().restorePortablePath(fileSource);
|
||||
}
|
||||
fileFirmware = file;
|
||||
} else if (name.equals("elf")) {
|
||||
/* Backwards compatibility: elf is now firmware */
|
||||
logger.warn("Old simulation config detected: firmware specified as elf");
|
||||
|
@ -300,8 +299,7 @@ public abstract class MspMoteType implements MoteType {
|
|||
}
|
||||
}
|
||||
|
||||
Class<? extends MoteInterface>[] intfClasses = new Class[intfClassList.size()];
|
||||
intfClasses = intfClassList.toArray(intfClasses);
|
||||
Class<? extends MoteInterface>[] intfClasses = intfClassList.toArray(new Class[0]);
|
||||
|
||||
if (intfClasses.length == 0) {
|
||||
/* Backwards compatibility: No interfaces specifed */
|
||||
|
|
|
@ -26,12 +26,14 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: SkyCompileDialog.java,v 1.4 2009/08/27 12:25:12 nvt-se Exp $
|
||||
* $Id: SkyCompileDialog.java,v 1.5 2009/09/17 10:50:11 fros4943 Exp $
|
||||
*/
|
||||
|
||||
package se.sics.cooja.mspmote;
|
||||
|
||||
import java.awt.Container;
|
||||
import java.io.File;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import se.sics.cooja.GUI;
|
||||
|
@ -77,6 +79,9 @@ public class SkyCompileDialog extends AbstractCompileDialog {
|
|||
}
|
||||
|
||||
public boolean canLoadFirmware(File file) {
|
||||
if (file.getName().endsWith(".sky")) {
|
||||
return true;
|
||||
}
|
||||
if (ELF.isELF(file)) {
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -26,16 +26,17 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: SkyMote.java,v 1.14 2009/04/20 16:12:01 fros4943 Exp $
|
||||
* $Id: SkyMote.java,v 1.15 2009/09/17 10:50:11 fros4943 Exp $
|
||||
*/
|
||||
|
||||
package se.sics.cooja.mspmote;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import se.sics.cooja.MoteInterfaceHandler;
|
||||
|
||||
import se.sics.cooja.Simulation;
|
||||
import se.sics.cooja.interfaces.*;
|
||||
import se.sics.cooja.interfaces.MoteID;
|
||||
import se.sics.mspsim.platform.sky.SkyNode;
|
||||
|
||||
/**
|
||||
|
@ -58,22 +59,13 @@ public class SkyMote extends MspMote {
|
|||
try {
|
||||
skyNode = new SkyNode();
|
||||
prepareMote(fileELF, skyNode);
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.fatal("Error when creating Sky mote:", e);
|
||||
logger.fatal("Error when creating Sky mote: ", e);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
protected MoteInterfaceHandler createMoteInterfaceHandler() {
|
||||
/* Uses current mote type configuration */
|
||||
MoteInterfaceHandler moteInterfaceHandler =
|
||||
super.createMoteInterfaceHandler();
|
||||
|
||||
return moteInterfaceHandler;
|
||||
}
|
||||
|
||||
public void idUpdated(int newID) {
|
||||
skyNode.setNodeID(newID);
|
||||
}
|
||||
|
|
|
@ -26,18 +26,30 @@
|
|||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* $Id: SkyMoteType.java,v 1.10 2009/08/11 17:09:34 fros4943 Exp $
|
||||
* $Id: SkyMoteType.java,v 1.11 2009/09/17 10:50:11 fros4943 Exp $
|
||||
*/
|
||||
|
||||
package se.sics.cooja.mspmote;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.Container;
|
||||
import java.awt.Image;
|
||||
import java.awt.MediaTracker;
|
||||
import java.awt.Toolkit;
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
import javax.swing.*;
|
||||
|
||||
import javax.swing.Icon;
|
||||
import javax.swing.ImageIcon;
|
||||
import javax.swing.JOptionPane;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import se.sics.cooja.*;
|
||||
|
||||
import se.sics.cooja.AbstractionLevelDescription;
|
||||
import se.sics.cooja.ClassDescription;
|
||||
import se.sics.cooja.GUI;
|
||||
import se.sics.cooja.MoteInterface;
|
||||
import se.sics.cooja.MoteType;
|
||||
import se.sics.cooja.Simulation;
|
||||
import se.sics.cooja.dialogs.CompileContiki;
|
||||
import se.sics.cooja.dialogs.MessageList;
|
||||
import se.sics.cooja.dialogs.MessageList.MessageContainer;
|
||||
|
@ -59,24 +71,6 @@ import se.sics.cooja.mspmote.interfaces.SkySerial;
|
|||
public class SkyMoteType extends MspMoteType {
|
||||
private static Logger logger = Logger.getLogger(SkyMoteType.class);
|
||||
|
||||
public Icon getMoteTypeIcon() {
|
||||
Toolkit toolkit = Toolkit.getDefaultToolkit();
|
||||
URL imageURL = this.getClass().getClassLoader().getResource("images/sky.jpg");
|
||||
Image image = toolkit.getImage(imageURL);
|
||||
MediaTracker tracker = new MediaTracker(GUI.getTopParentContainer());
|
||||
tracker.addImage(image, 1);
|
||||
try {
|
||||
tracker.waitForAll();
|
||||
} catch (InterruptedException ex) {
|
||||
}
|
||||
if (image.getHeight(GUI.getTopParentContainer()) > 0 && image.getWidth(GUI.getTopParentContainer()) > 0) {
|
||||
image = image.getScaledInstance((200*image.getWidth(GUI.getTopParentContainer())/image.getHeight(GUI.getTopParentContainer())), 200, Image.SCALE_DEFAULT);
|
||||
return new ImageIcon(image);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
protected MspMote createMote(Simulation simulation) {
|
||||
return new SkyMote(this, simulation);
|
||||
}
|
||||
|
@ -189,6 +183,24 @@ public class SkyMoteType extends MspMoteType {
|
|||
return true;
|
||||
}
|
||||
|
||||
public Icon getMoteTypeIcon() {
|
||||
Toolkit toolkit = Toolkit.getDefaultToolkit();
|
||||
URL imageURL = this.getClass().getClassLoader().getResource("images/sky.jpg");
|
||||
Image image = toolkit.getImage(imageURL);
|
||||
MediaTracker tracker = new MediaTracker(GUI.getTopParentContainer());
|
||||
tracker.addImage(image, 1);
|
||||
try {
|
||||
tracker.waitForAll();
|
||||
} catch (InterruptedException ex) {
|
||||
}
|
||||
if (image.getHeight(GUI.getTopParentContainer()) > 0 && image.getWidth(GUI.getTopParentContainer()) > 0) {
|
||||
image = image.getScaledInstance((200*image.getWidth(GUI.getTopParentContainer())/image.getHeight(GUI.getTopParentContainer())), 200, Image.SCALE_DEFAULT);
|
||||
return new ImageIcon(image);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public Class<? extends MoteInterface>[] getAllMoteInterfaceClasses() {
|
||||
return new Class[] {
|
||||
Position.class,
|
||||
|
|
Loading…
Reference in a new issue