Added Routing Metric and ETX

This commit is contained in:
nifi 2010-09-30 22:24:45 +00:00
parent 3851548684
commit 2642a55174
4 changed files with 59 additions and 22 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: CollectServer.java,v 1.21 2010/09/28 23:12:16 nifi Exp $ * $Id: CollectServer.java,v 1.22 2010/09/30 22:24:45 nifi Exp $
* *
* ----------------------------------------------------------------- * -----------------------------------------------------------------
* *
@ -34,8 +34,8 @@
* *
* Authors : Joakim Eriksson, Niclas Finne * Authors : Joakim Eriksson, Niclas Finne
* Created : 3 jul 2008 * Created : 3 jul 2008
* Updated : $Date: 2010/09/28 23:12:16 $ * Updated : $Date: 2010/09/30 22:24:45 $
* $Revision: 1.21 $ * $Revision: 1.22 $
*/ */
package se.sics.contiki.collect; package se.sics.contiki.collect;
@ -331,6 +331,28 @@ public class CollectServer {
dataset.addValue(data.getNode().getSensorDataAggregator().getAverageValue(SensorData.HOPS), categories[1], data.getNode().getName()); dataset.addValue(data.getNode().getSensorDataAggregator().getAverageValue(SensorData.HOPS), categories[1], data.getNode().getName());
} }
}, },
new TimeChartPanel(this, NETWORK, "Routing Metric (Over Time)", "Routing Metric", "Time", "Routing Metric") {
{
ValueAxis axis = chart.getXYPlot().getRangeAxis();
((NumberAxis)axis).setAutoRangeIncludesZero(true);
axis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
setMaxItemCount(defaultMaxItemCount);
}
protected double getSensorDataValue(SensorData data) {
return data.getValue(SensorData.BEST_NEIGHBOR_RTMETRIC) + data.getValue(SensorData.BEST_NEIGHBOR_ETX);
}
},
new TimeChartPanel(this, NETWORK, "ETX (Over Time)", "ETX to Next Hop", "Time", "ETX") {
{
ValueAxis axis = chart.getXYPlot().getRangeAxis();
((NumberAxis)axis).setAutoRangeIncludesZero(true);
axis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
setMaxItemCount(defaultMaxItemCount);
}
protected double getSensorDataValue(SensorData data) {
return data.getValue(SensorData.BEST_NEIGHBOR_ETX);
}
},
new AggregatedTimeChartPanel<int[]>(this, NETWORK, new AggregatedTimeChartPanel<int[]>(this, NETWORK,
"Next Hop (Over Time)", "Time", "Next Hop Changes") { "Next Hop (Over Time)", "Time", "Next Hop Changes") {
{ {

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: Node.java,v 1.5 2010/09/14 22:40:59 nifi Exp $ * $Id: Node.java,v 1.6 2010/09/30 22:24:45 nifi Exp $
* *
* ----------------------------------------------------------------- * -----------------------------------------------------------------
* *
@ -34,8 +34,8 @@
* *
* Authors : Joakim Eriksson, Niclas Finne * Authors : Joakim Eriksson, Niclas Finne
* Created : 3 jul 2008 * Created : 3 jul 2008
* Updated : $Date: 2010/09/14 22:40:59 $ * Updated : $Date: 2010/09/30 22:24:45 $
* $Revision: 1.5 $ * $Revision: 1.6 $
*/ */
package se.sics.contiki.collect; package se.sics.contiki.collect;
@ -56,7 +56,8 @@ public class Node implements Comparable<Node> {
private final String id; private final String id;
private final String name; private final String name;
private int x = -1, y = -1; public int x = -1;
public int y = -1;
private Hashtable<String,Object> objectTable; private Hashtable<String,Object> objectTable;

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: SensorDataAggregator.java,v 1.9 2010/09/24 05:54:04 nifi Exp $ * $Id: SensorDataAggregator.java,v 1.10 2010/09/30 22:24:45 nifi Exp $
* *
* ----------------------------------------------------------------- * -----------------------------------------------------------------
* *
@ -34,8 +34,8 @@
* *
* Authors : Joakim Eriksson, Niclas Finne * Authors : Joakim Eriksson, Niclas Finne
* Created : 20 aug 2008 * Created : 20 aug 2008
* Updated : $Date: 2010/09/24 05:54:04 $ * Updated : $Date: 2010/09/30 22:24:45 $
* $Revision: 1.9 $ * $Revision: 1.10 $
*/ */
package se.sics.contiki.collect; package se.sics.contiki.collect;
@ -241,6 +241,10 @@ public class SensorDataAggregator implements SensorInfo {
return dataCount > 0 ? (-39.6 + 0.01 * (values[TEMPERATURE] / dataCount)) : 0.0; return dataCount > 0 ? (-39.6 + 0.01 * (values[TEMPERATURE] / dataCount)) : 0.0;
} }
public double getAverageRtmetric() {
return dataCount > 0 ? ((values[BEST_NEIGHBOR_RTMETRIC] + values[BEST_NEIGHBOR_ETX]) / dataCount) : 0.0;
}
public double getAverageRadioIntensity() { public double getAverageRadioIntensity() {
return getAverageValue(RSSI); return getAverageValue(RSSI);
} }

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: NodeInfoPanel.java,v 1.7 2010/09/26 21:48:21 nifi Exp $ * $Id: NodeInfoPanel.java,v 1.8 2010/09/30 22:24:45 nifi Exp $
* *
* ----------------------------------------------------------------- * -----------------------------------------------------------------
* *
@ -34,8 +34,8 @@
* *
* Authors : Joakim Eriksson, Niclas Finne * Authors : Joakim Eriksson, Niclas Finne
* Created : 6 sep 2010 * Created : 6 sep 2010
* Updated : $Date: 2010/09/26 21:48:21 $ * Updated : $Date: 2010/09/30 22:24:45 $
* $Revision: 1.7 $ * $Revision: 1.8 $
*/ */
package se.sics.contiki.collect.gui; package se.sics.contiki.collect.gui;
@ -113,6 +113,16 @@ public class NodeInfoPanel extends JPanel implements Visualizer, Configurable {
return node.getSensorDataAggregator().getAverageValue(SensorData.HOPS); return node.getSensorDataAggregator().getAverageValue(SensorData.HOPS);
} }
}, },
new TableData("Average Rtmetric", "Average Routing Metric", Double.class) {
public Object getValue(Node node) {
return node.getSensorDataAggregator().getAverageRtmetric();
}
},
new TableData("Average ETX", "Average ETX to Next Hop", Double.class) {
public Object getValue(Node node) {
return node.getSensorDataAggregator().getAverageValue(SensorData.BEST_NEIGHBOR_ETX);
}
},
new TableData("Next Hop Changes", "Next Hop Change Count", Integer.class) { new TableData("Next Hop Changes", "Next Hop Change Count", Integer.class) {
public Object getValue(Node node) { public Object getValue(Node node) {
return node.getSensorDataAggregator().getNextHopChangeCount(); return node.getSensorDataAggregator().getNextHopChangeCount();
@ -123,50 +133,50 @@ public class NodeInfoPanel extends JPanel implements Visualizer, Configurable {
public Object getValue(Node node) { public Object getValue(Node node) {
return node.getSensorDataAggregator().getEstimatedRestarts(); return node.getSensorDataAggregator().getEstimatedRestarts();
} }
}.setVisible(false), },
// Power // Power
new TableData("CPU Power", "Average CPU Power Consumption", Double.class) { new TableData("CPU Power", "Average CPU Power Consumption", Double.class) {
public Object getValue(Node node) { public Object getValue(Node node) {
return node.getSensorDataAggregator().getCPUPower(); return node.getSensorDataAggregator().getCPUPower();
} }
}.setVisible(false), },
new TableData("LPM Power", "Average LPM Power Consumption", Double.class) { new TableData("LPM Power", "Average LPM Power Consumption", Double.class) {
public Object getValue(Node node) { public Object getValue(Node node) {
return node.getSensorDataAggregator().getLPMPower(); return node.getSensorDataAggregator().getLPMPower();
} }
}.setVisible(false), },
new TableData("Listen Power", "Average Radio Listen Power Consumption", Double.class) { new TableData("Listen Power", "Average Radio Listen Power Consumption", Double.class) {
public Object getValue(Node node) { public Object getValue(Node node) {
return node.getSensorDataAggregator().getListenPower(); return node.getSensorDataAggregator().getListenPower();
} }
}.setVisible(false), },
new TableData("Transmit Power", "Average Radio Transmit Power Consumption", Double.class) { new TableData("Transmit Power", "Average Radio Transmit Power Consumption", Double.class) {
public Object getValue(Node node) { public Object getValue(Node node) {
return node.getSensorDataAggregator().getTransmitPower(); return node.getSensorDataAggregator().getTransmitPower();
} }
}.setVisible(false), },
new TableData("Power", "Average Power Consumption", Double.class) { new TableData("Power", "Average Power Consumption", Double.class) {
public Object getValue(Node node) { public Object getValue(Node node) {
return node.getSensorDataAggregator().getAveragePower(); return node.getSensorDataAggregator().getAveragePower();
} }
}.setVisible(false), },
new TableData("Power Time", "Power Measure Time", Long.class) { new TableData("Power Time", "Power Measure Time", Long.class) {
public Object getValue(Node node) { public Object getValue(Node node) {
return node.getSensorDataAggregator().getPowerMeasureTime(); return node.getSensorDataAggregator().getPowerMeasureTime();
} }
}.setVisible(false), },
new TableData("Listen Duty Cycle", "Average Radio Listen Duty Cycle (%)", Double.class) { new TableData("Listen Duty Cycle", "Average Radio Listen Duty Cycle (%)", Double.class) {
public Object getValue(Node node) { public Object getValue(Node node) {
return 100 * node.getSensorDataAggregator().getAverageDutyCycle(SensorInfo.TIME_LISTEN); return 100 * node.getSensorDataAggregator().getAverageDutyCycle(SensorInfo.TIME_LISTEN);
} }
}.setVisible(false), },
new TableData("Transmit Duty Cycle", "Average Radio Transmit Duty Cycle (%)", Double.class) { new TableData("Transmit Duty Cycle", "Average Radio Transmit Duty Cycle (%)", Double.class) {
public Object getValue(Node node) { public Object getValue(Node node) {
return 100 * node.getSensorDataAggregator().getAverageDutyCycle(SensorInfo.TIME_TRANSMIT); return 100 * node.getSensorDataAggregator().getAverageDutyCycle(SensorInfo.TIME_TRANSMIT);
} }
}.setVisible(false), },
// Inter-packet times // Inter-packet times
new TableData("Average Inter-packet Time", Long.class) { new TableData("Average Inter-packet Time", Long.class) {