From 42077adbb135534ab20620a3203e62e566827b6f Mon Sep 17 00:00:00 2001 From: Sebastian Schinabeck Date: Tue, 26 Nov 2013 11:35:09 +0100 Subject: [PATCH 1/3] Add ScnObservable class with setChangedAndNotify() function The ScnObservable extends the normal Observable with the combined setChangedAndNotify() function --- .../java/org/contikios/mrm/ChannelModel.java | 22 ++++++++----------- .../apps/mrm/java/org/contikios/mrm/MRM.java | 10 ++------- .../cooja/java/org/contikios/cooja/Cooja.java | 18 ++++----------- .../radiomediums/AbstractRadioMedium.java | 18 +++++---------- .../radiomediums/DirectedGraphMedium.java | 9 +++----- .../contikios/cooja/util/ScnObservable.java | 16 ++++++++++++++ 6 files changed, 39 insertions(+), 54 deletions(-) create mode 100644 tools/cooja/java/org/contikios/cooja/util/ScnObservable.java diff --git a/tools/cooja/apps/mrm/java/org/contikios/mrm/ChannelModel.java b/tools/cooja/apps/mrm/java/org/contikios/mrm/ChannelModel.java index 579244f75..9d0427c8a 100644 --- a/tools/cooja/apps/mrm/java/org/contikios/mrm/ChannelModel.java +++ b/tools/cooja/apps/mrm/java/org/contikios/mrm/ChannelModel.java @@ -53,6 +53,8 @@ import org.contikios.cooja.Simulation; import org.contikios.cooja.interfaces.DirectionalAntennaRadio; import org.contikios.cooja.interfaces.Radio; import org.contikios.cooja.radiomediums.AbstractRadioMedium; +import org.contikios.cooja.util.ScnObservable; + import statistics.GaussianWrapper; /** @@ -103,13 +105,7 @@ public class ChannelModel { /** * Notifies observers when this channel model has changed settings. */ - private class SettingsObservable extends Observable { - private void notifySettingsChanged() { - setChanged(); - notifyObservers(); - } - } - private SettingsObservable settingsObservable = new SettingsObservable(); + private ScnObservable settingsObservable = new ScnObservable(); public enum Parameter { apply_random, snr_threshold, @@ -330,7 +326,7 @@ public class ChannelModel { */ public void removeAllObstacles() { myObstacleWorld.removeAll(); - settingsObservable.notifySettingsChanged(); + settingsObservable.setChangedAndNotify(); } /** @@ -360,7 +356,7 @@ public class ChannelModel { myObstacleWorld.addObstacle(startX, startY, width, height); if (notify) { - settingsObservable.notifySettingsChanged(); + settingsObservable.setChangedAndNotify(); } } @@ -442,7 +438,7 @@ public class ChannelModel { needToPrecalculateFSPL = true; needToPrecalculateOutputPower = true; - settingsObservable.notifySettingsChanged(); + settingsObservable.setChangedAndNotify(); } /** @@ -450,9 +446,9 @@ public class ChannelModel { * will be notified. */ public void notifySettingsChanged() { - settingsObservable.notifySettingsChanged(); + settingsObservable.setChangedAndNotify(); } - + /** * Path loss component from Friis' transmission equation. * Uses frequency and distance only. @@ -1884,7 +1880,7 @@ public class ChannelModel { } needToPrecalculateFSPL = true; needToPrecalculateOutputPower = true; - settingsObservable.notifySettingsChanged(); + settingsObservable.setChangedAndNotify(); return true; } diff --git a/tools/cooja/apps/mrm/java/org/contikios/mrm/MRM.java b/tools/cooja/apps/mrm/java/org/contikios/mrm/MRM.java index a19dcee58..5f7f1441c 100644 --- a/tools/cooja/apps/mrm/java/org/contikios/mrm/MRM.java +++ b/tools/cooja/apps/mrm/java/org/contikios/mrm/MRM.java @@ -49,6 +49,7 @@ import org.contikios.cooja.interfaces.Position; import org.contikios.cooja.interfaces.Radio; import org.contikios.cooja.plugins.Visualizer; import org.contikios.cooja.radiomediums.AbstractRadioMedium; +import org.contikios.cooja.util.ScnObservable; import org.contikios.mrm.ChannelModel.Parameter; import org.contikios.mrm.ChannelModel.RadioPair; import org.contikios.mrm.ChannelModel.TxPair; @@ -93,7 +94,7 @@ public class MRM extends AbstractRadioMedium { /** * Notifies observers when this radio medium has changed settings. */ - private SettingsObservable settingsObservable = new SettingsObservable(); + private ScnObservable settingsObservable = new ScnObservable(); /** * Creates a new Multi-path Ray-tracing Medium (MRM). @@ -449,13 +450,6 @@ public class MRM extends AbstractRadioMedium { return currentChannelModel; } - class SettingsObservable extends Observable { - private void notifySettingsChanged() { - setChanged(); - notifyObservers(); - } - } - class MRMRadioConnection extends RadioConnection { private Hashtable signalStrengths = new Hashtable(); diff --git a/tools/cooja/java/org/contikios/cooja/Cooja.java b/tools/cooja/java/org/contikios/cooja/Cooja.java index c131e3e22..0040e7a31 100644 --- a/tools/cooja/java/org/contikios/cooja/Cooja.java +++ b/tools/cooja/java/org/contikios/cooja/Cooja.java @@ -139,6 +139,7 @@ import org.contikios.cooja.plugins.ScriptRunner; import org.contikios.cooja.plugins.SimControl; import org.contikios.cooja.plugins.SimInformation; import org.contikios.cooja.util.ExecuteJAR; +import org.contikios.cooja.util.ScnObservable; /** * Main file of COOJA Simulator. Typically contains a visualizer for the @@ -325,21 +326,10 @@ public class Cooja extends Observable { private Vector> positionerClasses = new Vector>(); - private class HighlightObservable extends Observable { - private void setChangedAndNotify(Mote mote) { - setChanged(); - notifyObservers(mote); - } - } - private HighlightObservable moteHighlightObservable = new HighlightObservable(); - private class MoteRelationsObservable extends Observable { - private void setChangedAndNotify() { - setChanged(); - notifyObservers(); - } - } - private MoteRelationsObservable moteRelationObservable = new MoteRelationsObservable(); + private ScnObservable moteHighlightObservable = new ScnObservable(); + + private ScnObservable moteRelationObservable = new ScnObservable(); private JTextPane quickHelpTextPane; private JScrollPane quickHelpScroll; diff --git a/tools/cooja/java/org/contikios/cooja/radiomediums/AbstractRadioMedium.java b/tools/cooja/java/org/contikios/cooja/radiomediums/AbstractRadioMedium.java index fce97e927..ba8cef052 100644 --- a/tools/cooja/java/org/contikios/cooja/radiomediums/AbstractRadioMedium.java +++ b/tools/cooja/java/org/contikios/cooja/radiomediums/AbstractRadioMedium.java @@ -49,8 +49,10 @@ import org.contikios.cooja.Simulation; import org.contikios.cooja.TimeEvent; import org.contikios.cooja.interfaces.CustomDataRadio; import org.contikios.cooja.interfaces.Radio; +import org.contikios.cooja.util.ScnObservable; import org.jdom.Element; + /** * Abstract radio medium provides basic functionality for implementing radio * mediums. @@ -90,17 +92,7 @@ public abstract class AbstractRadioMedium extends RadioMedium { public int COUNTER_RX = 0; public int COUNTER_INTERFERED = 0; - public class RadioMediumObservable extends Observable { - public void setRadioMediumChanged() { - setChanged(); - } - public void setRadioMediumChangedAndNotify() { - setChanged(); - notifyObservers(); - } - } - - private RadioMediumObservable radioMediumObservable = new RadioMediumObservable(); + protected ScnObservable radioMediumObservable = new ScnObservable(); /** * This constructor should always be called from implemented radio mediums. @@ -288,7 +280,7 @@ public abstract class AbstractRadioMedium extends RadioMedium { /* Notify observers */ lastConnection = null; - radioMediumObservable.setRadioMediumChangedAndNotify(); + radioMediumObservable.setChangedAndNotify(); } break; case TRANSMISSION_FINISHED: { @@ -333,7 +325,7 @@ public abstract class AbstractRadioMedium extends RadioMedium { updateSignalStrengths(); /* Notify observers */ - radioMediumObservable.setRadioMediumChangedAndNotify(); + radioMediumObservable.setChangedAndNotify(); } break; case CUSTOM_DATA_TRANSMITTED: { diff --git a/tools/cooja/java/org/contikios/cooja/radiomediums/DirectedGraphMedium.java b/tools/cooja/java/org/contikios/cooja/radiomediums/DirectedGraphMedium.java index 57876357c..ee79e76c7 100644 --- a/tools/cooja/java/org/contikios/cooja/radiomediums/DirectedGraphMedium.java +++ b/tools/cooja/java/org/contikios/cooja/radiomediums/DirectedGraphMedium.java @@ -93,8 +93,7 @@ public class DirectedGraphMedium extends AbstractRadioMedium { edges.add(e); requestEdgeAnalysis(); - ((AbstractRadioMedium.RadioMediumObservable) - this.getRadioMediumObservable()).setRadioMediumChangedAndNotify(); + radioMediumObservable.setChangedAndNotify(); } public void removeEdge(Edge edge) { @@ -105,16 +104,14 @@ public class DirectedGraphMedium extends AbstractRadioMedium { edges.remove(edge); requestEdgeAnalysis(); - ((AbstractRadioMedium.RadioMediumObservable) - this.getRadioMediumObservable()).setRadioMediumChangedAndNotify(); + radioMediumObservable.setChangedAndNotify(); } public void clearEdges() { edges.clear(); requestEdgeAnalysis(); - ((AbstractRadioMedium.RadioMediumObservable) - this.getRadioMediumObservable()).setRadioMediumChangedAndNotify(); + radioMediumObservable.setChangedAndNotify(); } public Edge[] getEdges() { diff --git a/tools/cooja/java/org/contikios/cooja/util/ScnObservable.java b/tools/cooja/java/org/contikios/cooja/util/ScnObservable.java new file mode 100644 index 000000000..d922d76a4 --- /dev/null +++ b/tools/cooja/java/org/contikios/cooja/util/ScnObservable.java @@ -0,0 +1,16 @@ +package org.contikios.cooja.util; + +import java.util.Observable; + +public class ScnObservable extends Observable { + public void setChangedAndNotify() { + setChanged(); + notifyObservers(); + } + + public void setChangedAndNotify(Object obj) { + setChanged(); + notifyObservers(obj); + } + +} From c1a275f0b2a9992f64f68a9fc84e2a2d83f67925 Mon Sep 17 00:00:00 2001 From: Sebastian Schinabeck Date: Thu, 21 Nov 2013 18:08:41 +0100 Subject: [PATCH 2/3] Refactored RadioMediumObservable and added new Observable Refactored RadioMediumObservable to RadioTransmissionObservable because of its function Added correct RadioMediumObservable and updating in AbstractRadioMedium, DirectedGraphMedium and MRM Added some documentation --- .../java/org/contikios/mrm/AreaViewer.java | 4 +- .../apps/mrm/java/org/contikios/mrm/MRM.java | 6 +++ .../java/org/contikios/cooja/RadioMedium.java | 10 ++--- .../cooja/plugins/DGRMConfigurator.java | 4 +- .../cooja/plugins/EventListener.java | 2 +- .../contikios/cooja/plugins/RadioLogger.java | 4 +- .../plugins/skins/TrafficVisualizerSkin.java | 4 +- .../radiomediums/AbstractRadioMedium.java | 45 +++++++++++++++++-- .../radiomediums/DirectedGraphMedium.java | 10 +++-- 9 files changed, 69 insertions(+), 20 deletions(-) diff --git a/tools/cooja/apps/mrm/java/org/contikios/mrm/AreaViewer.java b/tools/cooja/apps/mrm/java/org/contikios/mrm/AreaViewer.java index 67d268bc2..265971d7f 100644 --- a/tools/cooja/apps/mrm/java/org/contikios/mrm/AreaViewer.java +++ b/tools/cooja/apps/mrm/java/org/contikios/mrm/AreaViewer.java @@ -230,7 +230,7 @@ public class AreaViewer extends VisPlugin { // We want to listen to changes both in the channel model as well as in the radio medium currentChannelModel.addSettingsObserver(channelModelSettingsObserver); currentRadioMedium.addSettingsObserver(radioMediumSettingsObserver); - currentRadioMedium.addRadioMediumObserver(radioMediumActivityObserver); + currentRadioMedium.addRadioTransmissionObserver(radioMediumActivityObserver); // Set initial size etc. setSize(500, 500); @@ -2344,7 +2344,7 @@ public class AreaViewer extends VisPlugin { } if (currentRadioMedium != null && radioMediumActivityObserver != null) { - currentRadioMedium.deleteRadioMediumObserver(radioMediumActivityObserver); + currentRadioMedium.deleteRadioTransmissionObserver(radioMediumActivityObserver); } else { logger.fatal("Could not remove observer: " + radioMediumActivityObserver); } diff --git a/tools/cooja/apps/mrm/java/org/contikios/mrm/MRM.java b/tools/cooja/apps/mrm/java/org/contikios/mrm/MRM.java index 5f7f1441c..eef055af5 100644 --- a/tools/cooja/apps/mrm/java/org/contikios/mrm/MRM.java +++ b/tools/cooja/apps/mrm/java/org/contikios/mrm/MRM.java @@ -143,6 +143,9 @@ public class MRM extends AbstractRadioMedium { public void registerRadioInterface(Radio radio, Simulation sim) { super.registerRadioInterface(radio, sim); + /* Radio Medium changed here so notify Observers */ + radioMediumObservable.setChangedAndNotify(); + if (WITH_NOISE && radio instanceof NoiseSourceRadio) { ((NoiseSourceRadio)radio).addNoiseLevelListener(noiseListener); } @@ -150,6 +153,9 @@ public class MRM extends AbstractRadioMedium { public void unregisterRadioInterface(Radio radio, Simulation sim) { super.unregisterRadioInterface(radio, sim); + /* Radio Medium changed here so notify Observers */ + radioMediumObservable.setChangedAndNotify(); + if (WITH_NOISE && radio instanceof NoiseSourceRadio) { ((NoiseSourceRadio)radio).removeNoiseLevelListener(noiseListener); } diff --git a/tools/cooja/java/org/contikios/cooja/RadioMedium.java b/tools/cooja/java/org/contikios/cooja/RadioMedium.java index da60dc492..4905a187f 100644 --- a/tools/cooja/java/org/contikios/cooja/RadioMedium.java +++ b/tools/cooja/java/org/contikios/cooja/RadioMedium.java @@ -100,24 +100,24 @@ public abstract class RadioMedium { * Adds an observer which is notified each time a radio connection has finished. * * @see #getLastConnection() - * @see #deleteRadioMediumObserver(Observer) + * @see #deleteRadioTransmissionObserver(Observer) * @param observer New observer */ - public abstract void addRadioMediumObserver(Observer observer); + public abstract void addRadioTransmissionObserver(Observer observer); /** * @return Radio medium observable */ - public abstract Observable getRadioMediumObservable(); + public abstract Observable getRadioTransmissionObservable(); /** * Deletes an radio medium observer. * - * @see #addRadioMediumObserver(Observer) + * @see #addRadioTransmissionObserver(Observer) * @param observer * Observer to delete */ - public abstract void deleteRadioMediumObserver(Observer observer); + public abstract void deleteRadioTransmissionObserver(Observer observer); /** * @return Last radio connection finished in the radio medium diff --git a/tools/cooja/java/org/contikios/cooja/plugins/DGRMConfigurator.java b/tools/cooja/java/org/contikios/cooja/plugins/DGRMConfigurator.java index 9554d7e90..df6f61d1f 100644 --- a/tools/cooja/java/org/contikios/cooja/plugins/DGRMConfigurator.java +++ b/tools/cooja/java/org/contikios/cooja/plugins/DGRMConfigurator.java @@ -111,7 +111,7 @@ public class DGRMConfigurator extends VisPlugin { radioMedium = (DirectedGraphMedium) sim.getRadioMedium(); /* Listen for graph updates */ - radioMedium.addRadioMediumObserver(radioMediumObserver = new Observer() { + radioMedium.addRadioTransmissionObserver(radioMediumObserver = new Observer() { public void update(Observable obs, Object obj) { model.fireTableDataChanged(); } @@ -500,7 +500,7 @@ public class DGRMConfigurator extends VisPlugin { }; public void closePlugin() { - radioMedium.deleteRadioMediumObserver(radioMediumObserver); + radioMedium.deleteRadioTransmissionObserver(radioMediumObserver); } } diff --git a/tools/cooja/java/org/contikios/cooja/plugins/EventListener.java b/tools/cooja/java/org/contikios/cooja/plugins/EventListener.java index 887503f3d..bcd454076 100644 --- a/tools/cooja/java/org/contikios/cooja/plugins/EventListener.java +++ b/tools/cooja/java/org/contikios/cooja/plugins/EventListener.java @@ -223,7 +223,7 @@ public class EventListener extends VisPlugin { JCheckBox radioMediumCheckBox = new JCheckBox("Radio medium event", false); radioMediumCheckBox.putClientProperty("observable", mySimulation - .getRadioMedium().getRadioMediumObservable()); + .getRadioMedium().getRadioTransmissionObservable()); radioMediumCheckBox.addActionListener(generalCheckBoxListener); generalPanel.add(radioMediumCheckBox); diff --git a/tools/cooja/java/org/contikios/cooja/plugins/RadioLogger.java b/tools/cooja/java/org/contikios/cooja/plugins/RadioLogger.java index 17f5417c2..84fc41737 100644 --- a/tools/cooja/java/org/contikios/cooja/plugins/RadioLogger.java +++ b/tools/cooja/java/org/contikios/cooja/plugins/RadioLogger.java @@ -509,7 +509,7 @@ public class RadioLogger extends VisPlugin { adjuster.setDynamicAdjustment(true); adjuster.packColumns(); - radioMedium.addRadioMediumObserver(radioMediumObserver = new Observer() { + radioMedium.addRadioTransmissionObserver(radioMediumObserver = new Observer() { @Override public void update(Observable obs, Object obj) { RadioConnection conn = radioMedium.getLastConnection(); @@ -784,7 +784,7 @@ public class RadioLogger extends VisPlugin { @Override public void closePlugin() { if (radioMediumObserver != null) { - radioMedium.deleteRadioMediumObserver(radioMediumObserver); + radioMedium.deleteRadioTransmissionObserver(radioMediumObserver); } } diff --git a/tools/cooja/java/org/contikios/cooja/plugins/skins/TrafficVisualizerSkin.java b/tools/cooja/java/org/contikios/cooja/plugins/skins/TrafficVisualizerSkin.java index 0cd05c319..c98c51222 100644 --- a/tools/cooja/java/org/contikios/cooja/plugins/skins/TrafficVisualizerSkin.java +++ b/tools/cooja/java/org/contikios/cooja/plugins/skins/TrafficVisualizerSkin.java @@ -130,7 +130,7 @@ public class TrafficVisualizerSkin implements VisualizerSkin { historyList.clear(); /* Start observing radio medium for transmissions */ - radioMedium.addRadioMediumObserver(radioMediumObserver); + radioMedium.addRadioTransmissionObserver(radioMediumObserver); /* Fade away arrows */ simulation.scheduleEvent(ageArrowsTimeEvent, simulation.getSimulationTime() + 100*Simulation.MILLISECOND); @@ -147,7 +147,7 @@ public class TrafficVisualizerSkin implements VisualizerSkin { } /* Stop observing radio medium */ - radioMedium.deleteRadioMediumObserver(radioMediumObserver); + radioMedium.deleteRadioTransmissionObserver(radioMediumObserver); } @Override diff --git a/tools/cooja/java/org/contikios/cooja/radiomediums/AbstractRadioMedium.java b/tools/cooja/java/org/contikios/cooja/radiomediums/AbstractRadioMedium.java index ba8cef052..a31b42b3d 100644 --- a/tools/cooja/java/org/contikios/cooja/radiomediums/AbstractRadioMedium.java +++ b/tools/cooja/java/org/contikios/cooja/radiomediums/AbstractRadioMedium.java @@ -92,7 +92,13 @@ public abstract class AbstractRadioMedium extends RadioMedium { public int COUNTER_RX = 0; public int COUNTER_INTERFERED = 0; + /** + * Two Observables to observe the radioMedium and radioTransmissions + * @see addRadioTransmissionObserver + * @see addRadioMediumObserver + */ protected ScnObservable radioMediumObservable = new ScnObservable(); + protected ScnObservable radioTransmissionObservable = new ScnObservable(); /** * This constructor should always be called from implemented radio mediums. @@ -280,7 +286,7 @@ public abstract class AbstractRadioMedium extends RadioMedium { /* Notify observers */ lastConnection = null; - radioMediumObservable.setChangedAndNotify(); + radioTransmissionObservable.setChangedAndNotify(); } break; case TRANSMISSION_FINISHED: { @@ -325,7 +331,7 @@ public abstract class AbstractRadioMedium extends RadioMedium { updateSignalStrengths(); /* Notify observers */ - radioMediumObservable.setChangedAndNotify(); + radioTransmissionObservable.setChangedAndNotify(); } break; case CUSTOM_DATA_TRANSMITTED: { @@ -340,7 +346,7 @@ public abstract class AbstractRadioMedium extends RadioMedium { /* Custom data object */ Object data = ((CustomDataRadio) radio).getLastCustomDataTransmitted(); if (data == null) { - logger.fatal("No custom data object to forward"); + logger.fatal("No custom data objecTransmissiont to forward"); return; } @@ -438,6 +444,7 @@ public abstract class AbstractRadioMedium extends RadioMedium { registeredRadios.add(radio); radio.addObserver(radioEventsObserver); + radioMediumObservable.setChangedAndNotify(); /* Update signal strengths */ updateSignalStrengths(); @@ -454,6 +461,8 @@ public abstract class AbstractRadioMedium extends RadioMedium { removeFromActiveConnections(radio); + radioMediumObservable.setChangedAndNotify(); + /* Update signal strengths */ updateSignalStrengths(); } @@ -520,10 +529,40 @@ public abstract class AbstractRadioMedium extends RadioMedium { sendRssi.put(radio, rssi); } + /** + * Register an observer that gets notified when the radiotransmissions changed. + * E.g. creating new connections. + * This does not include changes in the settings and (de-)registration of radios. + * @see addRadioMediumObserver + * @param observer the Observer to register + */ + public void addRadioTransmissionObserver(Observer observer) { + radioTransmissionObservable.addObserver(observer); + } + + public Observable getRadioTransmissionObservable() { + return radioTransmissionObservable; + } + + public void deleteRadioTransmissionObserver(Observer observer) { + radioTransmissionObservable.deleteObserver(observer); + } + + /** + * Register an observer that gets notified when the radio medium changed. + * This includes changes in the settings and (de-)registration of radios. + * This does not include transmissions, etc as these are part of the radio + * and not the radio medium itself. + * @see addRadioTransmissionObserver + * @param observer the Observer to register + */ public void addRadioMediumObserver(Observer observer) { radioMediumObservable.addObserver(observer); } + /** + * @return the radioMediumObservable + */ public Observable getRadioMediumObservable() { return radioMediumObservable; } diff --git a/tools/cooja/java/org/contikios/cooja/radiomediums/DirectedGraphMedium.java b/tools/cooja/java/org/contikios/cooja/radiomediums/DirectedGraphMedium.java index ee79e76c7..15806c389 100644 --- a/tools/cooja/java/org/contikios/cooja/radiomediums/DirectedGraphMedium.java +++ b/tools/cooja/java/org/contikios/cooja/radiomediums/DirectedGraphMedium.java @@ -93,7 +93,7 @@ public class DirectedGraphMedium extends AbstractRadioMedium { edges.add(e); requestEdgeAnalysis(); - radioMediumObservable.setChangedAndNotify(); + radioTransmissionObservable.setChangedAndNotify(); } public void removeEdge(Edge edge) { @@ -104,14 +104,15 @@ public class DirectedGraphMedium extends AbstractRadioMedium { edges.remove(edge); requestEdgeAnalysis(); - radioMediumObservable.setChangedAndNotify(); + + radioTransmissionObservable.setChangedAndNotify(); } public void clearEdges() { edges.clear(); requestEdgeAnalysis(); - radioMediumObservable.setChangedAndNotify(); + radioTransmissionObservable.setChangedAndNotify(); } public Edge[] getEdges() { @@ -221,6 +222,9 @@ public class DirectedGraphMedium extends AbstractRadioMedium { this.edgesTable = arrTable; edgesDirty = false; + + /* Radio Medium changed here so notify Observers */ + radioMediumObservable.setChangedAndNotify(); } /** From ef779d4fc1980a2543cd70bb96fd83f8df286369 Mon Sep 17 00:00:00 2001 From: Sebastian Schinabeck Date: Tue, 26 Nov 2013 16:02:17 +0100 Subject: [PATCH 3/3] settingsObservable superseded by radioMediumObserver Wasn't used anyway --- .../java/org/contikios/mrm/AreaViewer.java | 4 +-- .../apps/mrm/java/org/contikios/mrm/MRM.java | 27 +++---------------- 2 files changed, 5 insertions(+), 26 deletions(-) diff --git a/tools/cooja/apps/mrm/java/org/contikios/mrm/AreaViewer.java b/tools/cooja/apps/mrm/java/org/contikios/mrm/AreaViewer.java index 265971d7f..1d98efb06 100644 --- a/tools/cooja/apps/mrm/java/org/contikios/mrm/AreaViewer.java +++ b/tools/cooja/apps/mrm/java/org/contikios/mrm/AreaViewer.java @@ -229,7 +229,7 @@ public class AreaViewer extends VisPlugin { // We want to listen to changes both in the channel model as well as in the radio medium currentChannelModel.addSettingsObserver(channelModelSettingsObserver); - currentRadioMedium.addSettingsObserver(radioMediumSettingsObserver); + currentRadioMedium.addRadioMediumObserver(radioMediumSettingsObserver); currentRadioMedium.addRadioTransmissionObserver(radioMediumActivityObserver); // Set initial size etc. @@ -2338,7 +2338,7 @@ public class AreaViewer extends VisPlugin { } if (currentRadioMedium != null && radioMediumSettingsObserver != null) { - currentRadioMedium.deleteSettingsObserver(radioMediumSettingsObserver); + currentRadioMedium.deleteRadioMediumObserver(radioMediumSettingsObserver); } else { logger.fatal("Could not remove observer: " + radioMediumSettingsObserver); } diff --git a/tools/cooja/apps/mrm/java/org/contikios/mrm/MRM.java b/tools/cooja/apps/mrm/java/org/contikios/mrm/MRM.java index eef055af5..e8af73370 100644 --- a/tools/cooja/apps/mrm/java/org/contikios/mrm/MRM.java +++ b/tools/cooja/apps/mrm/java/org/contikios/mrm/MRM.java @@ -91,11 +91,6 @@ public class MRM extends AbstractRadioMedium { private Random random = null; private ChannelModel currentChannelModel = null; - /** - * Notifies observers when this radio medium has changed settings. - */ - private ScnObservable settingsObservable = new ScnObservable(); - /** * Creates a new Multi-path Ray-tracing Medium (MRM). */ @@ -115,6 +110,9 @@ public class MRM extends AbstractRadioMedium { WITH_CAPTURE_EFFECT = currentChannelModel.getParameterBooleanValue(ChannelModel.Parameter.captureEffect); CAPTURE_EFFECT_THRESHOLD = currentChannelModel.getParameterDoubleValue(ChannelModel.Parameter.captureEffectSignalTreshold); CAPTURE_EFFECT_PREAMBLE_DURATION = currentChannelModel.getParameterDoubleValue(ChannelModel.Parameter.captureEffectPreambleDuration); + + /* Radio Medium changed here, so notify */ + radioMediumObservable.setChangedAndNotify(); } }); @@ -409,25 +407,6 @@ public class MRM extends AbstractRadioMedium { // -- MRM specific methods -- - /** - * Adds an observer which is notified when this radio medium has - * changed settings, such as added or removed radios. - * - * @param obs New observer - */ - public void addSettingsObserver(Observer obs) { - settingsObservable.addObserver(obs); - } - - /** - * Deletes an earlier registered setting observer. - * - * @param obs Earlier registered observer - */ - public void deleteSettingsObserver(Observer obs) { - settingsObservable.deleteObserver(obs); - } - /** * @return Number of registered radios. */