diff --git a/Makefile b/Makefile index 2b2f013..0011a68 100644 --- a/Makefile +++ b/Makefile @@ -53,6 +53,8 @@ CCARGS=-deprecation -classpath . ############################################################### FIRMWAREFILE = blinker2.ihex +ESBFIRMWARE = firmware/esb/sensor-demo.firmware +SKYFIRMWARE = firmware/sky/sensor-demo.firmware CPUTEST := tests/cputest.firmware @@ -81,10 +83,10 @@ run: compile java se.sics.mspsim.util.IHexReader $(FIRMWAREFILE) $(MAPFILE) runesb: compile - java se.sics.mspsim.platform.esb.ESBNode $(FIRMWAREFILE) $(MAPFILE) + java se.sics.mspsim.platform.esb.ESBNode $(ESBFIRMWARE) $(MAPFILE) runsky: compile - java se.sics.mspsim.platform.sky.SkyNode $(FIRMWAREFILE) $(MAPFILE) + java se.sics.mspsim.platform.sky.SkyNode $(SKYFIRMWARE) $(MAPFILE) .PHONY: cputest test test: cputest diff --git a/firmware/esb/sensor-demo.firmware b/firmware/esb/sensor-demo.firmware new file mode 100755 index 0000000..fb11444 Binary files /dev/null and b/firmware/esb/sensor-demo.firmware differ diff --git a/se/sics/mspsim/core/IOPort.java b/se/sics/mspsim/core/IOPort.java index df94ead..c852d7d 100644 --- a/se/sics/mspsim/core/IOPort.java +++ b/se/sics/mspsim/core/IOPort.java @@ -136,7 +136,9 @@ public class IOPort extends IOUnit { // case IFG: if (interrupt > 0) { // IFG - writing a zero => clear the flag! - System.out.println(getName() + " Clearing IFlag: " + data); + if (DEBUG) { + System.out.println(getName() + " Clearing IFlag: " + data); + } interruptFlag &= data; memory[offset + IFG] = interruptFlag; cpu.flagInterrupt(interrupt, this, interruptFlag > 0); @@ -169,14 +171,19 @@ public class IOPort extends IOUnit { // LO/HI transition if (state == PIN_HI) { interruptFlag |= bit; - System.out.println(getName() + " Flagging interrupt (HI): " + bit); + if (DEBUG) { + System.out.println(getName() + + " Flagging interrupt (HI): " + bit); + } } } else { // HI/LO transition if (state == PIN_LOW) { interruptFlag |= bit; - System.out.println(getName() + " Flagging interrupt (LOW): " + - bit); + if (DEBUG) { + System.out.println(getName() + + " Flagging interrupt (LOW): " + bit); + } } } } diff --git a/se/sics/mspsim/platform/esb/ESBGui.java b/se/sics/mspsim/platform/esb/ESBGui.java index 8d30ad7..0ae82a1 100644 --- a/se/sics/mspsim/platform/esb/ESBGui.java +++ b/se/sics/mspsim/platform/esb/ESBGui.java @@ -47,6 +47,7 @@ import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; +import java.awt.event.MouseListener; import javax.swing.ImageIcon; import javax.swing.JComponent; import javax.swing.JFrame; @@ -57,7 +58,8 @@ import se.sics.mspsim.util.SerialMon; import se.sics.mspsim.util.WindowUtils; public class ESBGui extends JComponent implements KeyListener, - MouseMotionListener { + MouseMotionListener, + MouseListener { public static final int GREEN_X = 3; public static final int YELLOW_X = 10; @@ -79,6 +81,7 @@ public class ESBGui extends JComponent implements KeyListener, private ImageIcon esbImage; private JFrame window; private ESBNode node; + private boolean buttonDown = false; public ESBGui(ESBNode node) { this.node = node; @@ -103,6 +106,7 @@ public class ESBGui extends JComponent implements KeyListener, window.addKeyListener(this); window.addMouseMotionListener(this); + window.addMouseListener(this); // Add some windows for listening to serial output MSP430 cpu = node.getCPU(); @@ -130,8 +134,25 @@ public class ESBGui extends JComponent implements KeyListener, node.setVIB(x > 60 && x < 100 && y > 180 && y < 200); } - public void mouseDragged(MouseEvent e) { + public void mouseDragged(MouseEvent e) {} + public void mouseClicked(MouseEvent e) {} + public void mouseEntered(MouseEvent e) {} + public void mouseExited(MouseEvent e) {} + + // For the button sensor on the ESB nodes. + public void mousePressed(MouseEvent e) { + int x = e.getX(); + int y = e.getY(); + if (x > 0 && x < 24 && y > 180 && y < 200) { + node.setButton(buttonDown = true); + } } + public void mouseReleased(MouseEvent e) { + if (buttonDown) { + node.setButton(buttonDown = false); + } + } + public void paintComponent(Graphics g) {