mirror of https://github.com/contiki-ng/mspsim
made stackui a service
git-svn-id: https://mspsim.svn.sourceforge.net/svnroot/mspsim/mspsim@606 23d1a52b-0c3c-0410-b72d-8f29ab48fe35
This commit is contained in:
parent
01eb77a5fa
commit
0fac130c98
|
|
@ -11,4 +11,5 @@
|
|||
#start the nodegui serice
|
||||
service controlgui start
|
||||
service nodegui start
|
||||
service stackui start
|
||||
start
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ import se.sics.mspsim.core.MSP430Constants;
|
|||
import se.sics.mspsim.extutil.highlight.HighlightSourceViewer;
|
||||
import se.sics.mspsim.ui.ControlUI;
|
||||
import se.sics.mspsim.ui.JFrameWindowManager;
|
||||
import se.sics.mspsim.ui.StackUI;
|
||||
import se.sics.mspsim.util.ArgumentManager;
|
||||
import se.sics.mspsim.util.ComponentRegistry;
|
||||
import se.sics.mspsim.util.ConfigManager;
|
||||
|
|
@ -146,6 +147,7 @@ public abstract class GenericNode extends Chip implements Runnable {
|
|||
// Setup control and other UI components
|
||||
ControlUI control = new ControlUI();
|
||||
registry.registerComponent("controlgui", control);
|
||||
registry.registerComponent("stackui", new StackUI(cpu));
|
||||
HighlightSourceViewer sourceViewer = new HighlightSourceViewer();
|
||||
if (firmwareFile != null) {
|
||||
// Add the firmware location to the search path
|
||||
|
|
|
|||
|
|
@ -49,35 +49,29 @@ import java.awt.event.KeyEvent;
|
|||
import javax.swing.AbstractAction;
|
||||
import javax.swing.Action;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JFrame;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.KeyStroke;
|
||||
import se.sics.mspsim.core.MSP430;
|
||||
import se.sics.mspsim.core.MSP430Constants;
|
||||
import se.sics.mspsim.core.SimEvent;
|
||||
import se.sics.mspsim.core.SimEventListener;
|
||||
import se.sics.mspsim.extutil.jfreechart.DataChart;
|
||||
import se.sics.mspsim.platform.GenericNode;
|
||||
import se.sics.mspsim.util.ComponentRegistry;
|
||||
import se.sics.mspsim.util.DebugInfo;
|
||||
import se.sics.mspsim.util.ELF;
|
||||
import se.sics.mspsim.util.ServiceComponent;
|
||||
import se.sics.mspsim.util.ServiceComponent.Status;
|
||||
|
||||
public class ControlUI extends JPanel implements ActionListener, SimEventListener, ServiceComponent {
|
||||
|
||||
private static final long serialVersionUID = -2431892192775232653L;
|
||||
|
||||
private static final String TITLE = "MSPSim monitor";
|
||||
private static final boolean USE_STACKUI = false;
|
||||
|
||||
private ManagedWindow window;
|
||||
private JButton controlButton;
|
||||
private MSP430 cpu;
|
||||
private GenericNode node;
|
||||
private DebugUI dui;
|
||||
private JFrame stackWindow;
|
||||
private StackUI stackUI;
|
||||
|
||||
private ELF elfData;
|
||||
private SourceViewer sourceViewer;
|
||||
|
|
@ -99,16 +93,6 @@ private String name;
|
|||
this.node = (GenericNode) registry.getComponent("node");
|
||||
elfData = (ELF) registry.getComponent("elf");
|
||||
|
||||
DataChart test = new DataChart("Stack Monitor", "Bytes");
|
||||
test.setupStackFrame(cpu);
|
||||
if (USE_STACKUI) {
|
||||
this.stackUI = new StackUI(cpu);
|
||||
stackWindow = new JFrame("Stack");
|
||||
stackWindow.add(this.stackUI);
|
||||
WindowUtils.restoreWindowBounds("StackUI", stackWindow);
|
||||
WindowUtils.addSaveOnShutdown("StackUI", stackWindow);
|
||||
stackWindow.setVisible(true);
|
||||
}
|
||||
WindowManager wm = (WindowManager) registry.getComponent("windowManager");
|
||||
window = wm.createWindow("ControlUI");
|
||||
JPanel jp = new JPanel();
|
||||
|
|
|
|||
|
|
@ -49,9 +49,12 @@ import javax.swing.JPanel;
|
|||
|
||||
import se.sics.mspsim.core.CPUMonitor;
|
||||
import se.sics.mspsim.core.MSP430;
|
||||
import se.sics.mspsim.util.ComponentRegistry;
|
||||
import se.sics.mspsim.util.MapTable;
|
||||
import se.sics.mspsim.util.ServiceComponent;
|
||||
import se.sics.mspsim.util.ServiceComponent.Status;
|
||||
|
||||
public class StackUI extends JPanel implements CPUMonitor {
|
||||
public class StackUI extends JPanel implements CPUMonitor, ServiceComponent {
|
||||
|
||||
private static final long serialVersionUID = 8648239617509299768L;
|
||||
|
||||
|
|
@ -77,6 +80,14 @@ public class StackUI extends JPanel implements CPUMonitor {
|
|||
|
||||
private boolean update = false;
|
||||
|
||||
private Status status;
|
||||
|
||||
private ComponentRegistry registry;
|
||||
|
||||
private ManagedWindow window;
|
||||
|
||||
private String name;
|
||||
|
||||
public StackUI(MSP430 cpu) {
|
||||
this(cpu, 2500);
|
||||
}
|
||||
|
|
@ -102,28 +113,36 @@ public class StackUI extends JPanel implements CPUMonitor {
|
|||
// this.stackStartAddress - this.heapStartAddress);
|
||||
// diagram.setShowGrid(true);
|
||||
// add(diagram, BorderLayout.CENTER);
|
||||
chartPanel = new ChartPanel();
|
||||
|
||||
ConstantLineChart maxChart = new ConstantLineChart("Max", this.stackStartAddress - this.heapStartAddress);
|
||||
maxChart.setConfig("color", Color.red);
|
||||
chartPanel.addChart(maxChart);
|
||||
|
||||
minStackChart = new LineChart("Min Stack");
|
||||
minStackChart.setConfig("color", Color.green);
|
||||
chartPanel.addChart(minStackChart);
|
||||
|
||||
maxStackChart = new LineChart("Max Stack");
|
||||
maxStackChart.setConfig("color", Color.green);
|
||||
chartPanel.addChart(maxStackChart);
|
||||
chartPanel.setAxisChart(maxStackChart);
|
||||
|
||||
add(chartPanel, BorderLayout.CENTER);
|
||||
setPreferredSize(new Dimension(320, 200));
|
||||
}
|
||||
|
||||
// public void addNote(String note) {
|
||||
// notes[pos] = note;
|
||||
// }
|
||||
private void setup() {
|
||||
if (chartPanel != null) return;
|
||||
chartPanel = new ChartPanel();
|
||||
|
||||
ConstantLineChart maxChart = new ConstantLineChart("Max", this.stackStartAddress - this.heapStartAddress);
|
||||
maxChart.setConfig("color", Color.red);
|
||||
chartPanel.addChart(maxChart);
|
||||
|
||||
minStackChart = new LineChart("Min Stack");
|
||||
minStackChart.setConfig("color", Color.green);
|
||||
chartPanel.addChart(minStackChart);
|
||||
|
||||
maxStackChart = new LineChart("Max Stack");
|
||||
maxStackChart.setConfig("color", Color.green);
|
||||
chartPanel.addChart(maxStackChart);
|
||||
chartPanel.setAxisChart(maxStackChart);
|
||||
|
||||
add(chartPanel, BorderLayout.CENTER);
|
||||
setPreferredSize(new Dimension(320, 200));
|
||||
setSize(320, 200);
|
||||
setMinimumSize(new Dimension(320, 200));
|
||||
|
||||
WindowManager wm = (WindowManager) registry.getComponent("windowManager");
|
||||
if (wm != null) {
|
||||
window = wm.createWindow("stackui");
|
||||
window.add(this);
|
||||
}
|
||||
}
|
||||
|
||||
public void paint(Graphics g) {
|
||||
if (update) {
|
||||
|
|
@ -174,4 +193,28 @@ public class StackUI extends JPanel implements CPUMonitor {
|
|||
}
|
||||
}
|
||||
|
||||
public Status getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void init(String name, ComponentRegistry registry) {
|
||||
this.registry = registry;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void start() {
|
||||
setup();
|
||||
status = Status.STARTED;
|
||||
window.setVisible(true);
|
||||
}
|
||||
|
||||
public void stop() {
|
||||
status = Status.STOPPED;
|
||||
window.setVisible(false);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue