From 223ded4595b412e9696cc3099ebe408a5e0e9c34 Mon Sep 17 00:00:00 2001 From: fros4943 Date: Mon, 17 Mar 2008 09:50:27 +0000 Subject: [PATCH] added output power indicator max value --- .../cooja/mspmote/interfaces/TR1001Radio.java | 6 ++- .../contikimote/interfaces/ContikiRadio.java | 6 ++- .../cooja/interfaces/ApplicationRadio.java | 42 ++++++++++-------- .../java/se/sics/cooja/interfaces/Radio.java | 43 +++++++++++-------- .../se/sics/cooja/motes/DisturberRadio.java | 29 ++++++++----- 5 files changed, 76 insertions(+), 50 deletions(-) diff --git a/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/interfaces/TR1001Radio.java b/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/interfaces/TR1001Radio.java index 19695479f..41b00f91e 100644 --- a/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/interfaces/TR1001Radio.java +++ b/tools/cooja/apps/mspsim/src/se/sics/cooja/mspmote/interfaces/TR1001Radio.java @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: TR1001Radio.java,v 1.1 2008/02/07 14:55:35 fros4943 Exp $ + * $Id: TR1001Radio.java,v 1.2 2008/03/17 09:52:03 fros4943 Exp $ */ package se.sics.cooja.mspmote.interfaces; @@ -357,6 +357,10 @@ public class TR1001Radio extends Radio implements USARTListener, ByteRadio { return 1.5; } + public int getOutputPowerIndicatorMax() { + return 100; + } + public int getCurrentOutputPowerIndicator() { // TODO Implement output power indicator return 100; diff --git a/tools/cooja/java/se/sics/cooja/contikimote/interfaces/ContikiRadio.java b/tools/cooja/java/se/sics/cooja/contikimote/interfaces/ContikiRadio.java index 3b9cbe3e1..809f950f2 100644 --- a/tools/cooja/java/se/sics/cooja/contikimote/interfaces/ContikiRadio.java +++ b/tools/cooja/java/se/sics/cooja/contikimote/interfaces/ContikiRadio.java @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: ContikiRadio.java,v 1.17 2008/02/23 10:10:42 fros4943 Exp $ + * $Id: ContikiRadio.java,v 1.18 2008/03/17 09:50:27 fros4943 Exp $ */ package se.sics.cooja.contikimote.interfaces; @@ -257,6 +257,10 @@ public class ContikiRadio extends Radio implements ContikiMoteInterface, return 1.5; } + public int getOutputPowerIndicatorMax() { + return 100; + } + public int getCurrentOutputPowerIndicator() { return myMoteMemory.getByteValueOf("simPower"); } diff --git a/tools/cooja/java/se/sics/cooja/interfaces/ApplicationRadio.java b/tools/cooja/java/se/sics/cooja/interfaces/ApplicationRadio.java index 2bf96a51c..218d274a9 100644 --- a/tools/cooja/java/se/sics/cooja/interfaces/ApplicationRadio.java +++ b/tools/cooja/java/se/sics/cooja/interfaces/ApplicationRadio.java @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: ApplicationRadio.java,v 1.2 2007/05/30 10:52:57 fros4943 Exp $ + * $Id: ApplicationRadio.java,v 1.3 2008/03/17 09:50:27 fros4943 Exp $ */ package se.sics.cooja.interfaces; @@ -44,7 +44,7 @@ import se.sics.cooja.*; * Application radio. May for example be used by Java-based mote to implement * radio functionality. Support radio channels and output power functionality. * The mote should observe the radio for incoming radio packet data. - * + * * @author Fredrik Osterlind */ public class ApplicationRadio extends Radio implements PacketRadio { @@ -68,15 +68,15 @@ public class ApplicationRadio extends Radio implements PacketRadio { private byte[] outPacket = null; private int outPacketDuration = -1; - private double signalStrength = -200; + private double signalStrength = -100; private int radioChannel = 1; private double outputPower = 0; private int outputPowerIndicator = 100; - + public ApplicationRadio(Mote mote) { this.myMote = mote; } - + /* Packet radio support */ public byte[] getLastPacketTransmitted() { return packetFromMote; @@ -141,7 +141,7 @@ public class ApplicationRadio extends Radio implements PacketRadio { public Position getPosition() { return myMote.getInterfaces().getPosition(); } - + public RadioEvent getLastEvent() { return lastEvent; } @@ -165,10 +165,14 @@ public class ApplicationRadio extends Radio implements PacketRadio { return outputPower; } + public int getOutputPowerIndicatorMax() { + return outputPowerIndicator; + } + public int getCurrentOutputPowerIndicator() { return outputPowerIndicator; } - + public double getCurrentSignalStrength() { return signalStrength; } @@ -178,10 +182,10 @@ public class ApplicationRadio extends Radio implements PacketRadio { } /* Application radio support */ - + /** * Start transmitting given packet. - * + * * @param packet Packet data * @param duration Duration to transmit */ @@ -190,14 +194,14 @@ public class ApplicationRadio extends Radio implements PacketRadio { outPacketDuration = duration; outPacket = packet; } - + /** * @param i New output power indicator */ public void setOutputPowerIndicator(int i) { outputPowerIndicator = i; } - + /** * @param p New output power */ @@ -211,7 +215,7 @@ public class ApplicationRadio extends Radio implements PacketRadio { public void setChannel(int channel) { radioChannel = channel; } - + public void doActionsBeforeTick() { int currentTime = myMote.getSimulation().getSimulationTime(); @@ -230,7 +234,7 @@ public class ApplicationRadio extends Radio implements PacketRadio { this.setChanged(); this.notifyObservers(); } - + if (isTransmitting && currentTime >= transmissionEndTime) { isTransmitting = false; lastEvent = RadioEvent.TRANSMISSION_FINISHED; @@ -261,7 +265,7 @@ public class ApplicationRadio extends Radio implements PacketRadio { panel.add(Box.createVerticalStrut(3)); panel.add(channelLabel); panel.add(Box.createVerticalGlue()); - + updateButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ssLabel.setText("Signal strength (not auto-updated): " @@ -271,12 +275,14 @@ public class ApplicationRadio extends Radio implements PacketRadio { final Observer observer = new Observer() { public void update(Observable obs, Object obj) { - if (isTransmitting()) + if (isTransmitting()) { statusLabel.setText("Transmitting"); - if (isReceiving()) + } + if (isReceiving()) { statusLabel.setText("Receiving"); - else + } else { statusLabel.setText("Listening"); + } lastEventLabel.setText("Last event (time=" + lastEventTime + "): " + lastEvent); ssLabel.setText("Signal strength (not auto-updated): " @@ -313,7 +319,7 @@ public class ApplicationRadio extends Radio implements PacketRadio { public void setConfigXML(Collection configXML, boolean visAvailable) { } - + public Mote getMote() { return myMote; } diff --git a/tools/cooja/java/se/sics/cooja/interfaces/Radio.java b/tools/cooja/java/se/sics/cooja/interfaces/Radio.java index 03616161b..44ba50892 100644 --- a/tools/cooja/java/se/sics/cooja/interfaces/Radio.java +++ b/tools/cooja/java/se/sics/cooja/interfaces/Radio.java @@ -1,7 +1,7 @@ /* * Copyright (c) 2006, Swedish Institute of Computer Science. All rights * reserved. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright notice, @@ -12,7 +12,7 @@ * Institute nor the names of its contributors may be used to endorse or promote * products derived from this software without specific prior written * permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE @@ -23,8 +23,8 @@ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $Id: Radio.java,v 1.7 2007/05/30 10:52:57 fros4943 Exp $ + * + * $Id: Radio.java,v 1.8 2008/03/17 09:50:27 fros4943 Exp $ */ package se.sics.cooja.interfaces; @@ -33,15 +33,15 @@ import se.sics.cooja.*; /** * A Radio represents a mote radio transceiver. - * + * * A radio can support different abstraction levels such as transmitting and * receiving on a byte or packet-basis. In order to support communication * between different levels the general rule in COOJA is that all radios at a * lower abstraction level must also implement all higher levels. - * + * * @see PacketRadio * @see ByteRadio - * + * * @author Fredrik Osterlind */ @ClassDescription("Packet Radio") @@ -57,7 +57,7 @@ public abstract class Radio extends MoteInterface { /** * Signal that a new reception just begun. This method should normally be * called from the radio medium. - * + * * @see #signalReceptionEnd() */ public abstract void signalReceptionStart(); @@ -65,7 +65,7 @@ public abstract class Radio extends MoteInterface { /** * Signal that the current reception was ended. This method should normally be * called from the radio medium. - * + * * @see #signalReceptionStart() */ public abstract void signalReceptionEnd(); @@ -73,7 +73,7 @@ public abstract class Radio extends MoteInterface { /** * Returns last event at this radio. This method should be used to learn the * reason when a radio notifies a change to observers. - * + * * @return Last radio event */ public abstract RadioEvent getLastEvent(); @@ -81,7 +81,7 @@ public abstract class Radio extends MoteInterface { /** * Returns true if this radio is transmitting, or just finished transmitting, * data. - * + * * @see #isReceiving() * @return True if radio is transmitting data */ @@ -89,7 +89,7 @@ public abstract class Radio extends MoteInterface { /** * Returns true if this radio is receiving data. - * + * * @see #isTransmitting() * @return True if radio is receiving data */ @@ -98,7 +98,7 @@ public abstract class Radio extends MoteInterface { /** * Returns true if this radio had a connection that was dropped due to * interference. - * + * * @return True if this radio is interfered */ public abstract boolean isInterfered(); @@ -116,10 +116,15 @@ public abstract class Radio extends MoteInterface { public abstract double getCurrentOutputPower(); /** - * @return Current output power indicator (1-100) + * @return Current output power indicator */ public abstract int getCurrentOutputPowerIndicator(); + /** + * @return Maximum output power indicator + */ + public abstract int getOutputPowerIndicatorMax(); + /** * @return Current surrounding signal strength */ @@ -128,7 +133,7 @@ public abstract class Radio extends MoteInterface { /** * Sets surrounding signal strength. This method should normally be called by * the radio medium. - * + * * @param signalStrength * Current surrounding signal strength */ @@ -136,7 +141,7 @@ public abstract class Radio extends MoteInterface { /** * Returns the current radio channel number. - * + * * @return Current channel number */ public abstract int getChannel(); @@ -144,7 +149,7 @@ public abstract class Radio extends MoteInterface { /** * Returns the radio position. * This is typically the position of the mote. - * + * * @return Radio position */ public abstract Position getPosition(); @@ -152,9 +157,9 @@ public abstract class Radio extends MoteInterface { /** * This is a convenience function. * It returns the mote, if any, that holds this radio. - * + * * @return Mote */ public abstract Mote getMote(); - + } diff --git a/tools/cooja/java/se/sics/cooja/motes/DisturberRadio.java b/tools/cooja/java/se/sics/cooja/motes/DisturberRadio.java index 59fb173cb..9df63305e 100644 --- a/tools/cooja/java/se/sics/cooja/motes/DisturberRadio.java +++ b/tools/cooja/java/se/sics/cooja/motes/DisturberRadio.java @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: DisturberRadio.java,v 1.4 2007/05/30 10:53:18 fros4943 Exp $ + * $Id: DisturberRadio.java,v 1.5 2008/03/17 09:50:27 fros4943 Exp $ */ package se.sics.cooja.motes; @@ -44,7 +44,7 @@ import se.sics.cooja.interfaces.*; /** * This radio periodically transmits data on a configurable channel. - * + * * @author Fredrik Osterlind, Thiemo Voigt */ public class DisturberRadio extends Radio implements PacketRadio { @@ -69,7 +69,7 @@ public class DisturberRadio extends Radio implements PacketRadio { /** * Creates an interface to the radio at mote. - * + * * @param mote * Radio's mote. * @see Mote @@ -78,7 +78,7 @@ public class DisturberRadio extends Radio implements PacketRadio { public DisturberRadio(Mote mote) { this.myMote = mote; } - + /* Packet radio support */ public byte[] getLastPacketTransmitted() { return packetFromMote; @@ -118,7 +118,7 @@ public class DisturberRadio extends Radio implements PacketRadio { public Position getPosition() { return myMote.getInterfaces().getPosition(); } - + public RadioEvent getLastEvent() { return lastEvent; } @@ -136,6 +136,10 @@ public class DisturberRadio extends Radio implements PacketRadio { return 1.5; } + public int getOutputPowerIndicatorMax() { + return 100; + } + public int getCurrentOutputPowerIndicator() { return 100; } @@ -185,17 +189,18 @@ public class DisturberRadio extends Radio implements PacketRadio { panel.add(channelLabel); panel.add(channelPicker); panel.add(Box.createVerticalGlue()); - + channelPicker.setValue(distChannel); channelPicker.setColumns(3); channelPicker.setText(Integer.toString(distChannel)); final Observer observer = new Observer() { public void update(Observable obs, Object obj) { - if (isTransmitting()) + if (isTransmitting()) { statusLabel.setText("Transmitting now!"); - else + } else { statusLabel.setText("Disturber resting..."); + } channelLabel.setText("Channel: " + getChannel()); @@ -207,8 +212,9 @@ public class DisturberRadio extends Radio implements PacketRadio { channelPicker.addPropertyChangeListener("value", new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent e) { distChannel = ((Number) channelPicker.getValue()).intValue(); - if (observer != null) + if (observer != null) { observer.update(null, null); + } } }); @@ -252,11 +258,12 @@ public class DisturberRadio extends Radio implements PacketRadio { if (name.equals("channel")) { distChannel = Integer.parseInt(element.getText()); - } else + } else { logger.fatal("Read unknown configuration: " + name); + } } } - + public Mote getMote() { return myMote; }