remade led skin: showing leds left of motes

This commit is contained in:
fros4943 2009-04-20 16:16:25 +00:00
parent 266823defa
commit d91100fdfc
2 changed files with 49 additions and 37 deletions

View File

@ -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: Visualizer.java,v 1.4 2009/04/14 15:40:26 fros4943 Exp $ * $Id: Visualizer.java,v 1.5 2009/04/20 16:16:44 fros4943 Exp $
*/ */
package se.sics.cooja.plugins; package se.sics.cooja.plugins;
@ -56,6 +56,7 @@ import org.jdom.Element;
import se.sics.cooja.*; import se.sics.cooja.*;
import se.sics.cooja.GUI.MoteRelation; import se.sics.cooja.GUI.MoteRelation;
import se.sics.cooja.interfaces.*; import se.sics.cooja.interfaces.*;
import se.sics.cooja.plugins.skins.AddressVisualizerSkin;
import se.sics.cooja.plugins.skins.IDVisualizerSkin; import se.sics.cooja.plugins.skins.IDVisualizerSkin;
import se.sics.cooja.plugins.skins.LEDVisualizerSkin; import se.sics.cooja.plugins.skins.LEDVisualizerSkin;
import se.sics.cooja.plugins.skins.LogVisualizerSkin; import se.sics.cooja.plugins.skins.LogVisualizerSkin;
@ -109,6 +110,7 @@ public class Visualizer extends VisPlugin {
static { static {
/* Register default visualizer skins */ /* Register default visualizer skins */
registerVisualizerSkin(IDVisualizerSkin.class); registerVisualizerSkin(IDVisualizerSkin.class);
registerVisualizerSkin(AddressVisualizerSkin.class);
registerVisualizerSkin(LogVisualizerSkin.class); registerVisualizerSkin(LogVisualizerSkin.class);
registerVisualizerSkin(LEDVisualizerSkin.class); registerVisualizerSkin(LEDVisualizerSkin.class);
} }

View File

@ -26,13 +26,14 @@
* 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: LEDVisualizerSkin.java,v 1.2 2009/04/14 15:40:26 fros4943 Exp $ * $Id: LEDVisualizerSkin.java,v 1.3 2009/04/20 16:16:25 fros4943 Exp $
*/ */
package se.sics.cooja.plugins.skins; package se.sics.cooja.plugins.skins;
import java.awt.Color; import java.awt.Color;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.Point;
import java.util.Observable; import java.util.Observable;
import java.util.Observer; import java.util.Observer;
@ -42,13 +43,15 @@ import se.sics.cooja.ClassDescription;
import se.sics.cooja.Mote; import se.sics.cooja.Mote;
import se.sics.cooja.Simulation; import se.sics.cooja.Simulation;
import se.sics.cooja.interfaces.LED; import se.sics.cooja.interfaces.LED;
import se.sics.cooja.interfaces.MoteID;
import se.sics.cooja.interfaces.Position;
import se.sics.cooja.plugins.Visualizer; import se.sics.cooja.plugins.Visualizer;
import se.sics.cooja.plugins.VisualizerSkin; import se.sics.cooja.plugins.VisualizerSkin;
/** /**
* Visualizer skin for LEDs. * Visualizer skin for LEDs.
* *
* Colors motes according to current LED state. * Paints three LEDs left to each mote.
* *
* @author Fredrik Osterlind * @author Fredrik Osterlind
*/ */
@ -97,43 +100,50 @@ public class LEDVisualizerSkin implements VisualizerSkin {
} }
public Color[] getColorOf(Mote mote) { public Color[] getColorOf(Mote mote) {
LED led = mote.getInterfaces().getLED(); return null;
if (led == null) {
return new Color[] { Color.GRAY };
}
if (!led.isAnyOn()) {
return new Color[] { Color.BLACK };
}
if (led.isGreenOn() && led.isRedOn() && led.isYellowOn()) {
return new Color[] { Color.WHITE };
}
if (led.isRedOn()) {
if (led.isGreenOn()) {
return new Color[] { Color.RED, Color.GREEN };
}
if (led.isYellowOn()) {
return new Color[] { Color.RED, Color.YELLOW };
}
return new Color[] { Color.RED };
}
if (led.isGreenOn()) {
if (led.isYellowOn()) {
return new Color[] { Color.YELLOW, Color.GREEN };
}
return new Color[] { Color.GREEN };
}
if (led.isYellowOn()) {
return new Color[] { Color.YELLOW };
}
return new Color[] { Color.BLACK };
} }
public void paintSkin(Graphics g) { public void paintSkin(Graphics g) {
/* Paint LEDs left of each mote */
Mote[] allMotes = simulation.getMotes();
for (Mote mote: allMotes) {
LED leds = mote.getInterfaces().getLED();
if (leds == null) {
continue;
}
Position pos = mote.getInterfaces().getPosition();
Point pixel = visualizer.transformPositionToPixel(pos);
int x = pixel.x - 2*Visualizer.MOTE_RADIUS;
int y = pixel.y - Visualizer.MOTE_RADIUS;
g.setColor(Color.RED);
if (leds.isRedOn()) {
g.fillRect(x, y, 7, 4);
} else {
g.drawRect(x, y, 7, 4);
}
y += 6;
g.setColor(Color.GREEN);
if (leds.isGreenOn()) {
g.fillRect(x, y, 7, 4);
} else {
g.drawRect(x, y, 7, 4);
}
y += 6;
g.setColor(Color.BLUE);
if (leds.isYellowOn()) {
g.fillRect(x, y, 7, 4);
} else {
g.drawRect(x, y, 7, 4);
}
}
g.setColor(Color.BLACK);
} }
public Visualizer getVisualizer() { public Visualizer getVisualizer() {