using new mspsim cli api
This commit is contained in:
parent
268608f7e3
commit
8229cb8982
|
@ -36,6 +36,8 @@ import java.awt.event.ActionEvent;
|
||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.awt.event.KeyAdapter;
|
import java.awt.event.KeyAdapter;
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
|
import java.io.PrintStream;
|
||||||
|
|
||||||
import javax.swing.JMenuItem;
|
import javax.swing.JMenuItem;
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
import javax.swing.JPopupMenu;
|
import javax.swing.JPopupMenu;
|
||||||
|
@ -43,6 +45,7 @@ import javax.swing.JScrollPane;
|
||||||
import javax.swing.JTextArea;
|
import javax.swing.JTextArea;
|
||||||
import javax.swing.JTextField;
|
import javax.swing.JTextField;
|
||||||
import javax.swing.SwingUtilities;
|
import javax.swing.SwingUtilities;
|
||||||
|
|
||||||
import se.sics.cooja.ClassDescription;
|
import se.sics.cooja.ClassDescription;
|
||||||
import se.sics.cooja.GUI;
|
import se.sics.cooja.GUI;
|
||||||
import se.sics.cooja.Mote;
|
import se.sics.cooja.Mote;
|
||||||
|
@ -51,7 +54,9 @@ import se.sics.cooja.PluginType;
|
||||||
import se.sics.cooja.Simulation;
|
import se.sics.cooja.Simulation;
|
||||||
import se.sics.cooja.VisPlugin;
|
import se.sics.cooja.VisPlugin;
|
||||||
import se.sics.cooja.mspmote.MspMote;
|
import se.sics.cooja.mspmote.MspMote;
|
||||||
|
import se.sics.mspsim.cli.CommandContext;
|
||||||
import se.sics.mspsim.cli.LineListener;
|
import se.sics.mspsim.cli.LineListener;
|
||||||
|
import se.sics.mspsim.cli.LineOutputStream;
|
||||||
|
|
||||||
@ClassDescription("Msp CLI")
|
@ClassDescription("Msp CLI")
|
||||||
@PluginType(PluginType.MOTE_PLUGIN)
|
@PluginType(PluginType.MOTE_PLUGIN)
|
||||||
|
@ -66,8 +71,6 @@ public class MspCLI extends VisPlugin implements MotePlugin {
|
||||||
private int historyPos = 0;
|
private int historyPos = 0;
|
||||||
private int historyCount = 0;
|
private int historyCount = 0;
|
||||||
|
|
||||||
private LineListener myListener;
|
|
||||||
|
|
||||||
public MspCLI(Mote mote, Simulation simulationToVisualize, GUI gui) {
|
public MspCLI(Mote mote, Simulation simulationToVisualize, GUI gui) {
|
||||||
super("Msp CLI (" + mote.getID() + ')', gui);
|
super("Msp CLI (" + mote.getID() + ')', gui);
|
||||||
this.mspMote = (MspMote) mote;
|
this.mspMote = (MspMote) mote;
|
||||||
|
@ -79,20 +82,27 @@ public class MspCLI extends VisPlugin implements MotePlugin {
|
||||||
logArea.setEditable(false);
|
logArea.setEditable(false);
|
||||||
panel.add(new JScrollPane(logArea), BorderLayout.CENTER);
|
panel.add(new JScrollPane(logArea), BorderLayout.CENTER);
|
||||||
|
|
||||||
|
LineListener lineListener = new LineListener() {
|
||||||
|
public void lineRead(String line) {
|
||||||
|
addCLIData(line);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
PrintStream po = new PrintStream(new LineOutputStream(lineListener));
|
||||||
|
final CommandContext commandContext = new CommandContext(mspMote.getCLICommandHandler(), null, "", new String[0], 1, null);
|
||||||
|
commandContext.out = po;
|
||||||
|
commandContext.err = po;
|
||||||
|
|
||||||
JPopupMenu popupMenu = new JPopupMenu();
|
JPopupMenu popupMenu = new JPopupMenu();
|
||||||
JMenuItem clearItem = new JMenuItem("Clear");
|
JMenuItem clearItem = new JMenuItem("Clear");
|
||||||
clearItem.addActionListener(new ActionListener() {
|
clearItem.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
logArea.setText("");
|
logArea.setText("");
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
popupMenu.add(clearItem);
|
popupMenu.add(clearItem);
|
||||||
logArea.setComponentPopupMenu(popupMenu);
|
logArea.setComponentPopupMenu(popupMenu);
|
||||||
|
|
||||||
ActionListener action = new ActionListener() {
|
ActionListener action = new ActionListener() {
|
||||||
|
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
String command = trim(commandField.getText());
|
String command = trim(commandField.getText());
|
||||||
if (command != null) {
|
if (command != null) {
|
||||||
|
@ -107,15 +117,16 @@ public class MspCLI extends VisPlugin implements MotePlugin {
|
||||||
}
|
}
|
||||||
historyPos = historyCount;
|
historyPos = historyCount;
|
||||||
addCLIData("> " + command);
|
addCLIData("> " + command);
|
||||||
mspMote.sendCLICommand(command);
|
|
||||||
|
mspMote.executeCLICommand(command, commandContext);
|
||||||
commandField.setText("");
|
commandField.setText("");
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
System.err.println("could not send '" + command + "':");
|
System.err.println("could not send '" + command + "':");
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
JOptionPane.showMessageDialog(panel,
|
JOptionPane.showMessageDialog(panel,
|
||||||
"could not send '" + command + "':\n"
|
"could not send '" + command + "':\n"
|
||||||
+ ex, "ERROR",
|
+ ex, "ERROR",
|
||||||
JOptionPane.ERROR_MESSAGE);
|
JOptionPane.ERROR_MESSAGE);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
commandField.getToolkit().beep();
|
commandField.getToolkit().beep();
|
||||||
|
@ -166,19 +177,9 @@ public class MspCLI extends VisPlugin implements MotePlugin {
|
||||||
|
|
||||||
});
|
});
|
||||||
panel.add(commandField, BorderLayout.SOUTH);
|
panel.add(commandField, BorderLayout.SOUTH);
|
||||||
|
|
||||||
myListener = new LineListener() {
|
|
||||||
public void lineRead(String line) {
|
|
||||||
addCLIData(line);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
mspMote.addCLIListener(myListener);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void closePlugin() {
|
public void closePlugin() {
|
||||||
if (myListener != null) {
|
|
||||||
mspMote.addCLIListener(null);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addCLIData(final String text) {
|
public void addCLIData(final String text) {
|
||||||
|
@ -199,7 +200,7 @@ public class MspCLI extends VisPlugin implements MotePlugin {
|
||||||
private String trim(String text) {
|
private String trim(String text) {
|
||||||
return (text != null) && ((text = text.trim()).length() > 0) ? text : null;
|
return (text != null) && ((text = text.trim()).length() > 0) ? text : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Mote getMote() {
|
public Mote getMote() {
|
||||||
return mspMote;
|
return mspMote;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue